[Sqoop] 설치 및 시작

2020. 6. 25. 11:24

하둡 기준 import, export

 

스쿱 다운로드

 

Sqoop은 1버전이 복잡해서 간소한 것이 2버전이라 1버전으로

dn01의 root 계정에서

# cd /tmp

# wget http://mirror.apache-kr.org/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

 

# tar xzvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

# mkdir -p /opt/sqoop/1.4.7

# mv sqoop-1.4.7.bin__hadoop-2.6.0/* /opt/sqoop/1.4.7/

# ln -s /opt/sqoop/1.4.7 /opt/sqoop/current

 

 

MYSQL Connector 다운로드 및 sqoop 의  lib로 복사

sqoop은 데이터베이스 드라이버가 필요하기 때문에 Connector 필요함

# cd /tmp

# wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz

# tar xzvf mysql-connector-java-5.1.38.tar.gz

# cd mysql-connector-java-5.1.38

# mv mysql-connector-java-5.1.38-bin.jar /opt/sqoop/current/lib/

# cd ~

 

소유권 hadoop에게 넘겨주기

# chown -R hadoop:hadoop /opt/sqoop/

# su - hadoop

 

hadoop 계정에서 환경변수 설정

# vi ~/.bash_profile

맨 밑에 추가

#### SQOOP 1.4.7 ######################
        export SQOOP_HOME=/opt/sqoop/current
        export PATH=$PATH:$SQOOP_HOME/bin
#### SQOOP 1.4.7 ######################

저장하고 확인하기 이후 적용

# source ~/.bash_profile

 

스쿱 환경설정

# cd $SQOOP_HOME/conf

# mv sqoop-env-template.sh sqoop-env.sh

# vi sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/hadoop/current

export HADOOP_MAPRED_HOME=/opt/hadoop/current

export HIVE_HOME=/opt/hive/current

맞는 값 주석 풀고 입력

저장 후 확인

 

스쿱 설치 확인

# sqoop-version

 

스쿱 라이브러리를 하둡에 복사

# cd $SQOOP_HOME

# cp sqoop-1.4.7.jar /opt/hadoop/current/share/hadoop/tools/lib/

mariadb active인지 확인

# systemctl status mariadb.service

 

dn02에서 

# ssh dn01

# mysql -u root -p

> create database sqoopdemo;

> use sqoopdemo;

create table departments(
department_id int(10) unsigned not null,
department_name varchar(30) not null,
primary key (department_id));

> show tables;

insert into departments (department_id,department_name) values
(1,"Fitness"),(2,"Footware"),(3,"Apparel"),(4,"Golf"),(5,"Outdoor"),(6,"Fanshop");

dn01 에서

RDBMS -> Hadoop (import)
-- 1) 데이터베이스명 가져오기 (hive 계정에 접속)
sqoop list-databases --connect jdbc:mysql://dn01 --username hive --password hive

-- 2) 테이블명 가져오기 (hive 계정에 접속)
sqoop list-tables --connect jdbc:mysql://dn01/sqoopdemo --username hive --password hive

-- 3) 테이블의 데이터를 HDFS에 가져오기(**)
sqoop import --connect jdbc:mysql://dn01/sqoopdemo --table departments --username hive --password hive

# hdfs dfs -ls /user/hadoop

분산되어 저장되었다.
한번에 보기

Hadoop -> RDBMS (export)

RDBMS에 형식에 맞는 테이블 구조가 존재해야함

dn02의 mariadb에서

> create table dept like departments;

sqoop export --connect jdbc:mysql://dn01/sqoopdemo --table dept --username hive --password hive --export-dir /user/hadoop/departments

성공적으로 들어옴

dept테이블 hadoop으로

특정 값만 import하기

> insert into dept values (7,"IT")

import

결과