Sqoop
둘러보기로 가기
검색하러 가기
RDBMS와 Hadoop간의 데이터 전송 솔루션인 Sqoop을 정리 합니다.
- 홈페이지 : http://sqoop.apache.org/
- 다운로드 : http://www.apache.org/dyn/closer.cgi/sqoop/, http://www.apache.org/dyn/closer.cgi/sqoop/1.4.3
- 라이선스 : Apache 2.0
- 지원 플랫폼 : Java
Sqoop 개요
- RDBMS와 HDFS간의 데이터 교환 방법 제공
- HBase에 데이터 저장 , Hive로 데이터 전달 기능 제공
CentOS에서 Sqoop 설치
사전 준비 사항
- Hive 0.11.0
- Pig 0.11.1
- Hadoop 1.1.2
- Java 1.7.0_19
- CentOS 6.4, 64 bits
설치
- Sqoop 설치 파일을 다운로드 합니다.
//--- wget http://www.us.apache.org/dist/sqoop/1.4.3/sqoop-1.4.3.tar.gz wget http://www.us.apache.org/dist/sqoop/1.4.3/sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz tar zxvf ../sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz chown -R root:root sqoop-1.4.3.bin__hadoop-1.0.0 mv sqoop-1.4.3.bin__hadoop-1.0.0 /appl/sqoop
- 적합한 JDBC Driver를 복사 합니다.
cp /cloudnas/install/mysql-connector-java-5.1.25-bin.jar /appl/sqoop/lib
- vi ~/.bashrc
export SQOOP_HOME=/appl/sqoop export PATH=$PATH:$SQOOP_HOME/bin export HADOOP_COMMON_HOME=/appl/hadoop export HADOOP_MAPRED_HOME=/appl/hadoop export HBASE_HOME=/appl/hbase export HIVE_HOME=/appl/hive export ZOOCFGDIR=/appl/zookeeper/conf
- 설치 확인
sqoop version sqoop help sqoop import
Sqoop Architecture
Sqoop 매뉴얼
- Import to HDFS (RDBMS -> HDFS )
sqoop import --connect 'jdbc:mysql://localhost:3306/$database?useUnicode=true&characterEncoding=UTF-8' --driver org.gjt.mm.mysql.Driver --username $user --password $password --num-mappers 1 --table $table
- codegen ($table.java 파일 생성)
sqoop codegen --connect 'jdbc:mysql://localhost:3306/$database?useUnicode=true&characterEncoding=UTF-8' --driver org.gjt.mm.mysql.Driver --username $user --password $password --table $table --class-name $table
- Import to Hive (RDBMS -> Hive)
- HDFS 폴더 : /user/$linuxUser/$table
- Hive Table : $table
sqoop import --connect 'jdbc:mysql://localhost:3306/$database?useUnicode=true&characterEncoding=UTF-8' --driver org.gjt.mm.mysql.Driver --username $user --password $password --num-mappers 1 --table $table --hive-table $table --hive-import [--hive-overwrite] --create-hive-table --direct --fields-terminated-by '\t' --lines-terminated-by '\n'
- 오류 : 이미 폴더가 있습니다.
hadoop dfs -rmr /user/$linuxUser/$table
- 오류 : Safe Mode 입니다.
hadoop dfsadmin -safemode leave
- 오류 : connetion refused : Hadoop의 Name Node 설정이 모드에 맞도록 되어 있는지 확인 합니다.
- Hive table 생성
sqoop create-hive-table --connect 'jdbc:mysql://localhost:3306/$database?useUnicode=true&characterEncoding=UTF-8' --driver org.gjt.mm.mysql.Driver --username $user --password $password --table $table --fields-terminated-by ','
- Export (Hive -> RDBMS)
sqoop export --connect 'jdbc:mysql://localhost:3306/$database?useUnicode=true&characterEncoding=UTF-8' --driver org.gjt.mm.mysql.Driver --username $user --password $password --num-mappers 1 --table $table --export-dir 'hdfs://user/hive/warehouse/$table' --input-fields-terminated-by '\\0001'