Upload
treasure-data-inc
View
621
Download
2
Embed Size (px)
Citation preview
西澤無我Treasure Data, Inc.
Server-side Bulk Loader の概要
1
Today’s Talk
2
背景 > Treasure Data について > バルクデータ転送の難しさ Server-side Bulk Loader について > Embulk の概要 > 概要、使い方、今後について
Treasure Data Service
3
Result Output
クエリ結果自動書込
データ収集 データ分析データ保管
ストレージFlexible, Scalable, Columnar Storage
Webログ
Appログ
センサー
CRM
ERP
RDBMS
TD Toolbelt
バルク アップローダー
Treasure Agent
ストリーミング ログコレクター
バッチ型分析
アドホック型分析
データ集計KPI
データ可視化・共有
分析ツール連携
他製品連携
SQL, Pig
RDBMS, Google Docs,AWS S3, FTP Server, etc.
Metric Insights, etc.
Tableau, Motion Board(予定) etc.
POS
分析エンジンHadoop, Treasure Query Accelerator
データ抽出REST API
ODBC/JDBC(SQL, Pig)
(Treasure Data Serviceの機能概要図)
多数のお客様からデータをお預かり
4
1.5兆
3.0兆
4.5兆
6.0兆
2011/12 (創業)
2014/042013/04
創業から2年半で
1万倍に増加
(お客様からお預かりしているデータ件数の推移)
>120有償のお客様数
>20%四半期のアカウント増加率
>4,000単一のお客様の
最大データ収集サーバー数
数字でみる Treasure Data
5
100+日本国内のお客様
17兆保存されているデータ件数
4,000一社が所有する最大
サーバー数
500,0001秒間に保存されるデータ件数
特にバルクアップローダーについて
6
Result Output
クエリ結果自動書込
データ収集 データ分析データ保管
ストレージFlexible, Scalable, Columnar Storage
Webログ
Appログ
センサー
CRM
ERP
RDBMS
TD Toolbelt
バルク アップローダー
Treasure Agent
ストリーミング ログコレクター
バッチ型分析
アドホック型分析
データ集計KPI
データ可視化・共有
分析ツール連携
他製品連携
SQL, Pig
RDBMS, Google Docs,AWS S3, FTP Server, etc.
Metric Insights, etc.
Tableau, Motion Board(予定) etc.
POS
分析エンジンHadoop, Treasure Query Accelerator
データ抽出REST API
ODBC/JDBC(SQL, Pig)
(Treasure Data Serviceの機能概要図)
バルクデータのアップロードの難しさ
> 入力データの正規化
> エラー処理
> メンテナンス
> 性能
入力データの正規化の難しさ
様々なフォーマット、データストレージ
> CSV, TSV, JSON, XML, MessagePack, SequenceFile, RCFile
> S3, Salesforce.com, Google Cloud Storage, BigQuery, Elasticsearch
> MySQL, PostgreSQL, Oracle, MS SQL Server, Amazon Redshift, Redis, MongoDB
→ 試行によるデータ正規化、オプションの増加
入力データの正規化の難しさ
データエンコーディングのバリエーション
> null、時刻、浮動小数点
> 改行、エスケープ、レコード/カラム区切り
> 文字コード、圧縮有無
→ 試行によるデータ正規化、オプションの増加
エラー処理の難しさ
例外値の扱い ネットワークエラーからの復旧 ディスクフルからの復旧 重複データ転送の回避
→ データバリデーション、リトライ、リジューム
メンテナンスの難しさ
継続的な動作の確保 データ転送要件変更への対応
→ ドキュメント、汎用化
性能の問題
転送データ量は通常増えていく 対象レコードも増えたりする それでも、いついつまでにアップロードしたい
→ 並列・分散処理
Server-side Bulk Loader
ユーザー
転送管理コンソールから実行
PlazmaDBWorker
管理コンソールからアクセス
14
HDFS
MySQL
Amazon S3
CSV Files
SequenceFile
Salesforce.com
Elasticsearch
Cassandra
Hive
Redis
Reliable framework :-)
Embulk アプローチ
15
> プラグインアーキテクチャ
> 入力データ正規化支援: guess, preview
> トランザクション制御
Embulk のアーキテクチャ
16
4種のプラグインとそれを組み上げるフレームワーク
1. Executor: 実行
2. Input: バルクデータのレコード群を取り込み
FileInput, Decoder, Parser: ファイル操作
3. Filter: レコードに対するデータ操作
4. Output: バルクデータのレコード群を出力
FileOutput, Encoder, Formatter: ファイル操作
Embulk をどう利用するか?
> 入力データ正規化支援: guess, preview
> 実行: run
> 繰り返し実行
入力データ正規化支援: guess, preview
> コアは Embulk の guess, preview
> アプリケーションサーバ上で実行
> chef でサーバを構築・デプロイ
実行: run, 繰り返し実行
> クエリ実行の仕組みと同様
> Worker が run を実行
> PlazmaDB へ直接書き込む output plugin
> 設定と前回の run で読んだファイル名を保存
使い方
$ cat seed.yml config: type: s3 access_key_id: XXXXXXXXXX secret_access_key: YYYYYYYYYY bucket: sample_bucket path_prefix: path/to/sample_file
> S3 上のファイルへのアクセス情報を宣言
2014/06/20
$ td connector:guess seed.yml -o load.yml $ cat load.yml config: type: s3 access_key_id: XXXXXXXXXX secret_access_key: YYYYYYYYYY bucket: sample_bucket path_prefix: path/to/sample_file parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' escape: '' skip_header_lines: 1 columns: - name: id type: long - name: company type: string - name: customer type: string - name: created_at type: timestamp format: '%Y-%m-%d %H:%M:%S'
使い方> Guess が正規化のオプションを推測
$ td connector:preview load.yml +-------+---------+----------+---------------------+ | id | company | customer | created_at | +-------+---------+----------+---------------------+ | 11200 | AA Inc. | David | 2015-03-31 06:12:37 | | 20313 | BB Imc. | Tom | 2015-04-01 01:00:07 | | 32132 | CC Inc. | Fernando | 2015-04-01 10:33:41 | | 40133 | DD Inc. | Cesar | 2015-04-02 05:12:32 | | 93133 | EE Inc. | Jake | 2015-04-02 14:11:13 | +-------+---------+----------+---------------------+
使い方> Preview で正規化されたデータを確認
$ td connector:issue load.yml --database td_sample_db --table td_sample_tbl --time-column created_at
使い方> Database, table を指定してバルクロード
今後について
> Timestamp Parser の性能向上
> 入力データストレージを増やす
> Map/Reduce Executor の利用
1. Distributed Systems Engineer
2. Integration Engineer
3. Software Engineer, MPP DBMS
4. Sales Engineer
5. Technical Support Engineer
(日本,東京,丸の内)
https://jobs.lever.co/treasure-data
We’re hiring!
ANALYTICS INFRASTRUCTURE. SIMPLIFIED IN THE CLOUD.
26