DataX의 기술적 특성과 활용

데이터X 개요 DataX는 다양한 데이터 저장소 간의 데이터를 안정적으로 전송하는 오프라인 데이터 동기화 도구입니다. MySQL, Oracle, HDFS, Hive, HBase, FTP와 같은 다양한 데이터 소스 간의 데이터를 이동시킬 수 있습니다.

핵심 기술 아키텍처 DataX는 플래그런 + 플러그인 아키텍처를 사용하며, Reader와 Writer 플러그인을 통해 데이터를 읽고 쓰는 기능을 제공합니다. Reader는 데이터를 수집하고, Writer는 데이터를 목적지에 저장하며, Framework는 두 모듈간의 통로 역할을 합니다.

플러그인 기반 확장성 DataX는 다양한 데이터 소스를 지원하며, 주요 데이터베이스와 클라우드 저장소, NoSQL 데이터베이스 등을 연결할 수 있습니다. 아래 표는 주요 지원 데이터 소스를 요약합니다.

유형 데이터 소스 리더 지원 라이터 지원
RDBMS MySQL, Oracle, PostgreSQL, SQLServer, DRDS 등
클라우드 스토리지 ODPS, OSS, OCS 등
NoSQL HBase, MongoDB, Hive 등
텍스트 기반 _TXT, FTP, HDFS 등

작업 실행 프로세스 DataX는 작업(Job)을 실행하기 위해 다음과 같이 단계를 거칩니다:

  1. 작업(Job)을 시작하면 하나의 프로세스가 할당됩니다.
  2. 작업은 소스 데이터베이스에 따라 여러개의 서브_TASK로 분할됩니다.
  3. Scheduler는 분할된 TASK를 그룹 단위로 실행하고, 각 그룹은 병렬로 작업을 처리합니다.
  4. 각 TASK는 독립적인 스레드를 통해 데이터를 읽고 씁니다.
  5. 모든 TASK가 완료되면 작업이 완료됩니다.

핵심 기능

  • 데이터 통합성 보장: 데이터 손실 없이 안정적인 전송을 보장합니다.
  • 데이터 변환: 전송 중에 데이터를 가공하거나 필터링할 수 있습니다.
  • 플로우 제어: 통신 속도를 세밀하게 제어할 수 있습니다.
  • 성능 최적화: 병렬 처리를 통해 대량 데이터 전송을 효율화합니다.
  • 에러 재COVERY: 네트워크 문제 등을 대비한 재시도 기능을 제공합니다.
  • 사용자 친화적 인터페이스: 상세한 로그와 성능 모니터링을 제공합니다.

데이터X와 Sqoop의 비교

기능 DataX Sqoop
런타임 모드 싱글 프로세스 멀티 스레드 맵-리듀스
분산 실행 지원하지 않음(스케ジューラ를 통해 가능) 지원
속도 제어 지원 커스텀 필요
통계 및 모니터링 기본 제공 없음

사용 방법 DataX 작업을 실행하려면 다음 단계를 수행합니다:

  1. 필요한 Reader와 Writer를 선택합니다.
  2. 작업 내용을 JSON 형식의 설정 파일에 기록합니다.
  3. 명령어를 통해 작업을 실행합니다.

예를 들어 MySQL에서 HDFS로 데이터를 전송하려면 다음과 같이 작업 파일을 작성하고 실행합니다:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysql리더",
                    "파라미터": {
                        "컬럼": ["*"],
                        "conexion": [
                            {
                                "jdbcUrl": ["jdbc:mysql://마스터:3306/DB이름?useUnicode=true&characterEncoding=utf-8"],
                                "테이블": ["테이블명"]
                            }
                        ],
                        "패스워드": "비밀번호",
                        "유저네임": "사용자명"
                    }
                },
                "라이터": {
                    "이름": "hdfs라이터",
                    "파라미터": {
                        "컬럼": [
                            {"이름": "id", "타입": "int"},
                            {"이름": "이름", "타입": "string"}
                        ],
                        "압축": "",
                        "기본FS": "hdfs://마스터:9000",
                        "필드Delimiter": ",",
                        "fileName": "파일명",
                        "fileType": "텍스트",
                        "path": "hdfs경로",
                        "writeMode": "어펜드"
                    }
                }
            }
        ],
        "설정": {
            "속도": {
                "채널": "1"
            }
        }
    }
}

실행 명령어:

python ./bin/datax.py ./작업/작업.json

이러한 방법을 통해 DataX를 통해 다양한 데이터 소스 간의 데이터를 원활하게 동기화할 수 있습니다.

태그: DataX ETL 툴 데이터 통합 플러그인 아키텍처

7월 25일 09:40에 게시됨