26
西澤無我 Treasure Data, Inc. Server-side Bulk Loader の概要 1

The overview of Server-ide Bulk Loader

Embed Size (px)

Citation preview

Page 1: The overview of Server-ide Bulk Loader

西澤無我Treasure Data, Inc.

Server-side Bulk Loader の概要

1

Page 2: The overview of Server-ide Bulk Loader

Today’s Talk

2

背景 > Treasure Data について > バルクデータ転送の難しさ Server-side Bulk Loader について > Embulk の概要 > 概要、使い方、今後について

Page 3: The overview of Server-ide Bulk Loader

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の機能概要図)

Page 4: The overview of Server-ide Bulk Loader

多数のお客様からデータをお預かり

4

1.5兆

3.0兆

4.5兆

6.0兆

2011/12 (創業)

2014/042013/04

創業から2年半で

1万倍に増加

(お客様からお預かりしているデータ件数の推移)

>120有償のお客様数

>20%四半期のアカウント増加率

>4,000単一のお客様の

最大データ収集サーバー数

Page 5: The overview of Server-ide Bulk Loader

数字でみる Treasure Data

5

100+日本国内のお客様

17兆保存されているデータ件数

4,000一社が所有する最大

サーバー数

500,0001秒間に保存されるデータ件数

Page 6: The overview of Server-ide Bulk Loader

特にバルクアップローダーについて

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の機能概要図)

Page 7: The overview of Server-ide Bulk Loader

バルクデータのアップロードの難しさ

> 入力データの正規化

> エラー処理

> メンテナンス

> 性能

Page 8: The overview of Server-ide Bulk Loader

入力データの正規化の難しさ

様々なフォーマット、データストレージ

> 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

→ 試行によるデータ正規化、オプションの増加

Page 9: The overview of Server-ide Bulk Loader

入力データの正規化の難しさ

データエンコーディングのバリエーション

> null、時刻、浮動小数点

> 改行、エスケープ、レコード/カラム区切り

> 文字コード、圧縮有無

→ 試行によるデータ正規化、オプションの増加

Page 10: The overview of Server-ide Bulk Loader

エラー処理の難しさ

例外値の扱い ネットワークエラーからの復旧 ディスクフルからの復旧 重複データ転送の回避

→ データバリデーション、リトライ、リジューム

Page 11: The overview of Server-ide Bulk Loader

メンテナンスの難しさ

継続的な動作の確保 データ転送要件変更への対応

→ ドキュメント、汎用化

Page 12: The overview of Server-ide Bulk Loader

性能の問題

転送データ量は通常増えていく 対象レコードも増えたりする それでも、いついつまでにアップロードしたい

→ 並列・分散処理

Page 13: The overview of Server-ide Bulk Loader

Server-side Bulk Loader

ユーザー

転送管理コンソールから実行

PlazmaDBWorker

管理コンソールからアクセス

Page 14: The overview of Server-ide Bulk Loader

14

HDFS

MySQL

Amazon S3

CSV Files

SequenceFile

Salesforce.com

Elasticsearch

Cassandra

Hive

Redis

Reliable framework :-)

Page 15: The overview of Server-ide Bulk Loader

Embulk アプローチ

15

> プラグインアーキテクチャ

> 入力データ正規化支援: guess, preview

> トランザクション制御

Page 16: The overview of Server-ide Bulk Loader

Embulk のアーキテクチャ

16

4種のプラグインとそれを組み上げるフレームワーク

1. Executor: 実行

2. Input: バルクデータのレコード群を取り込み

FileInput, Decoder, Parser: ファイル操作

3. Filter: レコードに対するデータ操作

4. Output: バルクデータのレコード群を出力

FileOutput, Encoder, Formatter: ファイル操作

Page 17: The overview of Server-ide Bulk Loader

Embulk をどう利用するか?

> 入力データ正規化支援: guess, preview

> 実行: run

> 繰り返し実行

Page 18: The overview of Server-ide Bulk Loader

入力データ正規化支援: guess, preview

> コアは Embulk の guess, preview

> アプリケーションサーバ上で実行

> chef でサーバを構築・デプロイ

Page 19: The overview of Server-ide Bulk Loader

実行: run, 繰り返し実行

> クエリ実行の仕組みと同様

> Worker が run を実行

> PlazmaDB へ直接書き込む output plugin

> 設定と前回の run で読んだファイル名を保存

Page 20: The overview of Server-ide Bulk Loader

使い方

$ cat seed.yml config: type: s3 access_key_id: XXXXXXXXXX secret_access_key: YYYYYYYYYY bucket: sample_bucket path_prefix: path/to/sample_file

> S3 上のファイルへのアクセス情報を宣言

Page 21: The overview of Server-ide Bulk Loader

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 が正規化のオプションを推測

Page 22: The overview of Server-ide Bulk Loader

$ 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 で正規化されたデータを確認

Page 23: The overview of Server-ide Bulk Loader

$ td connector:issue load.yml --database td_sample_db --table td_sample_tbl --time-column created_at

使い方> Database, table を指定してバルクロード

Page 24: The overview of Server-ide Bulk Loader

今後について

> Timestamp Parser の性能向上

> 入力データストレージを増やす

> Map/Reduce Executor の利用

Page 25: The overview of Server-ide Bulk Loader

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.

Page 26: The overview of Server-ide Bulk Loader

26