Hadoop

Sqoop 설치 (feat. Linux)

집못가는프로그래머 2021. 9. 27. 18:01

Sqoop - CLI (Command Line Interface),   # CLI (Command Line Interface)  < - >  GUI (Graphic User Interface)

*Sq : SQL,   oop : Hadoop   

  -> Sq + oop = Sqoop

 

Sqoop은 hadoop의 hdfs영역에 파일을 저장/처리하며 sql의 db와 hdfs를 연동하여 파일을 저장/처리하게 해준다.

 

**설치

1. http://archive.apache.org/dist/sqoop/

 

Index of /dist/sqoop

 

archive.apache.org

위 링크에서 최신버전의 *.gz 파일을 다운받는다. (작성 시점 최신버전 : sqoop-1.4.7.tar.gz)

 

2. 압축해제

tar -xvzf 파일명  (e.g.  tar -xvzf sqoop-1.4.7.tar.gz)

 

3. 파일명 간소화

예) sqoop-1.4.7.bin_hadoop-2.6.0.tar  ->  sqoop-1.4.7

=> mv sqoop-1.4.7.bin_hadoop-2.6.0.tar sqoop-1.4.7

 

4. 압축 해제한 디렉토리 위치 옮기기

mv sqoop-1.4.7 ~/

 

5. .bashrc 편집

-> nano .bashrc

-> export SQOOP_HOME=/home/hdoop/sqoop-1.4.7
    export PATH=$PATH:$SQOOP_HOME/bin

위 두줄을 export 마지막 부분에 추가

-> 저장(Ctrl+O) 후 나가기(Ctrl+x)

-> source .bashrc  (.bashrc 실행 )

 


Sqoop은 java기반 프로그램이다. 그래서 Sqoop에서 MySQL DB를 연동하려면 JDBC(Java DataBase Connectivity) 규칙을 따라야한다. 그래서 Sqoop에서 MySQL로 접근하려면 JDBC Driver가 있어야한다.

- Driver를 인식시키는 방법

1. 설정 파일 편집

2. Sqoop의 지정된 디렉토리에 Driver를 넣기 (Sqoop의 lib 디렉토리)

 

여기선 2번의 방법을 이용할건데

현재 Sqoop 최신 버전의 lib 디렉토리에 commons-lang3-3.4.jar 파일에서 오류가 있다.

그래서 예전버전(ver 2.6)의 commons-lang-2.6.jar 파일을 대신 이용해야한다. 


6. Sqoop/lib 디렉토리의 commons-lang3-3.4.jar 비활성화

- cd sqoop-1.4.7/lib

- mv commons-lang3-3.4.jar commons-lang3-3.4.jar.bak   (뒤에 .bak을 붙혀줌으로서 파일의 확장명을 바꾼것)

 

7. commons-lang-2.6.jar 다운로드

https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/

 

Central Repository: commons-lang/commons-lang/2.6

 

repo1.maven.org

위 링크에서 2.6버전을 다운받는다

 

8. 다운받은 2.6 버전을 Sqoop/lib 안에 넣는다

mv commons-lang-2.6.jar ~/Sqoop-1.4.7/lib

 

9. mysql-connector도 Sqoop의 lib 디렉토리에 넣어야 한다. (MySQL 설치할 때 다운로드 했던 파일)

cp mysql-connector-java-8.0.24.jar ~/Sqoop-1.4.7/lib

 

10. Hadoop 재실행

- stop-all.sh

- start-all.sh

 

11. Sqoop이 잘 작동하는지 확인

- sqoop list-databases --connect jdbc:mysql://localhost:3306/?serverTimezone=UTC --username user1 --password user1pwd

 

위의 명령어를 실행하면 현재 접속한 MySQL의 DB에 있는 리스트가 뜬다.

출력 일부(MySQL Database)