본문 바로가기

[Data Engineering]/[Sqoop]

[Sqoop] Sqoop-Intro

728x90

[Apache Sqoop이란 무엇인가]

 

GitHub - apache/sqoop: Mirror of Apache Sqoop

Mirror of Apache Sqoop. Contribute to apache/sqoop development by creating an account on GitHub.

github.com

  BigData Ingesion에서 대표적으로 사용하는 툴 중에 Apach sqoop이 있다. 데이터 파이프라인을 만들어보면서 Sqoop을 접할 기회가 꽤 있었는데, 이번에는 Sqoop에 대해 정리하고자 한다.

  스쿱은 클라우데라에서 개발했으며, 현재 아파치 오픈소스 프로젝트로 공개되어 있다. 간단하게 핵심만 말하자면, 스쿱(sqoop)은 관계형 데이터베이스와 하둡 에코시스템 간의 데이터 변환을 가능케 도와주는 툴이다. 스쿱을 이용하면 관계형 데이터베이스(Mysql, PostgreSQL, ..)의 데이터를 HDFS, Hive, Hbase에 임포트(import)하거나, 반대로 관계형 DB로 익스포트(export)할 수 있다. 이 Import, Export 과정에서 MapReduce를 이용하며 병렬성과 장애허용이라는 장점을 가져왔다. 

Import와 Export에 대한 sqoop의 동작방식은 여기에 잘 설명되어 있다.

 

아파치 스쿱(Apache Sqoop)

스쿱(sqoop)은 관계형 데이터베이스와 하둡 사이에서 데이터 이관을 지원하는 툴이다. 스쿱을 이용하면 관계형 데이터베이스의 데이터를 HDFS, 하이브, Hbase에 임포트(import)하거나, 반대로 관계형 D

excelsior-cjh.tistory.com

추가로, 나는 Udemy에서 강의를 듣고 있는데, 실제 import를 했을 때 각각의 log가 무슨 의미인지를 기록하려 한다.

1. 시작은 CodeGenTool이다. 이를 이용해서 백그라운드에서 작업이 시작된다.
2. 그다음 SqlManager에서 SQL 쿼리 하나가 돌아가는데, 확인해 보면 1개 row만 Select하게 되어있다. 이는 1개의 row로 백단에서 돌아가는 java program에 이 테이블의 메타데이터를 제공하기 충분하기 때문이다.
3. 그다음 import를 위한 jar file을 만들게 된다. 그러면 이 file은 yarn-cluster(Resource) manager에 제출되고, Job을 실행하게 된다.

실제로 yarn resource-manager에 들어가보면 로그를 확인할 수 있다.

4. 이후에는  각각의 File-System counters, Job counters, Map-reduce Framework에 대한 정보를 확인할 수 있다.

 


[Sqoop을 사용해보자!]  

# Sqoop 설치과정
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
tar -xvf mysql-connector-java-5.1.30.tar.gz
sudo mv mysql-connector-java-5.1.30/mysql-connector-java-5.1.30-bin.jar /$SQOOP_HOME/lib

cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
echo export HADOOP_COMMON_HOME=/usr/lib/hadoop > sqoop-env.sh
echo export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce > sqoop-env.sh
echo export SQOOP_HOME=~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha export PATH=$PATH:$SQOOP_HOME/bin>~/.bashrc
source ~/.bashrc



sqoop import --connect jdbc:mysql://localhost/retail_db --username root --password admin123 --table customers
export SQOOP_HOME=~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha export PATH=$PATH:$SQOOP_HOME/bin

  이번에는 Sqoop을 활용해서 데이터를 삽입하는 과정이다. 다음과 같이 sqoop이 설치되고, mysql db가 있다고 가정하자.  

  customers안의 데이터를 hdfs로 옮기는 과정은 다음의 커멘드 한 줄로 이뤄진다.

sqoop import --connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password admin123 \
--table customers \
--delete-target-dir # option if there is 이미 존재하는 dir

  생각보다 너무 간단하게 import할 수 있었다. 다음에는 Parquet, Avro 포맷에 대해 알아보자.

 

728x90

'[Data Engineering] > [Sqoop]' 카테고리의 다른 글

[Sqoop] Avro File  (0) 2021.09.21
[Sqoop] Parquet File  (0) 2021.09.20
[Sqoop] Warehouse / Target Dir  (0) 2021.09.20