menu
Is this helpful?

# DataX 엔진

# 1. DataX 소개

DataX는 Alibaba가 출시한 오픈 소스 프로젝트로, 효율적인 오프라인 데이터 동기화 도구입니다. 이는 이종 데이터 소스 간의 데이터 동기화에 자주 사용됩니다. 자세한 내용은 DataX의 Github 페이지 (opens new window)를 참조하세요.

DataX는 프레임워크 + 플러그인 아키텍처를 사용합니다. 데이터 소스 읽기와 쓰기는 각각 Reader와 Writer 플러그인에 해당합니다. 각 데이터 소스는 해당하는 Reader 또는 Writer를 가집니다. DataX는 기본적으로 다양한 Reader와 Writer 지원을 제공하여 여러 주류 데이터 소스에 적응할 수 있습니다. 프레임워크는 Reader와 Writer를 연결하는 역할을 하며, 동기화 작업에서 데이터 처리, 변환 등의 핵심 프로세스를 담당합니다

DataX의 데이터 동기화 작업은 주로 구성 파일을 통해 제어됩니다. 가장 중요한 구성 요소는 Reader와 Writer의 구성으로, 각각 데이터 소스에서 데이터를 추출하는 방법과 추출된 데이터를 데이터 소스에 쓰는 방법을 나타냅니다. 구성 파일에서 해당 데이터 소스의 Reader와 Writer를 사용하여 이종 데이터 소스의 동기화를 완료할 수 있습니다.

TA 도구에서는 DataX 엔진을 통합하고 TA 클러스터용 플러그인(즉, TA 클러스터용 Reader와 Writer)을 작성했습니다. TA 클러스터 플러그인을 사용하면 TA 클러스터를 DataX의 데이터 소스로 사용할 수 있습니다. ta-tool의 DataX 엔진을 통해 다음과 같은 데이터 동기화를 완료할 수 있습니다:

  1. 다른 데이터베이스에서 TA 클러스터로 데이터를 가져오려면 DataX의 기존 Reader 플러그인과 TA Writer를 사용해야 합니다.
  2. TA 클러스터의 데이터를 다른 데이터베이스로 내보내려면 DataX의 기존 Writer 플러그인과 TA Reader를 사용해야 합니다.

# 2. DataX 엔진 사용 지침

ta-tool에서 다중 데이터 소스 동기화 작업을 위해 DataX 엔진을 사용하려면 먼저 TA 클러스터에서 DataX 작업의 구성 파일을 작성한 후, 개발자 구성 요소에서 DataX 명령을 실행하여 구성 파일을 읽고 데이터 동기화 작업을 수행해야 합니다.

# 2.1 샘플 구성 파일

DataX 작업 구성 파일은 json 파일이어야 하며, json 구성 템플릿은 다음과 같습니다:

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "sliceRecordCount": 10,
            "column": [
              {
                "type": "long",
                "value": "10"
              },
              {
                "type": "string",
                "value": "hello, world-DataX"
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 5
      }
    }
  }
}

전체 구성 파일은 JSON 형식이며, 가장 바깥쪽의 'job' 요소는 'content'와 'setting'이라는 두 요소를 포함합니다. 'content' 요소 내에는 reader와 writer 정보가 포함되어 있습니다. TA 클러스터의 Reader와 Writer는 이 문서의 후반부에서 확인할 수 있습니다. 'setting'의 'speed'에서 'channel'은 동시에 수행되는 작업 수를 나타냅니다.

구성 파일의 주요 부분은 'content'의 'reader'와 'writer' 요소입니다. 각각 데이터를 읽기 위한 Reader 플러그인과 데이터를 쓰기 위한 Writer 플러그인을 구성합니다. DataX의 기본 Reader와 Writer 플러그인의 구성에 대해서는 DataX의 지원 데이터 채널 (opens new window)에서 확인할 수 있습니다.

# 2.2 DataX 명령 실행

구성 파일을 작성한 후, 다음 명령을 실행하여 구성 파일을 읽고 데이터 동기화 작업을 시작할 수 있습니다.

ta-tool datax_engine -conf <configPath> [--date <date>]

전달된 파라미터는 구성 파일이 위치한 경로입니다.

# 3. TA 클러스터용 DataX 플러그인 설명

# 3.1 클러스터 내에서 사용하는 플러그인

유형

데이터 소스

Reader (읽기)

Writer (쓰기)

Doc

TA system

TA

read, write

Custom table

TA

write

json text

TA

write

# 3.2 클러스터 외부에서 사용되는 플러그인

유형

데이터 소스

Reader (읽기)

Writer (쓰기)

Doc

TA system

TA

write

# 3.3 DataX 네이티브 플러그인

유형

데이터 소스

Reader (읽기)

Writer (쓰기)

Doc

RDBMS relational database

MySQL

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mysqlreader/doc/mysqlreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mysqlreader/doc/mysqlreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mysqlreader/doc/mysqlreader.md)

Oracle

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/oraclereader/doc/oraclereader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/oraclereader/doc/oraclereader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/oraclereader/doc/oraclereader.md)

SQLServer

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md)

PostgreSQL

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md)

DRDS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

General-purpose RDBMS (supports all relational databases)

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Alibaba Cloud Data Storage

ODPS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

ADS

[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ossreader/doc/ossreader.md)

OSS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

OCS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ocsreader/doc/ocsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ocsreader/doc/ocsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ocsreader/doc/ocsreader.md)

NoSQL data storage

OTS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Hbase0.94

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Hbase1.1

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xreader/doc/hbase11xreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xreader/doc/hbase11xreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xreader/doc/hbase11xreader.md)

Phoenix4.x

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Phoenix5.x

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase20xsqlreader/doc/hbase20xsqlreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase20xsqlreader/doc/hbase20xsqlreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase20xsqlreader/doc/hbase20xsqlreader.md)

MongoDB

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mongodbreader/doc/mongodbreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mongodbreader/doc/mongodbreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mongodbreader/doc/mongodbreader.md)

Hive

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfsreader/doc/hdfsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfsreader/doc/hdfsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfsreader/doc/hdfsreader.md)

Cassandra

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/cassandrareader/doc/cassandrareader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/cassandrareader/doc/cassandrareader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/cassandrareader/doc/cassandrareader.md)

Unstructured data storage

TxtFile

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/txtfilereader/doc/txtfilereader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/txtfilereader/doc/txtfilereader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/txtfilereader/doc/txtfilereader.md)

FTP

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ftpreader/doc/ftpreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ftpreader/doc/ftpreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ftpreader/doc/ftpreader.md)

HDFS

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Elasticsearch

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)

Time series database

OpenTSDB

[rea](https://github.com/ThinkingDataAnalytics/DataX/blob/master/opentsdbreader/doc/opentsdbreader.md)d

TSDB

[read](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[, ](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)[write](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)