Apache Sqoop

What is Sqoop?

  • Sqoop stands for SQl to hadOOP
  • Sqoop은 구조화된 RDBMS와 Hadoop의 대용량 데이터들을 효율적으로 변환하여 주는 도구
  • Oracle 또는 MySQL과 같은 RDBMS에서 하둡 분산 파일 시스템으로 데이터들을 가져와서 그 데이터들을 MapReduce로 변환을 하고, 그 변환된 데이터들을 다시 RDBMS로 내보낼 수 있음
  • Sqoop은 또한 데이터의 pull과 push를 MapReduce를 이용하여 처리하기 때문에 장애 허용 능력뿐 아니라 병렬 처리가 가능함

Why sqoop?

  • 자원에 대한 처리를 효과적이고 효율적으로 제어 가능
  • 데이터 타입의 mapping과 conversion이 용이
  • Sqoop record를 통한 metadata의 저장이 가능

Sqoop 2

: Sqoop 1의 많은 단점들로 인해 Sqoop2가 등장

Sqoop1 Sqoop2
Client-Side 설치 Server-Side 설치
Connectors가 Local에 설치되어야 하므로 접속하는 Local마다 JDBC의 설치 필요 Connectors가 필요한 서버 한 곳에만 설치되면 연결이 가능(only needs oneJDBC Driver)
CLI 만 제공 CLI 외에도 Web 및 Rest API를 통한 접속 가능
N/A Workflow Manager인 Oozie와 통합된 처리 가능

Sqoop2 (Design Goals)

  1. 보안 및 기능별 분리: 역할 기반의 액세스와 사용
  2. 용이한 확장성: Connectors간의 중복된 기능이 없음
  3. 쉬운 사용: 하둡에 대한 지식 없어도 사용 가능하며, 통합된 기능으로 인해 시나리오에 따른 용이한 구성이 가능

Sqoop2 (Connection vs. Job Metadata)

  • Connection: database 마다 고유한 작업. Stable, same value reused
  • Job: table 마다 고유한 작업. Changing a lot with each execution

Sqoop2 (Workings)

  • metadata에 Connectors 정보 등록
  • metadata repository에 Connections과 Jobs 생성 가능
  • 운영자는 적합한 Connection을 Job에서 실행 가능
  • 관리자는 Connection 사용에 대한 Policy 정의

Sqoop2 (Security)

  • 역할 기반의 액세스 객체를 통해 외부 시스템에 대한 보안 액세스 지원
  • 관리자가 연결에 대한 생성과 수정 및 삭제를 관리
  • 운영자는 만들어진 연결 기능을 사용


+ Recent posts