Sqoop

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

RDBMS와 Hadoop간의 데이터 전송 솔루션인 Sqoop을 정리 합니다.

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'

참고 문헌