AWS GlueとTalendを使ったETL処理のメリットとデメリットをまとめてみた

AWS作業担当者ではないけれど、ETL処理の構成について知っておかないといけないとなって調べてみましたが、自分がほしい違いやまとめがなかったので、一旦まとめました。

 

  1. ETL処理とは?
  2. 用語解説1 ~AWS Glue(グルー) とは~
  3. 用語解説2 ~AWS Lambdaとは~
  4. 用語解説3 ~Talend とは~
  5. AWS Glue+lambdaでETL処理を行うメリット/デメリット
  6. AWS EC2 + talendでETL処理を行うメリット/デメリット
  7. 最後に

 

ETL処理とは?

 

そもそも、なぜETL処理をするのか?

それは、きれいなデータでデータ分析をするためです。分析には、データベースを使うことが多く、そこにデータを入れるために必要な処理がETL処理です。

例えば顧客情報の名前に半角スペースが入っている状態(ビット君)

⇒ ETL処理をした後には、半角スペースがない状態(ヒット君)となり扱いやすくなります。

 

ETL処理では、処理の流れ(パイプライン)を構築します。

たとえば「どこにデータを貯めて、どこからデータを取ってきて、どう加工して、どこにどうやってもっていくのか」という流れです。

f:id:TMLabo:20191024095249p:plain

ETLのフロー

ETL処理をフルスクラッチでプログラミングしても良いのですが、作業を効率化するためにETLツールを使うことが多いです。

それを効率的にできるツールが、"AWS Glue"と"talend"です。

 

用語解説1 ~AWS Glue(グルー) ~ 

AWS Glueとは?

Apache Spark」というツールがあって始めて利用できるサービスです。

サーバ運用に関してはAWSが全ての作業を代行しています。

 

特徴は以下の2点。

・サーバレス(サーバ管理が不要)

・値の編集やフィルタリングにPythonのスキルが必須

 

AWS GlueはETL処理を準備+実行するAWSのサービスの一種です。

 

f:id:TMLabo:20191024095353p:plain

ETL AWS Glueのフロー

単純な処理でしたら自動生成したコードだけETL処理を実行できると思いますが、

値の編集やフィルタリングが必要な場合はプログラミングが必要です。

 

用語解説2 ~AWS Lambda~

Lambdaとは?

f:id:TMLabo:20191024095447p:plain

ラムダ

・作成したプログラムファイルを実行できるだけの環境(ツール)です。

特徴

・サーバー運用が不要です。

f:id:TMLabo:20191024095507p:plain

実際の編集画面

 

用語解説3 ~Talend ~

Talendとは?

これはAWSのサービスではありません。単なるETL開発ツールです。

・データ統合から、アプリケーション連携、ビジネス管理まで行える画期的な

 統一プラットフォームです。

OSS版(無償)は世界中の約4000社で利用されているデータ統合・連携ツールです。

 

Talendの特徴

・「バッチジョブを実現するETL」「リアルタイム連携を実現するESB」を同一プラットフォーム上で開発・運用できます。

・バッチとかの裏方で走らすジョブをGUIで簡単につくれるよ!というのが売りです。

・主な操作方法としては、

①Talendでジョブの流れを書いて、処理内容のバッチファイルを登録していく。

②job実行してほしいデータを取得。

 と、いたってシンプルです。

f:id:TMLabo:20191024095613p:plain

実際の編集画面(Talend)

 

 

AWS Glue+lambdaETL処理を行うメリット/デメリット

PythonエンジニアがAWSサービスを駆使してETLを行う構成を前提にしています。

 

メリット

デメリット

変換処理を自由にカスタマイズできる

学習コストとして、pythonのプログラミング知識が必要

AWSの他サービスとの連携でスケーラビリティを確保できる。

AWS以外(Azure)には連携が難しい

サーバーレスによるインフラ面の料金コストが最小化

Glueからの操作だけでは複雑な処理は不可。大まかなプロセスまでは自動生成。

ETLの出力先をS3に統一することで、障害発生やメンテの影響が、DWH側に及ばない

 

 

f:id:TMLabo:20191024100048p:plain

構成図の例

lambda関数で、以下の流れを実行して処理します。

①処理対象をクロールする

②クローラを実行してカタログTableを作成。

(※データベース内でETL処理対象をリスト化している)

③Job実行

 

このlambda関数を使用することによりプログラムで事前に設定が可能なので、エラー時の対応を設定できます。

 

 

AWS EC2 + talendETL処理を行うメリット/デメリット

ETL処理はTalendで全て行う構成になります。

AWS EC2の環境を利用します。

メリット

デメリット

図(GUI)を用いてフローを作成できるため、プログラミング言語の学習コストがほぼない。

日本語ドキュメントはあるが、英語が必要な箇所も多々ある。

様々なデータソースにアクセスするため800を超えるコンポーネントを標準で提供されている。具体的には以下の通り。

(Hadoop、NoSQL、AWS、テキストファイル、RDBMS、Azure等)

コンポーネントを別途購入する必要はない。

対応するコンポーネントが無くても自作できるが、開発工数が掛かる。

MQTTやAMQPをサポートし、計測データ、センサデータ、制御データなど”モノ”が発信する情報を収集することも可能。

Talend Open Studioは無料で利用できる。

(有料はあるがほぼ無料枠で対応可)

OSSなので、製品に不具合があってもTalend社には、バグフィックスの義務がない。

商用ライセンスは基本的にデータ量やサーバー台数には依存せず、

開発者・システム運用者単位の使用料のため初期投資を抑えることができる。

よって、低コストでのデータ統合が可能。

サーバーは必要。よって、サーバー運用費は掛かる。

 

 最後に

ツールの選定と最適な組み合わせは、各社システム構成やデータの性質によって変わってくるものなので難しいです。