66 votes

Quels sont les avantages d'Apache Beam par rapport à Spark / Flink pour le traitement par lots?

Apache Faisceau prend en charge plusieurs runner backends, y compris Apache Spark et Flink. Je suis familier avec Spark/Flink et je suis en train de voir les avantages/inconvénients de Faisceau pour le traitement par lot.

Regarder le Faisceau word count exemple, il sent qu'il est très similaire à la maternelle Spark/Flink équivalents, peut-être avec un peu plus détaillée de la syntaxe.

Actuellement, je ne vois pas un grand avantage de choisir Faisceau sur Spark/Flink pour une telle tâche. Les seules observations que je peux faire pour l'instant:

  • Pro: Abstraction au-dessus d'exécution différents backends.
  • Con: Cette abstraction se fait au prix d'avoir moins de contrôle sur ce qui est exactement exécuté dans Spark/Flink.

Existe t il de meilleurs exemples qui mettent en évidence d'autres avantages/inconvénients de la Poutre modèle? Est-il des informations sur la façon de la perte de contrôle sur les performances?

Notez que je ne demande pas de différences dans le streaming aspects, qui sont en partie couvertes dans cette question et résumées dans cet article (obsolète en raison de l'Étincelle 1.X).

95voto

Frances Points 957

Il y a quelques choses qui Poutre ajoute plus grand nombre de moteurs.

  • Unificateur de lot et de streaming. De nombreux systèmes peuvent gérer à la fois le lot et le streaming, mais ils le font souvent par séparer les Api. Mais dans le Faisceau, le lot et le streaming sont à seulement deux points sur une échelle de temps de latence, de l'exhaustivité et de coût. Il n'y a pas d'apprentissage/réécriture de la falaise de lot en streaming. Donc, si vous écrivez un lot de pipeline d'aujourd'hui, mais demain, votre temps de latence de l'évolution des besoins, il est incroyablement facile à régler. Vous pouvez voir ce genre de voyage dans le Jeu Mobile des exemples.

  • Api élever le niveau d'abstraction: du Faisceau d'Api l'accent sur la capture des propriétés de vos données et de votre logique, au lieu de laisser les détails de la sous-exécution de fuite à travers. C'est à la fois une clé pour la portabilité (voir le paragraphe suivant) et peut également donner runtimes beaucoup de souplesse dans la façon dont ils exécutent. Quelque chose comme ParDo fusion (aka fonction de la composition) est une jolie optimisation de base que la grande majorité des coureurs le font déjà. D'autres optimisations sont encore en cours de mise en œuvre pour certains coureurs. Par exemple, le Faisceau de la Source Api sont construites spécifiquement pour éviter overspecification la fragmentation, à l'intérieur d'un pipeline. Au lieu de cela, ils donnent des coureurs les crochets du droit dynamiquement rééquilibrer le travail à travers les machines disponibles. Cela peut faire une énorme différence dans la performance, pour l'essentiel par l'élimination de la traine de tessons. En général, les plus smarts nous pouvons créer dans les de coureurs, mieux nous serons. Même les plus prudents réglage de la main échouera comme les données, le code, et les environnements de changement.

  • Portabilité sur runtimes.: Parce que les données de formes d'exécution et les exigences sont nettement séparés, le même pipeline peut être exécuté en plusieurs façons. Et cela signifie que vous ne pas avoir à réécrire le code lorsque vous devez vous déplacer sur les prem vers le cloud ou à partir d'une essayé et vrai système à quelque chose sur l'arête de coupe. Vous pouvez très facilement comparer les options pour trouver le mélange de l'environnement et de la performance qui fonctionne le mieux pour vos besoins actuels. Et qui pourrait être un mélange de choses, à un traitement de données sensibles sur le site de l'open source de coureur et le traitement d'autres données sur un service géré dans le cloud.

La conception de la Poutre modèle utile d'abstraction plus nombreux, différents moteurs est délicate. Faisceau n'est ni l'intersection de la fonctionnalité de tous les moteurs (trop limité!) ni l'union (trop d'un évier de cuisine!). Au lieu de cela, Faisceau essaie d'être à l'avant-garde de l'endroit où le traitement des données est en cours, à la fois en poussant les fonctionnalités et en tirant les modèles de la les moteurs d'exécution.

  • Assortie de l'État est un excellent exemple de fonctionnalités qui existaient dans les différents moteurs et activé intéressant et cas d'utilisation courante, mais n'était pas à l'origine exprimable dans le Faisceau. Nous avons récemment élargi la Poutre modèle d'inclure une version de cette fonctionnalité en fonction du Faisceau de principes de conception.
  • Et vice versa, nous espérons que le Faisceau va influencer les feuilles de route des différents moteurs. Par exemple, la sémantique de Flink du flux de données ont été influencés par le Faisceau (née Flux de données) modèle.
  • Cela signifie également que les capacités ne sera pas toujours exactement les mêmes dans les différents faisceaux des coureurs à un moment donné dans le temps. C'est pourquoi nous sommes à l'aide de la capacité de la matrice d'essayer de communiquer clairement l'état des choses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X