EXCELSIOR

스쿱(sqoop) 설치 본문

DataBase/Hadoop

스쿱(sqoop) 설치

Excelsior-JH 2016. 12. 7. 18:53

스쿱은 현재 스쿱1과 스쿱2라는 두 가지 버전이 있다.

 스쿱1

스쿱2

 클라이언트 모델

클라이언트/서버 모델

 CLI로 스쿱 실행

CLI, 웹, RESTAPI를 통한 스쿱 실행

 하둡 보안 적용

하둡 보안, 데이터베이스와 같은 외부 시스템 접근 권한 제어 가능

 리소스 관리 정책 없음

리소스 관리 정책 설정 가능


두 버전의 가장 큰 차이점은 클라이언트/서버 모델의 도입니다. 스쿱1은 클라이언트마다 스쿱과 JDBC 드라이버를 설치하지만 스쿱2는 스쿱 서버에만 스쿱과 JDBC를 설치하면 된다. 이번 포스팅에서는 교재에 나와있는 대로 스쿱1을 설치해 본다.


1. 스쿱 설치 및 실행

http://mirror.apache-kr.org/sqoop/ 에서 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz파일을 다운로드 한다.

다운로드가 완료되었으면 압축을 푼다. (저는 /usr/local/hadoop2/ 에다가 풀었습니다.)

/usr/local/hadoop2# tar xvfz sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 

압축이 해제되면 스쿱 설치 디렉터리에서 sqoop 명령어를 실행한다.

/usr/local/hadoop2# cd sqoop-1.4.6.bin__hadoop-2.0.4-alpha
/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# bin/sqoop

#결과 
Error: /usr/local/hadoop-2.7.3/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/../../hadoop does not exist!
Please set $HADOOP_COMMON_HOME to the root of your Hadoop installation.

위와 같은 오류가 발생한 이유는 스쿱용 하둡 디렉터리를 설정하지 않아서 발생한 오류다. 스쿱이 맵리듀스 잡 실행을 요청하려면 하둡의 홈 디렉터리를 알고 있어야 한다. 스쿱은 스크립트 실행 환경변수를 conf 디렉터리의 sqoop-env.sh에서 설정한다.

스쿱을 처음 설치한 경우에는 템플릿 파일 밖에 없으므로 다음과 같이 sqoop-env.sh를 생성한 뒤 다음과 같이 설정한다.

/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# mv conf/sqoop-env-template.sh conf/sqoop-env.sh
/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# vi conf/sqoop-env.sh

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop-2.7.3

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.7.3

sqoop-env.sh를 수정한 뒤 다시 sqoop 명령어를 실행해 본다. 아래와 Warning이 여러 개 나타나는데 이는 하이브 연동을 위한 HCatalog, 어큐물로 및 HBase 연동을 위한 주키퍼 경로가 설정돼 있지 않다는 메시지 이다.

스쿱은 하둡 경로만 설정되어 있으면 기본 기능은 수행할 수 있다.

/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# bin/sqoop
Warning: /usr/local/hadoop-2.7.3/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/../../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/hadoop-2.7.3/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/hadoop-2.7.3/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/hadoop-2.7.3/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/../../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
Try 'sqoop help' for usage.

다음으로 sqoop help를 실행해본다. help명령어를 실행하면 다음과 같이 다양한 스쿱 명령어가 출력된다.

/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# bin/sqoop help

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

help뒤에 해당 commands들을 입력하면 다음과 같이 구체적인 사용법이 출력된다.

/usr/local/hadoop2/sqoop-1.4.6.bin__hadoop-2.0.4-alpha# bin/sqoop help import
usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]

Common arguments:
   --connect                          Specify JDBC connect
                                                string
   --connection-manager             Specify connection manager
                                                class name
   --connection-param-file     Specify connection
                                                parameters file
   --driver                         Manually specify JDBC
                                                driver class to use
   --hadoop-home                          Override
                                                $HADOOP_MAPRED_HOME_ARG
   --hadoop-mapred-home                    Override
                                                $HADOOP_MAPRED_HOME_ARG
   --help                                       Print usage instructions
-P                                              Read password from console
   --password                         Set authentication
                                                password
   --password-alias             Credential provider
                                                password alias
   --password-file               Set authentication
                                                password file path
   --relaxed-isolation                          Use read-uncommitted
                                                isolation for imports
   --skip-dist-cache                            Skip copying jars to
                                                distributed cache
   --username                         Set authentication
                                                username
   --verbose                                    Print more information
                                                while working
(생략)

마지막으로 MS-SQL욜 JDBC 드라이버를 설치한다. https://www.microsoft.com/ko-KR/download/details.aspx?id=11774 에 접속하여 다운로드 받은 뒤 jar파일을 스쿱의 lib 디렉터리로 복사하면 된다.

'DataBase > Hadoop' 카테고리의 다른 글

SQL-On-Hadoop(SQL-온-하둡) 개념 및 종류  (0) 2016.12.09
스쿱(sqoop)과 MS-SQL 연동하기  (0) 2016.12.08
아파치 스쿱(Apache Sqoop)  (1) 2016.12.07
하이브 버킷(Hive Bucket)  (0) 2016.11.30
하이브 조인(Hive Join)  (0) 2016.11.30
Comments