Classic 환경에서 이용 가능합니다.
Sqoop(SQL to Hadoop)은 Hadoop과 관계형 데이터베이스 간에 데이터를 전송할 수 있도록 설계된 오픈소스 소프트웨어입니다.
간단한 CLI로 Oracle, MySQL 등의 RDBMS 특정 테이블 또는 특정 조건에 맞는 데이터를 HDFS로 쉽게 옮길 수 있으며, Hive, Pig, HBase 등으로 바로 옮겨 확인할 수 있습니다. 반대로 HDFS에 저장되어 있는 데이터를 RDBMS로 옮길 수도 있습니다.
Sqoop은 2009년 첫 버전이 나온 후 2012년에 Apache Top Level Project가 되어 지속적으로 발전 중입니다. 현재 Apache Sqoop은 Sqoop 1, Sqoop 2의 두 가지 버전으로 발전하고 있습니다. Sqoop 1은 클라이언트 방식이고, Sqoop 2는 기존 Sqoop 1 방식에 서버 사이드 방식이 추가된 버전입니다.
네이버 클라우드 플랫폼의 Cloud Hadoop에서 지원하는 클러스터 Type에는 Sqoop이 기본적으로 설치되어 있습니다.
이 가이드에서는 Sqoop을 사용하여 MySQL 데이터를 Cloud Hadoop로 복사하거나 반대로 보내는 방법에 대하여 설명합니다.
그 외의 Sqoop의 사용법은 Apache Sqoop Documentation를 참고해 주십시오.
이 가이드는 MySQL 5버전을 기준으로 설명하고 있으며, MySQL 8 버전으로 마이그레이션 시에는 커넥터의 버전 업그레이드가 필요합니다.
8 버전의 커넥터 버전은 곧 업데이트 예정입니다.
사전 작업
Cloud Hadoop에서 Sqoop을 사용하기 위해서는 다음과 같은 사전 작업이 필요합니다.
항목 | 설명 | 가이드 |
---|---|---|
ACG 및 ACL 설정 | Cloud Hadoop 클러스터 서버와 RDBMS 서버 간의 통신 가능하도록 설정 | 방화벽 설정(ACG) |
RDBMS | 원본 데이터가 저장되어 있는 RDBMS |
사전 작업 후 다음 단계를 차례대로 진행해 주십시오.
1. Hadoop 클러스터 접속
작업하고자 하는 Cloud Hadoop 클러스터의 마스터 노드에 접속해 주십시오.
클러스터 마스터 노드에 접속 방법은 SSH로 클러스터 노드에 접속을 참고해 주십시오.
2. MySQL 접속 및 가져올 대상 데이터 확인
-
아래 명령어를 실행하여 원격 MySQL 서버에 접속할 수 있도록 MySQL Client가 설치되어 있는지 확인해 주십시오.
- 기본적으로 마스터 노드(2대)에는 MySQL Client가 설치되어 있습니다.
-
아래 명령어를 실행한 후, MySQL 서버에 연결되었는지 확인해 주십시오.
접속 예시주의연결이 제대로 되지 않을 때는 MySQL DB 포트로 ACG가 잘 열려 있는지 확인하고, MySQL DB 자체의 ACL 리스트를 확인합니다.
-
사용자의 MySQL DB 서버에서 Hadoop 클러스터 HDFS로 가져올 데이터를 확인해 주십시오.
- 아래 예시는
sqoop
이라는 데이터베이스에SQOOP_TEST
테이블이 미리 생성된 상태입니다.
- 아래 예시는
3. Sqoop 명령어로 데이터 가져오기
-
sudo su -
명령어를 실행하여 root 계정으로 전환해 주십시오. -
import
Sqoop 명령어를 이용하여 데이터를 임포트해 주십시오.import
명령어로 특정 데이터베이스, 특정 테이블, 쿼리 수행 결과 등 가져올 수 있습니다.
import
명령어로 특정 데이터베이스, 특정 테이블, 쿼리 수행 결과 등 가져올 수 있습니다. Sqoop import의 일반적인 옵션은 아래 표를 참고해 주십시오.
인수 | 설명 |
---|---|
--connect <jdbc-uri> |
JDBC 연결 문자열 지정 |
--connection-manager <class-name> |
사용할 연결 관리자 클래스 지정 |
--driver <class-name> |
사용할 JDBC 드라이버 클래스를 수동으로 지정할 때 사용 |
--hadoop-home <dir> |
$ HADOOP_HOME 지정 |
--help |
도움말 |
-P |
콘솔에서 비밀번호 읽기 |
--password <password> |
인증 암호 설정 |
--username <username> |
인증 사용자 이름 설정 |
--verbose |
작업하는 동안 더 많은 정보를 출력할 때 사용 |
--connection-param-file <filename> |
연결 매개 변수를 제공하는 선택적 특성 파일 지정 |
Sqoop은 MapReduce 작업을 통해서 데이터를 가져옵니다. 아래는 가장 일반적인 방법으로 특정 데이터베이스의 특정 테이블을 가져오는 예제입니다.
import 받을 테이블은 반드시 Primary Key를 가지고 있어야 합니다. Primary Key를 가지고 있지 않다면 아래와 같은 에러가 발생합니다.
4. Hive에서 HDFS 데이터 확인
- Hive를 통해 테이블이 잘 저장되어 있는지 확인해 주십시오.
- Hive 사용 방법은 Hive 사용 가이드를 참고해 주십시오.
- import한 테이블이 잘 저장되어 있는지 확인하는 쿼리를 작성하고 실행해 주십시오.
자주 하는 질문을 먼저 확인해 보십시오.
Q. Cloud hadoop 서비스의 마스터 노드에서 Sqoop Client를 사용하려고 하는데 jdbc 드라이버를 datanode에도 추가해야 하나요?
A. jdbc 드라이버를 datanode에 설치하실 필요는 없으며, Sqoop 커맨드를 사용하시는 서버에 jdbc 드라이버가 있으면 사용할 수 있습니다.