Sqoop2搭建及使用


1. 下載並安裝配置Sqoop

【需要的環境:Hadoop,Java】

首先  Hadoop版本2.7.2

20161013

找了篇Sqoop的文章就開擼  結果發現什么1.3,1.9,又有什么Sqoop1,Sqoop2.亂了。

先是使用的1.3,兩個多小時,各種失敗。發現還有一個與hadoop的版本兼容問題。

 

下午立即開始使用官網的Sqoop2,發現只有1.99.7,先用吧

雖然好了一點,但還是各種問題,一天過去了。。

注意: sqoop1的1.4.x及以下版本是與hadoop-2.6.x以下兼容,sqoop2是與hadoop-2.6.0+兼容,千萬不能弄錯!

還有,下載的這個壓縮包里面都有一個doc文件夾,里面放着文檔,因為版本較多且兼容問題嚴重,所以一定要參照這個文檔安裝和配置! 

 

20161014 

昨天搗鼓了一天,先是Sqoop1.3,然后用1.99.7.結果各種問題;

今天早上又去官網游盪了一下,發現這個1.99.7還不是正式發行版,不能放到生產環境的,真夠郁悶,沒辦法,打算嘗試一下1.99.6吧。

然而 官網已經把1.99.6的安裝包去掉了,只能去網上找了一份。試了一下  順暢了許多。

具體安裝配置過程:(sqoop的shell命令是在$SQOOP_HOME/bin目錄下)

  1. 下載解壓
  2. 配置~/.bashrc,然后執行 source ~/.bashrc 使變更即刻生效
    export PATH=.......:$SQOOP_HOME/bin:$PATH  #將紅字部分插入原來的$PATH前面即可
    export SQOOP_HOME=/home/hadoop/sqoop       #Sqoop根目錄
    export CATALINE_BASE=$SQOOP_HOME/server
    export LOGDIR=$SQOOP_HOME/logs             #log目錄  
  3. 配置sqoop server
    1. $SQOOP_HOME/server/conf/catalina.properties文件,修改common.loader屬性,引用$HADOOP_HOME/share/hadoop/* 和 */lib
      common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/common/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/common/lib/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/hdfs/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/hdfs/lib/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/lib/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/yarn/*.jar,/home/hadoop/hadoop-2.7.2/share/hadoop/yarn/lib/*.jar
    2. $SQOOP_HOME/server/conf/sqoop.properties
      org.apache.sqoop.submission.engine.mapreduce.configuration.directory=$HADOOP_HOME/etc/hadoop  #紅字部分要替換成具體的路徑,切記!
  4. 修改hadoop配置文件core-site.xml
    <property>
      <name>hadoop.proxyuser.$SERVER_USER.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.$SERVER_USER.groups</name>
      <value>*</value>
    </property>
  5. 驗證sqoop2服務器的配置情況 
    sqoop2-tool verify  #如果提示successful 就可以進行下一步了,否則需要查看錯誤信息和日志文件

到這里 配置就完成了。 


Sqoop1.996命令

參考:http://www.mamicode.com/info-detail-411853.html

Show

  • show server --[all,host,port,webapp] #展示服務端信息
  • show option --name verbose  #展示客戶端配置
  • show version --[all,client,server,protocol]
  • show connector [--all]
  • show connection [--all,--xid 3]
  • show job [--all,--jid 3]
  • show link [--all, --lid3]

Update

  • update connection --xid 2
  • update job --jid 2
  • update link --lid 3

Delete

  • delete connection --xid 3
  • delete job --jid 1
  • delete link --lid 2

Clone

  • clone connection --xid 2
  • clone job --jid 2
  • clone link --lid 2

Submission

  • start job --jid 2 -s
  • stop job --jid 2
  • status job --jid 2

  


開始數據傳輸 

 開始之前需要准備幾個jar包

①如果數據庫是MSSQL的話,需要下載這個SqlServerJDBC驅動SQL Server JDBC Driver & Connector 

解壓后將lib里面的jar文件拷貝到sqoop安裝目錄的server/lib下面

②mysql的話,需要下載mysql-connector-java   

  1. 啟動  Sqoop2包含了server和client,所以需要先啟動server
  2. sqoop2.sh server start   #服務關閉:sqoop2-server stop 
  3. 以交互模式打開client 
    sqoop2-shell
  4. 配置客戶端使用指定的Sqoop server
    set server --host your.host.com --port 12000 --webapp sqoop   #紅字部分替換成自己的Sqoop服務器 一般用localhost即可  

 

創建數據庫link

JDBC Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver  #驅動名稱
JDBC Connection String: jdbc:sqlserver://192.168.1.212:1433;DatabaseName=Test   #格式與mysql略有出入,並且這是MSSQL2005以上的格式,2000的話 還有些區別
Username: sa
Password: *************
JDBC Connection Properties: 
There are currently 1 values in the map:
protocol = tcp
entry#

創建hdfs link與mysql的方式一致

 

創建job與mysql僅僅有一點區別

就是Schema name: dbName.dbo  比mysql多了紅字部分

 


Sqoop + MySql + Hadoop(HBase)

創建數據庫link

Using Connector generic-jdbc-connector with id 4
  Link configuration
    JDBC Driver Class: com.mysql.jdbc.Driver
    JDBC Connection String: jdbc:mysql://192.168.1.333:3306/someDB
    Username: root
    Password: 123
    JDBC Connection Properties: 
      protocol = tcp

 

創建hdfs link

Using Connector hdfs-connector with id 3
  Link configuration
    HDFS URI: hdfs://hdfs nameservice:port/  #使用hadoop配置文件 core-site.xml中fs.defaultFS的值即可
    Hadoop conf directory: /home/hadoop/hadoop/etc/hadoop  #hadoop配置文件的路徑

 

創建Job

Job with id 1 and name mysql2hdfs (Enabled: true, Created by hadoop at 16-10-17 下午3:56, Updated by hadoop at 16-10-17 下午4:48)
  Throttling resources
    Extractors: 2
    Loaders: 2
From link: 1
  From database configuration
    Schema name: dbName
    Table name: targetTableName
    Table SQL statement: 
    Table column names: 
    Partition column name: 
    Null value allowed for the partition column: 
    Boundary query: 
  Incremental read
    Check column: 
    Last value: 
To link: 2
  To HDFS configuration
    Override null value: 
    Null value: 
    Output format: TEXT_FILE
    Compression format: NONE
    Custom compression format: 
    Output directory: hdfs:/mysqlData/sqoopTableName  #要在hdfs中存放的路徑
    Append mode: 

 

注意事項: 

1.在執行job之前  最好執行命令

set option --name verbose --value true

這樣如果執行出現問題,會把詳細日志打印出來,一目了然。

2.一個job如果執行成功,在hdfs的指定目錄下就會有生成的文件,如果想重新start一遍,需要把生成的文件刪除才行

$HADOOP_HOME/bin/hadoop dfs -rm /mysqlData/sqoopTableName/*   #之前在job中設置的hdfs路徑

查看生成的文件

$HADOOP_HOME/bin/hadoop dfs -cat /mysqlData/sqoopTableName/*

 

[hadoop@hadoop1 bin]$ ./hadoop dfs -cat /db_data/Cities/*
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

1,'青島','0530'
2,'濟南','0531'

[hadoop@hadoop1 bin]$ 

 

To HBase:Sqoop1與Sqoop2的支持程度 

Sqoop1的部署及使用

Sqoop2在1.99.6開始通過KiteConnector的方式在一定程度上支持了HBase的讀寫 傳送門

 


免責聲明!

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



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