SlideShare a Scribd company logo
TREASUREDATAのエコシステムで作る
ロバストなETLデータ処理基盤の作り方
PLAZMA Data Engineer Day @ TD TECH TALK 2018 - May 23th, 2018
Kentaro Yoshida twitter:@yoshi_ken
Data Engineer at Treasure Data, Inc.
PROFILE
•@yoshi_ken
•Data Engineer at TreasureData
•When I have started to use…
•TreasureData: 2012
•Fluentd: 2012
•Embulk: 2015
•Digdag: 2015
•Hivemall:2015
PROFILE
•Released Fluentd Plugin: 12
•rewrite-tag-filter
•geoip
•twitter
•mysql-replicator
•anonymizer
•munin
etc…
PUBLICATION
•2014
•サーバ/インフラエンジニア養
成読本 ログ収集~可視化編 [現
場主導のデータ分析環境を構
築!] (Software Design plus)

•2017
•データ分析基盤構築入門 

[Fluentd、Elasticsearch、
Kibanaによるログ収集と可視化]
Sep, 2017Aug, 2014
400 Pages164 Pages
PUBLICATION
PUBLICATION
PUBLICATION
PUBLICATION
•機能やカテゴリごとに分類し、日本語での解説を再度実施
•一定の条件のもと、現在も利用を推奨できるものに厳選
•ダウンロード数が多い順に並べているため選びやすい特徴
•Fluentdプラグイン事典:厳選した328プラグインの紹介
•Embulkプラグイン事典:厳選した202プラグインの紹介
THEN
Business Trip to TreasureData Mountain View Office
Let’s join us!
11
TREASUREDATAのエコシステムで作る
ロバストなETLデータ処理基盤の作り方
Kentaro Yoshida twitter:@yoshi_ken
Data Engineer at Treasure Data, Inc.
13
ETLの基本
ETLの基本
Transform
•中間処理
•表結合
•中間DBも活用
•フォーマット変換
•表記の名寄せや正規化
Extract
•Database
•File Dataset
•Log
•API
•Stream Input
Load
•RDB (DWH)
•File (S3)
•API
•Stream
•BI Tool
Basics of ETL
14
15
さまざまなETL処理
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
19
ETL処理で気をつけたいこと
ETL処理で気をつけたいこと
•活用できるまでのリードタイム
•最小限のラグとすべき
•エラーハンドリング
•タイムアウト
•プロセスダウン
•リトライ
•ログ出力
•エラー通知と監視設定
•データ検証
•破損レコードの検出
•バックフィル
•データの入れ直し
•冪等性の担保
•遅れて到着したデータへの考慮
•速報値と確定値のズレ
etc…
20
直列処理 並列処理
Timeline
Step1
Step3
Step2
Step1
Step3
Step2
Timeline
Serial Processing Parallel Processing
ETL処理で気をつけたいこと
•活用できるまでのリードタイムの長さ
•データが生まれてから使えるまでの処理時間
•単純な直列処理よりもマルチコアを生かして短時間で処理できると好ましい
21
ETL処理で気をつけたいこと
•エラーハンドリング
•異常終了したバッチのレジューム(Backfill)が出来る仕組み
•コマンド1つで再実行できることが理想
•手動でのゴミファイル削除に頼ってはいけない
•途中で落ちていても問題が起きない、冪等性のある設計が必要である
•レジューム機能
•最初からやり直しをさせることは最終手段
•チェックポイントとし書き出されたファイルの所から再開できる仕組み
22
ETL処理で気をつけたいこと
•効率の良いレジュームとは、失敗した処理から再開できること
•各ステップの最初からやり直すのではなく、作られたチェックポイントの続き
から再開できる
•DBからのSnapshotを取得してDWHへ書き出す処理は、取り込みと書き出し
の2つに分ける
•S3等のストレージへの書き出しをチェックポイントとする
•特にSnapshotの取得に数時間かかる場合に有用
•TDでも、クエリの実行と書き出しは別のJOBとして実行可能となった
(2018年新機能)
23
# ジョブの結果を書き出すResult Export機能の使い方
+simple_query:
td>: queries/simple_query.sql
database: sample_datasets
+result_output:
_parallel: true
+to_td:
sh>: td export:result ${td.last_job_id} ${result_path}
_export:
result_path: td://@/test_db/test_output_by_jobid
+to_s3:
sh>: td export:result ${td.last_job_id} ${result_path}
_export:
result_path: s3://***:***@/my_bucket/file.csv.gz?compression=gz
24
ETL処理で気をつけたいこと
•遅れて届くデータ
•単位時間毎に集計した結果をレポートしたいが、即座には届かない事を考慮
•例えばスマホアプリからのログに数時間の遅れが生じることは良くあること
•日次で前日または前々日のデータを処理する運用で対処するケースもある
•遅れて届く範囲が予測可能という前提が成り立つユースケースの場合
•速さが価値につながるシステムなら、速報値と確定値の2ストリームとすべき
•速報値として5分や10分といった単位での計算をする
•日次で確定値の計算を行う
25
ETL処理で気をつけたいこと
•遅れて届くデータ
•単位時間毎のある条件における平均値を求めている場合
•単位時間のデータを改めて全件走査して計算する方法以外の手もあります
•平均値・母数となった件数を両方保管し、増分レコードへの計算に備えます
•例えば 合計64/20件 = 平均3.2 ならば、3.2(avg)と20(num)を記録します
•遅れて届いた[5,12,6]というデータを取り込む場合、次の計算で補正できます
•式: (avg*num+sum(delayed_record))/(num+count(num))
•(3.2*20+5+12+6)/(20+3) = 3.78
•平均値だけでなく、総件数も更新します
26
27
ETL設計のセオリー
ETL設計のセオリー
•Functional
•それぞれが単純明解な処理
•Reproducibility (Idempotent, Immutability)
•データソースが不変的で再現性のある冪等な動作が出来ること
•Logging Strategy
•ログ戦略
•Security
•セキュリティ・サニタイズ
28
ETL設計のセオリー / Functional
•シンプルかつ単機能だと、テストを行いやすい
•1つのPythonスクリプトで、一気通貫処理で実装されていると手をつけにくい
•ETL処理こそ、ステップ実行できる単機能な処理がチェーンする仕組みが合う
•不具合が起きたときの調査も行いやすくなる
•例えばDBからデータを吸い出して別の分析DBへ転送するスクリプトがある
•その途中にあるDataFrameの加工部分の調整を行いたい
•そのたびにDBからデータを直接取り出すのはナンセンス
•S3にあるテストデータを読ませてunit testが作れる仕組みが欲しい
29
ETL設計のセオリー / Reproducibility
•何らかのエラーが起きて失敗しても、再実行すれば同じ結果を生み出せること
•もし2度同じプログラムを実行してもレコード重複や2重カウントが発生しない
•実行させるタイムレンジ毎にsnapshot_idを設けると良い
•日次でDBのデータを取り込んでいる場合、timeキーにその時のタイムスタン
プを入れるのでは無く、対象日のunixtimeを固定的に使う
•実行時にまずsnapshot idを暗黙的に削除し、新たなレコードを入れる
•例) DELETE * FROM foo WHERE time = 1526947200
•実行のたびにDELETE, INSERTを行うことで一貫性を確保する
30
ETL設計のセオリー / Immutability
•履歴テーブル
•DBのデータを抽出して中間DBに納める際に、snapshot_idを付与する
•snapshot_idを用いて、どのように変化したか時系列分析が可能となる
•snapshot_idを使ってそれぞれのテーブルからレコードを取り出せば、過去の日
の組み合わせを元にした再現性のある再計算も可能となる
•同様に、元のテーブルから作られたFactテーブルにもsnapshot_idを付与する
31
ETL設計のセオリー / Logging Strategy
•新たな値が来るとレコードが上書き(またはレコード削除)されていくワークロードには、

イベントログとしてロガーを使うと時系列分析が可能となります
•スナップショットは履歴テーブルの要件を完全にはカバーできません 

•アプリDB側でUPDATE/DELETEはしない増分記録のみの履歴テーブルを持つと肥大化
するため、そういった所にはTreasureDataを活用してオフロードすると良いでしょう
•1日に1度のスナップショット取得が適するケース
•顧客リスト、顧客のプラン情報テーブル、レコードのDELETEが発生するテーブル
•イベントロガーを整備するケース
•Webアプリの動作に作用する設定の変更ログ、増分テーブル
32
ETL設計のセオリー / Security
•分析DBに個人情報が入っていてはならない
•idや分類識別子だけにする等のサニタイズ処理を取り出し時に済ませておく
•スキーマ変更に気づける仕組みを作ろう
•テーブルやカラムの増減に追従するため、それを検知できる仕組みを作る
•例: db/schema.rbのversionを監視
•新規テーブル/カラムに秘匿情報が入るようならば、どのようなサニタイズ
が最適かを検討して反映する
•開発DBで検知すれば本番リリースよりも先に気づける
33
ETL設計のセオリー / Security
•プロダクションDBからの抽出と、それ以降のプログラム群を分けるべき
•分けることでの生産性向上が期待できる
•前者はセキュリティ監査レビューを入念に行い、後者は素早い開発が期待でき
る
•後者が設置される分析基盤は、プロダクション外のネットワークに置けた方が
外部連携など自由度が高まる
34
35
TDを活用することで出来ること
TDのエコシステムを活用することで解決すること
•ETL処理・基盤を自前で整備するには、さまざまな苦労が発生する

•embulkが解消させること
•データ取り込みやフィルタ加工が、設定ファイルで容易となる
•ETL処理に最適化されたembulkを用いることで、実装工数を圧縮可能
•1ファイルであってもマルチコアを活用して高速に処理が出来る仕組み
•digdagが解消させること
•スケジューリングやエラーハンドリング、再実行を任せられる
36
TDのエコシステムを活用することで解決すること
•TreasureCDPが解決すること
•大量のデータに耐えられるスケーラブルなシステムにより、

利用企業は顧客への価値提供最大化に注力できるようになる
•エンジニア観点では、最も負荷が高く難易度の高いデータプラットフォーム部
分の仕組みを利用することで、データ活用の工数的ハードルが劇的に下がる
•TDには全量データを入れて、各種連携システム毎に必要な量のデータを転送す
るようなハブとしての使い方は効果的
37
38
まとめ
まとめ
•ETL処理のセオリーをおさえて、ロバストな基盤を作るノウハウを紹介しました

•可能な限り利用者の負担を減らし、シンプルにどう解決するか。 

それを実現できるのがTreasureDataの強みだと感じています。 

•TDのエコシステムを活用するとさまざまなノウハウを大いに活用できるため、

ビジネスの拡大を大いに後押しでき、スピード感のある成功を支援できます

•TDはAWS上で動いているシステムなので、AWSの他サービスとの連携にも優れ、そ
れぞれの良いところ取りが出来る自由さもメリットだと感じています
39
40

More Related Content

PPTX
データ利活用を促進するメタデータ
PDF
Amazon Athena 初心者向けハンズオン
PDF
データ分析を支える技術 データ分析基盤再入門
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PDF
DevOps with Database on AWS
PDF
データ活用を加速するAWS分析サービスのご紹介
PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
データ利活用を促進するメタデータ
Amazon Athena 初心者向けハンズオン
データ分析を支える技術 データ分析基盤再入門
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
DevOps with Database on AWS
データ活用を加速するAWS分析サービスのご紹介
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜

What's hot (20)

PDF
AWS Black Belt Online Seminar 2016 AWS CloudFormation
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PPTX
Prometheus入門から運用まで徹底解説
PPTX
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
PDF
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
PDF
Amazon GameLift FlexMatch
PDF
SoR 2.0 基幹システムの再定義と再構築
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
PPTX
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
PDF
AWS IoT Greengrass V2 の紹介
PDF
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
PPTX
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
「伝わるチケット」の書き方
PDF
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
PDF
DMBOKをベースにしたデータマネジメント
PDF
イミュータブルデータモデルの極意
PDF
ソフトウェア開発のやり方の改善
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Prometheus入門から運用まで徹底解説
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
DynamoDBの初心者に伝えたい初めて触るときの勘所
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon GameLift FlexMatch
SoR 2.0 基幹システムの再定義と再構築
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
AWS IoT Greengrass V2 の紹介
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
分散トレーシング技術について(Open tracingやjaeger)
「伝わるチケット」の書き方
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
DMBOKをベースにしたデータマネジメント
イミュータブルデータモデルの極意
ソフトウェア開発のやり方の改善
Ad

Similar to TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方 (20)

PPTX
データ分析基盤におけるOpsのためのDev with event driven + serverless
PDF
基本から学ぶ ビッグデータ / データ分析 / 機械学習 サービス群
PDF
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
PDF
Presto As A Service - Treasure DataでのPresto運用事例
PDF
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
PPTX
社内サービスのUI改善
PPTX
データ分析基盤を支えるエンジニアリング
PDF
Data platformdesign
PPTX
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
PDF
Autonomous選手権システムエグゼ社発表資料
PPTX
2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』
PDF
クラウドではじめるリアルタイムデータ分析 #seccamp
PPTX
EmbulkとDigdagとデータ分析基盤と
PPTX
EmbulkとDigdagとデータ分析基盤と
PDF
Data Engineering at VOYAGE GROUP #jawsdays
PDF
Data Engineering at VOYAGE GROUP #jawsdays
PDF
Treasure Data Intro for Data Enthusiast!!
PDF
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
PDF
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
PDF
20150905 stream analytics
データ分析基盤におけるOpsのためのDev with event driven + serverless
基本から学ぶ ビッグデータ / データ分析 / 機械学習 サービス群
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Presto As A Service - Treasure DataでのPresto運用事例
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
社内サービスのUI改善
データ分析基盤を支えるエンジニアリング
Data platformdesign
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Autonomous選手権システムエグゼ社発表資料
2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』
クラウドではじめるリアルタイムデータ分析 #seccamp
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
Treasure Data Intro for Data Enthusiast!!
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
20150905 stream analytics
Ad

More from Kentaro Yoshida (13)

PDF
Improve data engineering work with Digdag and Presto UDF
PDF
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
PDF
トレジャーデータ 導入体験記 リブセンス編
PDF
Hivemallで始める不動産価格推定サービス
PDF
爆速クエリエンジン”Presto”を使いたくなる話
PDF
Fluentdのお勧めシステム構成パターン
PDF
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
PDF
MySQLユーザ視点での小さく始めるElasticsearch
PDF
Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual
PDF
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
PDF
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
PDF
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
PDF
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Improve data engineering work with Digdag and Presto UDF
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
トレジャーデータ 導入体験記 リブセンス編
Hivemallで始める不動産価格推定サービス
爆速クエリエンジン”Presto”を使いたくなる話
Fluentdのお勧めシステム構成パターン
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLユーザ視点での小さく始めるElasticsearch
Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」

TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方