sqoop2安裝與配置以及常見問題


來源於   https://blog.csdn.net/weixin_43241054/article/details/89036669

一、sqoop2的安裝:

安裝sqoop2前,首先安裝配置好Hadoop,sqoop2是在Hadoop的基礎上運行的。

1.sqoop2的版本:sqoop-1.99.7-bin-hadoop200.tar.gz

   解壓縮即可: tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz

2.環境變量的配置:vi /etc/profile

   添加(根據自己的安裝路徑):

             export SQOOP_HOME=/data/software/sqoop-1.99.7-bin-hadoop200
              export CATALINA_HOME=$SQOOP_HOME/server
              export PATH=$SQOOP_HOME/bin:$PATH 
3.修改Hadoop下的core-site.xml文件

添加:

特別要注意的是sqoop2是提交任務的用戶名,這里要改成你提交任務的用戶,否則會報
org.apache.hadoop.security.authorize.AuthorizationException: User: root is not allowed to impersonate root

<property>
  <name>hadoop.proxyuser.sqoop2.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.sqoop2.groups</name>
  <value>*</value>
</property>
4.配置文件vi conf/sqoop.properties

(1)把$HADOOP_HOME替換為自己實際路徑

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=$HADOOP_HOME/etc/hadoop  
 (2)將以下注釋放開

org.apache.sqoop.security.authentication.type=SIMPLE
org.apache.sqoop.security.authentication.handler=org.apache.sqoop.security.authentication.SimpleAuthenticationHandler
org.apache.sqoop.security.authentication.anonymous=true
(3)創建目錄mkdir /home/hadoop/sqoop/logs

     將@LOGDIR@替換為/home/hadoop/sqoop/logs;BASEDIR替換為/home/hadoop/sqoop

5.下載mysql JDBC Driver 到sqoop/server/lib 下

cp  mysql-connector-java-xxx.jar  sqoop/server/lib (若安裝了hive,在/home/hadoop/Hive/apache-hive-2.3.3-bin/lib目錄下)。
6.初始化:bin/sqoop2-tool upgrade

7.啟動/關閉sqoop server:

    sqoop.sh server start/stop

8.啟動交互命令:

    sqoop2-shell      出現sqoop:000> 

二、sqoop2的應用

1.啟動Hadoop和sqoop server,

查看進程命令jps:可以看到以下進程

 

2898 SecondaryNameNode
3219 NodeManager
2643 NameNode
3109 ResourceManager
2742 DataNode
5798 SqoopShell
10153 Jps
3644 SqoopJettyServer
2.設置端口

   set server --host localhost --port 12000 --webapp sqoop

3.創建連接(show connector)

 

(1)創建MySQL連接

create link -connector generic-jdbc-connector

Creating link for connector with name generic-jdbc-connector
Please fill following values to create new link object
Name: First Link    自己起連接名

Database connection

Driver class: com.mysql.jdbc.Driver   
Connection String: jdbc:mysql://localhost:3306/test   test為數據庫
Username: root
Password: ******
Fetch Size: 100
Connection Properties: 
There are currently 0 values in the map:
entry# 

SQL Dialect

Identifier enclose:  注意  這里不能直接回車!要打一個空格符號!因為如果不打,查詢mysql表的時候會在表上加上“”,導致查詢出錯!
New link was successfully created with validation status OK and name First Link


#HDFS Link
sqoop:000> create link -connector hdfs-connector
Creating link for connector with name hdfs-connector
Please fill following values to create new link object
Name: Second Link

HDFS cluster

URI: hdfs://xiaobin:9000/
Conf directory: /home/hadoop/etc/hadoop    hadoop配置文件目錄
Additional configs:: 
There are currently 0 values in the map:
entry# 
New link was successfully created with validation status OK and name Second Link
(2)創建job

create job -f First Link -t Second Link
Creating job for links with from name First Link and to name Second Link
Please fill following values to create new job object
Name: Sqoopy   自己起job名

Database source

Schema name: test   數據庫名
Table name: emp     表名
SQL statement: 
Column names: 
There are currently 0 values in the list:
element# 
Partition column: 
Partition column nullable: 
Boundary query: 

Incremental read

Check column: 
Last value: 

Target configuration

Override null value: 
Null value: 
File format: 
  0 : TEXT_FILE
  1 : SEQUENCE_FILE
  2 : PARQUET_FILE
Choose: 0
Compression codec: 
  0 : NONE
  1 : DEFAULT
  2 : DEFLATE
  3 : GZIP
  4 : BZIP2
  5 : LZO
  6 : LZ4
  7 : SNAPPY
  8 : CUSTOM
Choose: 0
Custom codec: 
Output directory: /test/sqoop   Hadoop的目錄  注意必須為空,報錯Invalid input/output directory - Output directory is not empty
Append mode: 

Throttling resources

Extractors: 
Loaders: 

Classpath configuration

Extra mapper jars: 
There are currently 0 values in the list:
element# 
New job was successfully created with validation status OK  and name Sqoopy

(3)啟動/關閉/查看job

start/stop/status job -name Sqoopy    -name也可改為-n
    start job -name Sqoopy -s  加-s,顯示執行進度
(4)瀏覽器查看狀態

     http://192.168.159.11:8088

三、常見錯誤

(1)org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform... using builtin-java     classes where applicable

原因:hadoop的lib庫沒有設置環境變量,添加環境變量如下:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
 (2)Message: GENERIC_JDBC_CONNECTOR_0016:Can't fetch schema - 

原因:配置job時,Schema name:配置錯誤導致的,Schema name在MySQL中為數據庫名,在Oracle中為用戶名。

(3)User: root is not allowed to impersonate root

原因:未配置文件core-site.xml,添加:

<property>
  <name>hadoop.proxyuser.sqoop2.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.sqoop2.groups</name>
  <value>*</value>
</property>
(4)Message: GENERIC_HDFS_CONNECTOR_0007:Invalid input/output directory - Unexpected exception

原因:文件夾沒有權限或者無此文件夾,或者文件夾不為空。

(5)Message: COMMON_0023:Unable to create new job data

原因:可能創建的job名已經存在。

(6)sqoop:000> stop job -n sql_hdfs
Exception has occurred during processing command 
Exception: org.apache.sqoop.common.SqoopException Message: MAPREDUCE_0003:Can't get RunningJob instance -

原因:由於沒有啟動historyserver引起的

解決辦法:在mapred-site.xml配置文件中添加:

<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-allinone-200-123.wdcloud.locl:10020</value>
</property>
 執行命令:mr-jobhistory-daemon.sh start historyserver 

(7)出現以下情況:

 

 

 

 

ACCEPTED: waiting for AM container to be allocated, launched and register with RM.

這種情況可能是因為資源有限,保證硬盤使用率在90%以下。
————————————————
版權聲明:本文為CSDN博主「磨刀大神」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43241054/java/article/details/89036669


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM