Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Data Pipelineを本番投入してみた話
Search
jhashimoto
December 20, 2017
Programming
1
1.1k
AWS Data Pipelineを本番投入してみた話
社内勉強会で使ったスライドです。
jhashimoto
December 20, 2017
Tweet
Share
More Decks by jhashimoto
See All by jhashimoto
初めてのAWS / The first AWS
jhashimoto
0
200
AWS Lambdaで始めるサーバーレスアーキテクチャ
jhashimoto
0
200
Amazon S3の紹介
jhashimoto
0
240
クラウド最初の一歩
jhashimoto
0
360
Other Decks in Programming
See All in Programming
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
260
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
15
2.3k
Macとオーディオ再生 2024/11/02
yusukeito
0
390
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
230
subpath importsで始めるモック生活
10tera
0
340
Jakarta EE meets AI
ivargrimstad
0
300
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
220
CSC509 Lecture 12
javiergs
PRO
0
160
Amazon Qを使ってIaCを触ろう!
maruto
0
420
デザインパターンで理解するLLMエージェントの作り方 / How to develop an LLM agent using agentic design patterns
rkaga
9
1.5k
我々のデザインシステムは Chakra v3 にアップデートします
shunya078
2
250
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
130
Featured
See All Featured
Speed Design
sergeychernyshev
25
620
What's new in Ruby 2.0
geeforr
343
31k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Code Review Best Practice
trishagee
64
17k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Music & Morning Musume
bryan
46
6.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Transcript
AWS DATA PIPELINEを本番 AWS DATA PIPELINEを本番 投⼊してみた話 投⼊してみた話 橋本 淳⼀
2017/12/20 1
アジェンダ アジェンダ AWS Data Pipelineとは︖ システム構成 AWS Data Pipelineを採⽤した理由 設計で⼯夫したところ
採⽤してよかったこと 応⽤編 Data Pipelineの注意事項 Data Pipelineではまったこと 2
AWS DATA PIPELINEとは︖ AWS DATA PIPELINEとは︖ ビッグデータを扱うシステムにおいて、ETLができるサービスで す。 3
ETLとは︖ ETLとは︖ Extract/Transform/Load(略称︓ETL)とは、デー タウェアハウスにおける以下のような⼯程を指 す。 Extract - 外部の情報源からデータを抽出 Transform -
抽出したデータをビジネスでの必要に 応じて変換・加⼯ Load - 最終的ターゲット(すな わちデータウェアハウス)に変換・加⼯済みのデ ータをロード Extract/Transform/Load - Wikipedia 4
システム構成 システム構成
データ規模 データ規模 Redshiftのテーブル数 100以上 1回のデータ処理バッチで処理するレコード数 100万件 1テーブルのレコード件数 1億件 源泉の数=パイプラインの数 36
6
AWS DATA PIPELINEを採⽤した理由 AWS DATA PIPELINEを採⽤した理由 7
ビッグデータのETLに求められる要件 ビッグデータのETLに求められる要件 1. 様々なデータ源泉への対応 2. 将来データ量が増加しても対応できるアーキテクチャ 3. 複数のETL処理を並列に実⾏ 4. データ変換処理
8
ビッグデータのETLに求められる要件 ビッグデータのETLに求められる要件 5. ETLに必要なそれぞれの処理をタスクとして分解し、ジョブとして 連携 すべての処理を⼀枚岩で実装してしまうと、今どの処理を実⾏し ているのかがわからず運⽤がしにくくなります。 タスクに分解することで、タスクを組み合わせて柔軟にワークフ ローを構成することができるようになります。 6.
管理画⾯ 7. エラー時のリトライ 8. 成功/失敗の通知 9
AWS DATA PIPELINEでできること AWS DATA PIPELINEでできること 10
1. 様々なデータ源泉への対応 1. 様々なデータ源泉への対応 S3 DB(JDBCで接続できればOK) オンプレミスのサーバーにも対応 11
2. データ量が増加しても対応できるアーキテ 2. データ量が増加しても対応できるアーキテ クチャ クチャ パフォーマンス向上の⼿法として、⼀般的にスケールアップとスケ ールアウトの2つの⽅法があります。 スケールアップ マシンの性能を上げる⽅法です。
スケールアウト 処理を複数マシンに分散できるようにしておき、処理マシンの 台数を増やす⽅法です。 12
DATA PIPELINEでこれらを実現するには DATA PIPELINEでこれらを実現するには スケールアップ EC2のインスタンスタイプのスペックを上げる。 スケールアウト Amazon EMR(複数のEC2インスタンスをクラスタとして提供す るサービス)と連携
すると、複数のEC2インスタンスで分散処理 させることができます。 13
3. 複数のETL処理を並列に実⾏ 3. 複数のETL処理を並列に実⾏ EC2のインスタンスはパイプラインごとに⽣成されるので、実⾏環 境は独⽴しています。他のパイプラインの実⾏に影響を及ぼしませ ん。 14
4. データ変換処理 4. データ変換処理 Javaまたはシェルスクリプトでカスタムロジックを実装できます。 15
5. ETLに必要なそれぞれの処理をタスクとして 5. ETLに必要なそれぞれの処理をタスクとして 分解し、ジョブとして連携 分解し、ジョブとして連携 個々の処理をアクティビティという単位に分割できます。 アクティビティを組み合わせてワークフローを構成できます。 16
6. 管理画⾯ 6. 管理画⾯ 管理画⾯が⽤意されているので、開発者が作成する必要はありませ ん。 17
7. エラー時のリトライ 7. エラー時のリトライ アクティビティ単位のリトライ処理が⽤意されています。 18
8. 成功/失敗の通知 8. 成功/失敗の通知 Amazon SNSと連携し、メールまたはSMSで結果を通知できます。 19
設計で⼯夫したところ 設計で⼯夫したところ 20
データのインポート処理でステージングをしています。ステージン グは、Data Pipelineに限定された概念ではなく、データ処理で⼀般 的に使われる考え⽅です。 ステージングとは、直接対象にインポートするのではなく、⼀時的 に別の領域に(今回はRedshiftにステージング⽤のテーブルを⽤意 しました)データを⼊れることをいいます。 最終的なターゲットのテーブルにはステージングテーブルから INSERTすることになります。 21
ステージングするメリット ステージングするメリット Redshiftのテーブルにステージングすることにより、インポート前 にデータをSQLで⾃由に加⼯できるようになります。ステージング を採⽤したことで、業務要件をすべてSQLだけで実現できました。 前年度の営業⽇の売り上げを⼊れてほしい 1年前の売り上げデータとステージングテーブルをJOINしてス テージングデータの前年営業⽇売り上げをUPDATEする。 更新⽇に処理⽇時を⼊れてほしい ステージングデータの更新⽇を処理⽇時でUPDATEする。
インポートする前に同⼀キーの既存レコードを削除してほしい ステージングテーブルに存在するレコードのキーで、ターゲッ トのレコードをDELETEする。 22
採⽤してよかったこと 採⽤してよかったこと 23
将来への安⼼感 将来への安⼼感 データ量が増えても… EC2インスタンスのスペックを上げて対応 源泉が増えても… EC2インスタンスはパイプラインごとに独⽴しているので、パイ プラインを増やしても既存のパイプラインの実⾏環境に影響を及 ぼさない 24
EC2のインスタンスを使い捨てにできる EC2のインスタンスを使い捨てにできる パイプラインが開始されるときに、AMI(Amazon Machine Image) からインスタンスを⽣成し、パイプラインの処理が終わったらイン スタンスが破棄される。 EC2は起動時間による従量課⾦(秒単位)なので、コスト⾯のメリ ットが⼤きい 同じAMIから毎回インスタンスを⽣成し直すので、実⾏環境が常に
⼀定 知らない間にOSにパッチが適⽤されていて、バッチが動かなくな ったということがない。 25
応⽤編 応⽤編 Data PipelineはETL以外にも使えます。 カスタムロジックをシェルスクリプトで書けるので、AWS CLIを 使ってAWSのリソースを操作できます。 EC2、Redshiftを使わないときは落としておくとコストが下がりま す。 夜間の停⽌・翌朝の起動をData
Pipelineで⾃動化しています。 Amazon EC2 インスタンスの停⽌と開始 26
DATA PIPELINEの注意事項 DATA PIPELINEの注意事項 27
管理画⾯は⽇本語対応されていない。 典型的な処理なら⽤意されているアクティビティを使⽤してノンコ ーディングで実装できるが、それで実現できない場合はカスタムの ロジックをシェルスクリプトで書かなければいけない。C#の快適な 開発と⽐べると… ⽇本語の含まれるJSONを管理コンソールからインポートすると⽂ 字化けする。 AWS CLI(コマンドラインインターフェース)でインポートすれ ばOK。
28
ワークフローはGUIのエディタで定義できるがすべての機能が対応 されているわけではない。⼀部の機能はJSONを⼿で修正する必要 がある。 時刻はUTCなので、⽇本時間より9時間遅い。 ワークフロー内で条件分岐させることはできない。 データパイプラインで使⽤するEC2のインスタンスはLinuxである必 要があります。現状Windowsインスタンスは使えません。 TaskRunnerというエージェントプロセスをインストールする必要 があるが、Windowsはサポートしていないため。 Task
Runner を使⽤した既存のリソースでの作業の実⾏ - AWS Data Pipeline 29
DATA PIPELINEではまったこと DATA PIPELINEではまったこと 30
スケジュールの開始時刻どおりに実⾏されな スケジュールの開始時刻どおりに実⾏されな い い 指定した開始時刻よりもパイプラインの開始が早まったり、遅くな ったりする(⾃分が確認した範囲では数分程度) 31
AWSサポートに問い合わせました AWSサポートに問い合わせました A. これはData Pipelineの意図された動作です。負荷の集中がサービ スの安定稼働に影響を与えることを避けるため、サービス側で開始 時刻の調整をします。最⼤でどのくらい開始時刻が前後するかは回 答できません。 32
対応 対応 Data Pipelineのスケジュール機能を使うのをやめて、タスクスケジ ューラでパイプラインを定期実⾏するようにした(AWSにはAWS CLIと呼ばれるコマンドラインインターフェースがあります) 33
データパイプラインの参考資料 データパイプラインの参考資料 AWSの公開している資料 AWSの公開している資料 その他 その他 AWS Data Pipeline とは
- AWS Data Pipeline AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline Data Warehousing on AWS Data Pipeline | 特集カテゴリー | Developers.IO AWS Data Pipeline の 稀によくあるQ&A | ALBERT Of cial Blog 34
END END 35