DataXエンジン
1. DataXの概要
DataXはAlibabaが公開しているオープンソースプロジェクトで(詳細はDataXのGithubページを参照してください)、効率的なオフラインデータ同期ツールです。異種データソース間のデータ同期によく使われます。
DataXはFramework + pluginのアーキテクチャを採用しています。データソースの読み取りと書き込みはそれぞれReaderプラグインとWriterプラグインに対応し、データソースごとに対応するReaderまたはWriterがあります。DataXには豊富なReaderとWriterが標準で用意されており、主要なさまざまなデータソースに対応できます。FrameworkはReaderとWriterをつなぎ、同期タスクにおけるデータの処理や受け渡しなどのコアプロセスを担います。
DataXのデータ同期タスクは、主に1つの設定ファイルで制御します。その中で最も重要なのはReaderとWriterの設定で、それぞれデータソースからデータを抽出する方法と、抽出したデータをデータソースに書き込む方法を表します。設定ファイルで対象のデータソースに対応するReaderとWriterを使えば、異種データソース間の同期を実現できます。
ta-toolにはDataXエンジンが統合されており、AEクラスター用のプラグイン(AEクラスターのReaderとWriter)も用意されています。AEクラスターのプラグインを使うと、AEクラスターをDataXのデータソースとして利用できます。
ta-toolのDataXエンジンを使うと、次のデータ同期を行えます:
- 他のデータベースのデータをAEクラスターにインポートする:DataXの既存のReaderプラグインとAE Writerを使用します
- AEクラスターのデータを他のデータベースにエクスポートする:AE ReaderとDataXの既存のWriterプラグインを使用します
2. DataXエンジンの使い方
ta-toolのDataXエンジンで複数のデータソース間の同期タスクを実行するには、まずAEクラスターでDataXタスクのConfigファイルを作成し、次に二次開発コンポーネントのDataXコマンドを実行して、Configファイルを読み込んでデータ同期タスクを実行します。
2.1 設定ファイルのサンプル
DataXタスクのConfigファイルはjsonファイルである必要があります。json設定のテンプレートは次のとおりです:
{
"job": {
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"sliceRecordCount": 10,
"column": [
{
"type": "long",
"value": "10"
},
{
"type": "string",
"value": "hello、こんにちは、世界-DataX"
}
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "UTF-8",
"print": true
}
}
}
],
"setting": {
"speed": {
"channel": 5
}
}
}
}
設定ファイル全体が1つのJSONで、最も外側が"job"要素です。その中に"content"と"setting"の2つの要素があります。"content"内の要素にはreaderとwriterの情報が含まれます。AEクラスターのReaderとWriterについては、本ドキュメントの後半を参照してください。"setting"の"speed"内にある"channel"は、同時に実行するタスクの数です。
設定ファイルで主に設定するのは、"content"内の"reader"要素と"writer"要素で、それぞれデータを読み取るReaderプラグインと、データを書き込むWriterプラグインを設定します。DataXにプリセットされているReaderプラグインとWriterプラグインの設定方法は、DataXのSupport Data Channelsを参照してください。
2.2 DataXコマンドの実行
設定ファイルを作成したら、次のコマンドを実行して設定ファイルを読み込み、データ同期タスクを開始できます。
ta-tool datax_engine -conf <configPath> [--date <date>]
渡すパラメータは、設定ファイルのパスです。
3. AEクラスターのDataXプラグインの説明
3.1 クラスター内で使用するプラグイン
| タイプ | データソース | Reader(読み取り) | Writer(書き込み) | ドキュメント |
|---|---|---|---|---|
| AEシステム | TE | √ | √ | 読み取り、書き込み |
| カスタムテーブル | TE | √ | 書き込み | |
| jsonテキスト | TE | √ | 書き込み |
3.2 クラスター外で使用するプラグイン
| タイプ | データソース | Reader(読み取り) | Writer(書き込み) | ドキュメント |
|---|---|---|---|---|
| AEシステム | TE | √ | 書き込み |
3.3 DataXのネイティブプラグイン
| タイプ | データソース | Reader(読み取り) | Writer(書き込み) | ドキュメント |
|---|---|---|---|---|
| RDBMS リレーショナルデータベース | MySQL | √ | √ | 読み取り、書き込み |
| Oracle | √ | √ | 読み取り、書き込み | |
| SQLServer | √ | √ | 読み取り、書き込み | |
| PostgreSQL | √ | √ | 読み取り、書き込み | |
| DRDS | √ | √ | 読み取り、書き込み | |
| 汎用RDBMS(すべてのリレーショナルデータベースに対応) | √ | √ | 読み取り、書き込み | |
Alibaba Cloudのデータウェアハウスストレージ | ODPS | √ | √ | 読み取り、書き込み |
| ADS | √ | 書き込み | ||
| OSS | √ | √ | 読み取り、書き込み | |
| OCS | √ | √ | 読み取り、書き込み | |
| NoSQLデータストレージ | OTS | √ | √ | 読み取り、書き込み |
| Hbase0.94 | √ | √ | 読み取り、書き込み | |
| Hbase1.1 | √ | √ | 読み取り、書き込み | |
| Phoenix4.x | √ | √ | 読み取り、書き込み | |
| Phoenix5.x | √ | √ | 読み取り、書き込み | |
| MongoDB | √ | √ | 読み取り、書き込み | |
| Hive | √ | √ | 読み取り、書き込み | |
| Cassandra | √ | √ | 読み取り、書き込み | |
| 非構造化データストレージ | TxtFile | √ | √ | 読み取り、書き込み |
| FTP | √ | √ | 読み取り、書き込み | |
| HDFS | √ | √ | 読み取り、書き込み | |
| Elasticsearch | √ | √ | 読み取り、書き込み | |
| 時系列データベース | OpenTSDB | √ | 読み取り | |
| TSDB | √ | √ | 読み取り、書き込み |

