web-dev-qa-db-fra.com

Qu'est-ce que Apache Beam?

Je parcourais les messages Apache et j'ai trouvé un nouveau terme appelé Beam. Quelqu'un peut-il expliquer exactement ce qu'est Apache Beam? J'ai essayé de sortir Google, mais je n'ai pas pu obtenir de réponse claire.

50
Viswa

Apache Beam est un modèle open source et unifié pour définir et exécuter à la fois des pipelines de traitement parallèle et en continu de données, ainsi qu'un ensemble de SDK spécifiques au langage pour la construction de pipelines et de runners spécifiques à l'exécution pour l'exécution leur.

Historique: Le modèle derrière Beam a évolué à partir d'un certain nombre de projets internes de traitement de données Google, notamment MapReduce , FlumeJava , et Millwheel . Ce modèle était à l'origine connu sous le nom de " Dataflow Model " et a été implémenté pour la première fois sous la forme Google Cloud Dataflow - y compris un Java SDK on GitHub pour l'écriture de pipelines et un service entièrement géré pour les exécuter sur Google Cloud Platform. D'autres membres de la communauté ont commencé à écrire des extensions, notamment Spark Runner , Flink Runner et Scala SDK . En janvier 2016, Google et un certain nombre de partenaires ont soumis le modèle de programmation de flux de données et la partie SDK en tant qu'incubateur Apache Proposition , sous le nom Apache Beam (traitement unifié par lots + strEAM). Apache Beam diplômé de l'incubation en décembre 2016.

Ressources supplémentaires pour l'apprentissage du modèle de faisceau:

62
Frances

Apache Beam (Batch + strEAM) est un modèle et un ensemble d'API pour effectuer à la fois le traitement par lots et le streaming de données. Il a été open-source par Google (avec Cloudera et Paypal) en 2016 via un projet d'incubateur Apache.

La page Dataflow/Beam & Spark: comparaison de modèles de programmation - Cloud Dataflow contraste l'API Beam avec Apache Spark , qui a réussi à apporter une API moderne et flexible et ensemble de techniques d'optimisation pour le batch et le streaming vers le monde Hadoop et au-delà.

Beam essaie d'aller encore plus loin via un modèle qui permet de décrire facilement les différents aspects du traitement désordonné qui est souvent un problème lors de la combinaison du traitement par lots et en continu, comme décrit dans ce Comparaison des modèles de programmation.

En particulier, pour citer la comparaison, le modèle Dataflow est conçu pour aborder, avec élégance et de manière plus modulaire, robuste et plus facile à entretenir:

... les quatre questions essentielles auxquelles tous les praticiens du traitement des données doivent tenter de répondre lors de la construction de leurs pipelines:

  • Quels résultats sont calculés? Sommes, jointures, histogrammes, modèles d'apprentissage automatique?
  • À quel moment de l'événement les résultats sont-ils calculés? Le moment où chaque événement s'est produit à l'origine affecte-t-il les résultats? Les résultats sont-ils agrégés dans des fenêtres fixes, des sessions ou une seule fenêtre globale?
  • Quand dans le temps de traitement les résultats sont-ils matérialisés? Le moment où chaque événement est observé dans le système affecte-t-il les résultats? Quand les résultats sont-ils émis? Spéculativement, à mesure que les données évoluent? Lorsque les données arrivent en retard et que les résultats doivent être révisés? Une combinaison de ceux-ci?
  • Comment les raffinements de résultats sont-ils liés? Si des données supplémentaires arrivent et les résultats changent, sont-ils indépendants et distincts, s'appuient-ils les uns sur les autres, etc.?

Les pipelines décrits dans Beam peuvent à leur tour être exécutés sur Spark, Flink, l'offre Dataflow de Google dans le cloud et d'autres "runtimes", y compris une option de machine locale "Direct".

Une variété de langues sont prises en charge par l'architecture. Le SDK Java est disponible dès maintenant. Un SDK Python SDK est sur le point de sortir, et d'autres sont envisagés pour Scala etc.).

Voir la source sur Mirror of Apache Beam

21
nealmcb