DataX 엔진
1. DataX 소개
DataX는 Alibaba가 공개한 오픈 소스 프로젝트로(DataX의 Github 홈페이지에서 자세히 확인), 이기종 데이터 소스 간 데이터 동기화에 주로 쓰이는 효율적인 오프라인 데이터 동기화 도구입니다.
DataX는 Framework + plugin 아키텍처를 채택하고 있으며, 데이터 소스의 읽기와 쓰기는 각각 Reader 플러그인과 Writer 플러그인에 대응합니다. 데이터 소스마다 대응하는 Reader 또는 Writer가 있으며, DataX는 다양한 주요 데이터 소스에 맞출 수 있도록 풍부한 Reader와 Writer를 기본으로 제공합니다. Framework는 Reader와 Writer를 연결하며, 동기화 작업에서 데이터 처리, 전달 등 핵심 과정을 담당합니다.
DataX의 데이터 동기화 작업은 주로 하나의 설정 파일로 제어합니다. 그중 가장 중요한 설정은 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 파일을 작성하고, 이어서 2차 개발 컴포넌트의 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
}
}
}
}
설정 파일 전체는 하나의 JSON입니다. 가장 바깥쪽의 "job" 요소에는 "content"와 "setting" 두 요소가 포함됩니다. "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 | √ | √ | 읽기, 쓰기 |

