상단

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](--hive-overwrite.md)
       --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](Hadoop.md)의 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'
 

참고 문헌


 
 

분류: BigData

최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :