1. ホーム
  2. pandas

データ処理とジョブスケジューリングのためのApache AirflowまたはApache Beam

2023-11-27 01:21:16

質問

有益な情報を提供したいのですが、データエンジニアには程遠いです。

私は現在、多くの入力(現在CSVとExcelファイル)を持つ私のデータに対して、長い一連の変換を実行するためにpythonライブラリpandasを使用しています。出力は、いくつかのエクセルファイルです。私は、並列計算(私がpandasで行っているほど逐次的ではないという意味です)でスケジュールされた監視バッチジョブを、月に1回実行できるようにしたいと思います。

私はBeamまたはAirflowをよく知らないのですが、ドキュメントをざっと読んでみたところ、どちらもそれを達成できるようです。どちらを使うべきでしょうか?

どのように解決するのですか?

他の回答は、かなり専門的で理解するのが難しいです。私も以前は同じ立場でしたので、以下のように説明します。 簡単な言葉で説明します。 .

エアフロー できること 何でも . それは BashOperatorPythonOperator であり、bashスクリプトやPythonスクリプトを実行できることを意味します。

データパイプラインの整理(複雑なデータパイプラインのDAGの設定)、スケジュール、監視、再実行のトリガーなどを、見やすく使いやすいUIで行うことができる方法です。

また、セットアップも簡単で、すべて使い慣れたPythonのコードで行うことができます。

パイプラインを組織的に行う(つまりAirflowを使う)ことは、データ処理の混乱をデバッグするのに時間を浪費しないことを意味します( cron )スクリプトをあちこちでデバッグする時間を無駄にしない。

現在では(だいたい2020年以降)、これを オーケストレーション ツールになります。

Apache Beam は、多くのデータ処理フレームワーク(Spark, Flinkなど)のラッパーである。

Beamを学ぶだけで、複数のバックエンド(Beamランナー)で実行できるようにすることを意図しています。

KerasやTensorFlow/Theano/Torchをご存知の方は、Kerasとそのバックエンドの関係は、Beamとそのデータ処理のバックエンドの関係に似ています。

Google Cloud PlatformのCloud Dataflowは、Beamを実行するための1つのバックエンドです。

彼らはそれを データフローランナー .

GCPの提供する クラウドコンポーザー マネージドAirflowの実装です。 をサービスとして提供し、Google Kubernetes Engine (GKE) の Kubernetes クラスタで動作します。

つまり、どちらかです。

  • 手動でAirflowを実装し、インスタンス自体でデータ処理を行う(データが小さい(またはインスタンスが十分に強力である)場合、Airflowを実行しているマシンでデータ処理を行うことができます)。これは、多くの場合、Airflowがデータを処理できるかどうか混乱している理由です)
  • Beamジョブを呼び出す手動Airflow実装
  • Cloud Composer (サービスとして管理されたAirflow)がCloud Dataflowのジョブを呼び出すこと
  • Cloud ComposerのKubernetesクラスタ環境自体でデータ処理コンテナを実行するCloud Composerは、Airflowの KubernetesPodOperator (KPO)
  • Cloud ComposerのKubernetesクラスタ環境でデータ処理用コンテナを実行し、Airflowの KPO が、今回はより良い 孤立した を指定することで、より優れた方式を実現しました。 KPO ポッドが新しいノードプールで実行されるように指定します。

私の個人的な経験 :

Airflowは軽量で学習が難しくない(実装が簡単)ので、可能な限りデータパイプラインに使用すべきです。

また、多くの企業がAirflowの使用経験を求めているため、データエンジニアを目指すのであれば習得しておいた方がよいでしょう

また、自分でAirflowを動かして管理するよりも、マネージドAirflow(私は今のところGCPのComposerしか使ったことがありません)の方が便利で、Airflowを管理する webserverscheduler のプロセスです。