티스토리 뷰

BigData/Sqoop

Sqoop의 개념

Tomining 2015. 4. 10. 16:01


Sqoop이란?

Apache Sqoop is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.

Apache Sqoop은 SQL-to-Hadoop 의 약자로 Apache Hadoop과 정형화된 Datasource, 예를 들어, Oracle 같은 RDB 간의 대량 데이터를 전송하기 위해 만들어진 툴이다.

Oracle DB에 저장된 대량의 데이터를 HDFS 로 옮겨 분석을 하고자 할 때 쉽게 데이터를 Import 할 수 있으며, 반대로 분석 결과(HDFS)를 RDB로 Export 할 수 있다.
또한 Hive, Pig, Hbase 등으로 바로 옮겨서 확인 할 수도 있다.


Sqoop의 Import/Export





Apache 상위 프로젝트로 Sqoop 페이지에 들어가보면 Sqoop은 두 가지 Major 버전으로 나눠진다.
  • Sqoop1
    • 최신버전 : 1.4.5
  • Sqoop2
    • 최신버전 : 1.99.5
(at 2015/04/10 기준)

1. Sqoop1


sqoop1 은 이용자가 CLI(Command Line Interface)를 통해 sqoop command를 실행하는 구조이다.


2. Sqoop2



sqoop1이 CLI 방식이라면 sqoop2는 web-based GUI 방식이라고 할 수 있다.
REST API를 통해서 UI에서 Sqoop2를 제어할 수 있게 되었으며, 여기서 Admin과 Operators 권한으로 구분하여 create 또는 execute 권한을 제한할 수 있다.

Sqoop2 의 설계목적은 아래 3가지라고 한다.
  • Ease of Use 사용이 쉽다.
  • Ease of Extension 확장이 쉽다.
  • Security 보안
    • admin 또는 operators 권한

Sqoop2에서 다라진 점 중 가장 큰 부분은 붉은 박스부분인 Server 방식이 추가되었다는 것이다.
기존 Sqoop1의 CLI 방식(명령어 호출 방식) 이 중앙에 Sqoop Server를 두고 WebUI를 사용하거나 REST API 방식을 통해서 Sqoop을 제어할 수 있게 되었다.
또한 Server에만 설정하면 되고, 필요한 JDBC Driver도 Server에만 설치하여 관리되므로 편리해졌다고 할 수 있다.



JDBC Connector를 지원하며, 지원되는 데이터 타입은 아래와 같다.
  • TINYINT, SMALLINT, INTEGER, BIGINT
  • REAL, FLOAT, DOUBLE, NUMERIC, DECIMAL
  • BIT
  • BOOLEAN
  • DATE, TIME, TIMESTAMP
  • CHAR, VARCHAR, LONGVARCHAR

Sqoop Import


Import 과정
  1. 가져와야 할 Metadata를 가져온다.
  2. Map-Only Job으로 데이터를 Hadoop Cluster로 전송
※ Map-Only Job이란?
Hadoop Map&Reduce 중 Map 만으로 이뤄진 Job을 의미한다. 즉, 원하는 데이터만 mapping 해서 HDFS 저장하겠다는 의미이다.
Reduce가 없는 이유는 Sqoop의 목적은 대량 데이터 전송이지, 가공이 아니기 때문이다.

Import 예제

$ sqoop import -connect jdbc:mysql://127.0.0.1/userdb -table ORDERS -username dbuser -password dbpass -hive -import

MySQL의 ORDERS 테이블 내의 데이터를 HDFS로 옮기면서 즉시 Hive로 Import 하는 명령어 샘플이다.

Sqoop Export


Export 과정
  1. 가져와야 할 DB의 Metadata를 가져온다.
  2. Map-Only Job으로 데이터를 RDB로 전송

Export 예제

$ sqoop export -connect jdbc:mysql://127.0.0.1/userdb -table ORDERS -username dbuser -password dbpass -export-dir=/hdfs_path/ORDERS -m 1 -input-fields-erminated-by '\001'

HDFS 내의 ORDERS 데이터를 MySQL 의 ORDER 테이블로 데이터를 전송하는 명령어 샘플이다.



참고사이드


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함