CentOS搭建Sqoop環境


          Sqoop是一個用來將Hadoop(Hive、HBase)和關系型數據庫中的數據相互轉移的工具,可以將一個關系 型數據庫(例如:MySQL ,Oracle ,Postgres等)中的數據導入到Hadoop的HDFS中,也可以將HDFS的數據 導入到關系型數據庫中。
 

Sqoop安裝

1、下載Sqoop安裝包

在Sqoop官網下載安裝包,本次使用的是sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz安裝在/usr/local目錄下,下載地址為 http://apache.fayea.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

2、解壓Sqoop安裝包

1 #進入sqoop安裝目錄
2 [hadoop@BigData ~]$ cd /usr/local
3 #解壓sqoop安裝包
4 [hadoop@BigData ~]$ tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
5 #刪除sqoop安裝包
6 [hadoop@BigData ~]$ rm -rf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
7 #重命名sqoop目錄名
8 [hadoop@BigData ~]$ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

3、配置Sqoop環境變量

1 #配置Sqoop環境變量
2 [root@BigData ~]# vi /etc/profile
3 export SQOOP_HOME=/usr/local/sqoop
4 export PATH=$PATH:$SQOOP_HOME/bin
5 #使環境變量配置生效
6 [root@BigData ~]#/etc/profile

4、將關系型數據庫驅動包放到sqoop/lib目錄下

MySql:mysql-connector-java-5.1.30.jar
Oracle: ojdbc14.jar

5、修改Sqoop配置文件

 1 [hadoop@BigData ~]$ mv sqoop-env-template.sh sqoop-env.sh
 2 [hadoop@BigData ~]$ vi sqoop-env.sh
 3 #Set path to where bin/hadoop is available
 4 export HADOOP_COMMON_HOME=/usr/local/hadoop
 5 #Set path to where hadoop-*-core.jar is available
 6 export HADOOP_MAPRED_HOME=/usr/local/hadoop
 7 #set the path to where bin/hbase is available
 8 export HBASE_HOME=/usr/local/hbase
 9 #Set the path to where bin/hive is available
10 export HIVE_HOME=/usr/local/hive
11 #Set the path for where zookeper config dir is
12 export ZOOCFGDIR=/usr/local/zookeeper
到此,sqoop環境就已搭建成功!

Sqoop測試

1、導入MySql數據到hdfs中

mysql數據庫中sqoop庫中出來test表,表結構及數據如下所示:
id username gender telephone email
1 test_01 Female 138xxxx0903 test_01@example.com
2 test_02 Male 187xxxx9364 test_02@example.com
該命令執行結束后,觀察hdfs的目錄/user/{USER_NAME},下面會有一個文件夾是test, 里面有個文件是part-m-00000。該文件的內容就是數據表aa的內容,字段之間是使用制表符 分割的。

2、hdfs導出數據到mysql

把上一步導入到hdfs的數據導出到mysql中。我們已知該文件使用制表符 分隔的。那么,我們現在數據庫sqoop中創建一個數據表hive,其表結構和test表結構一樣。然后執行 下面的命令
1 [hadoop@BigData ~]$sqoop export --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table hive --export-dir '/user/hadoop/test/part-m-00000'--fields-terminated-by '\t'
參數解釋:
參數 解釋
sqoop sqoop命令
export 導出操作
--connect jdbc:mysql://ip:3306/sqoop 連接mysql的url
--username 連接mysql的用戶名
--password 連接mysql的密碼
--table mysql中的表,即將被導入的表名稱
--export-dir hive中被導出的文件
--fields-terminated-by 指定輸出文件中的行的字段分隔符
查看sqoop庫中的hive表中是否已經有兩條數據
id username gender telephone email
1 test_01 Female 138xxxx0903 test_01@example.com
2 test_02 Male 187xxxx9364 test_02@example.com

3、Mysql數據導入到Hive

 比如把表test數據導入到Hive中,增加參數 –hive-import
1 [hadoop@BigData ~]$ sqoop import --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table test --warehouse-dir /usr/local/hive/warehouse --hive-import --create-hive-table

進入Hive Client驗證導入的數據:

1 [hadoop@BigData bin]$ hive client
2 hive> show tables;
3 user_information
4 test
5 login_log
6 hive> select * from test;
7 1   test_01 Female  138xxxx0903 test_01@example.com
8 2   test_02 Male    187xxxx9364 test_02@example.com

 4、Mysql數據導入到Hbase

把表test數據導入到HBase,指定Hbase中表名為demo_sqoop2hbase的命令

1 [hadoop@BigData ~]$ sqoop  import --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table test --hbase-table demo_sqoop2hbase --hbase-create-table --hbase-row-key id --column-family url

hbase shell中驗證導入的數據:

1 [hadoop@BigData bin]$ hbase shell
2 hbase(main):009:0>list
3 demo_sqoop2hbase


免責聲明!

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



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