第一章 Sqoop是什麼
介紹
-
Apache Sqoop(TM)是一種旨在Apache Hadoop和結構化數據存儲(例如關係數據庫)之間高效傳輸批量數據的工具 (將關係數據庫(oracle、mysql、postgresql等)數據與hadoop數據進行轉換的工具)。
-
Sqoop於2012年3月成功地從孵化器畢業,現在是Apache的頂級項目
-
最新的穩定版本是1.4.7。Sqoop2的最新版本爲1.99.7。請注意,1.99.7與1.4.7不兼容且功能不完整,因此不適用於生產部署。
-
版本:(兩個版本完全不兼容,sqoop1使用最多)
sqoop1:1.4.x
sqoop2:1.99.x -
同類產品
DataX:阿里頂級數據交換工具 -
官網:http://sqoop.apache.org/
架構
sqoop架構非常簡單,是hadoop生態系統的架構最簡單的框架。
sqoop1由client端直接接入hadoop,任務通過解析生成對應的maprecue執行
Sqoop的輸入輸出/導入導出是相對於文件系統HDFS的, 因此HDFS的導入導出如圖1,圖2
圖1 導入
圖2 導出
第二章 Sqoop安裝
單機版安裝步驟:
1、解壓, 移動到相關目錄( 軟件及mysql驅動在底部分享 )
mv sqoop-env-template.sh sqoop-env.sh
2、配置環境變量
export SQOOP_HOME=/XX/sqoop.xx
source /etc/profile
3、添加數據庫驅動包
cp mysql-connector-java-5.1.10.jar /sqoop-install-path/lib
4、重命名配置文件,修改配置內容( 圖1)
注意: 如果前綴和這個文檔中的命名一致的話就不需要指定環境變量了, 如hive 和 hbase
mv sqoop-env-template.sh sqoop-env.sh
-----------------------------------------------------
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/chy/hadoop
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/chy/hadoop
-----------------------------------------------------
5、修改配置configure-sqoop( 圖2 )
注意: 去掉未安裝服務相關內容;例如(HBase、HCatalog、Accumulo),這樣做是運行sqoop命令出現的警告
#if [ ! -d "${HBASE_HOME}" ]; then
# echo "Error: $HBASE_HOME does not exist!"
# echo 'Please set $HBASE_HOME to the root of your HBase installation.'
# exit 1
6、測試
sqoop version ( 圖3)
# 連接後的效果(圖4,圖5),可以看到mysql數據庫中的已經被sqoop連接
sqoop list-databases -connect jdbc:mysql://node1:3306/ -username root -password 123
# 技巧: 連接mysql速度慢怎麼辦?
# 解決: 取消名稱檢測,提升訪問速度
vim /etc/my.cnf
------------------
skip-name-resolve
sqoop list-databases -connect jdbc:mysql://47.97.169.52:3307/ -username root -password root
圖1
圖2
圖3
圖4
圖5
第三章 Sqoop操作
在sqoop的docs目錄下,打開index,html即可查看官網內容
file:///F://spoop/sqoop-1.4.7.bin__hadoop-2.6.0/docs/SqoopUserGuide.html#_literal_sqoop_export_literal
連接操作
連接參數
# 直連,連接一次就會失效
sqoop list-databases -connect jdbc:mysql://node1:3306/ -username root -password 123
# 通過自定義配置文件連接, 將需要導入或導出的參數寫在配置文件彙總
sqoop --options-file 自定義文件
導入操作
前提:因爲要使用MapReduce框架所以需要啓動DN和RM
# mr程序一直處於阻塞狀態需要查看nodemanager是否啓動成功
## 啓動NM
start-yarn.sh
##勿忘記啓動resourcemanager
yarn-daemon.sh start resourcemanager
## 8032 端口,resourcemanager
導入參數
演示案例
# 1. 編寫自定義啓動文件
[root@node4 sqoop]# vim option
## 插入指定字段書寫方式
------------------------------
import
--connect
jdbc:mysql://node1:3307/result_db
--username
root
--password
root
--as-textfile
--columns
id,browser_name
--table
dimension_browser
--delete-target-dir
-m
1
--target-dir
/sqoop/data
------------------------------
## 插入sql語句方式
------------------------------
import
--connect
jdbc:mysql://node1:3307/result_db
--username
root
--password
root
--as-textfile
--delete-target-dir
-m
1
--target-dir
/sqoop/data
-e
select * from dimension_browser where $CONDITIONS
------------------------------
## 將數據導入到hive中
------------------------------
import
--connect
jdbc:mysql://47.97.169.52:3307/result_db
--username
root
--password
root
--as-textfile
--query
'select * from dimension_browser where $CONDITIONS'
--delete-target-dir
--target-dir
/sqoop/tmp
-m
1
--hive-import
--create-hive-table
--hive-table
browser
----------------------注意: 這裏如果無法自動建表,則需要我們在hive中創建對應的表,然後通過load data inpath '/sqoop/tmp/part-m-00000' into table browser;導入到hive數據中------------------------------
# 注意
## $CONDITIONS: -e情況下必須添加,類似mybatis的動態查詢
## 在有條寫的情況下格式 select * from dimension_browser where $CONDITIONS where id>20
# 3.運行測試
[root@node4 sqoop]# sqoop --options-file option
# 查看是否導入成功?是否生成了相關的文件,圖1
# 通過hive查看文件的內容,圖2
圖1
圖2
操作操作
導出參數
演示案例
# 導出到mysql
export
--connect
jdbc:mysql://node01:3307/test
--username
root
--password
123
-m
1
--columns
id,browser_name,browser_version
--export-dir
/sqoop/data
--table
h_browser
# 導出到mysql 指定分隔符(導入同理)
export
--connect
jdbc:mysql://node01:3307/test
--username
root
--password
123
-m
1
--columns
id,browser_name,browser_version
--export-dir
/sqoop/data
--table
h_browser
--input-fields-terminated-by
分隔符( eg: 逗號,頓號,^A.,\t..)
注意:
1.需要被導出的hdfs目錄下有數據 ,即需要結合導入一起使用
2.導出數據到mysql時, 需要在mysql創建對應的表 (字段類型名稱要匹配)
鏈接:https://pan.baidu.com/s/1P_BndD3_bmafHI_7tTVwPA
點贊私聊獲取提取碼哦~~~
提取碼:u7tb
複製這段內容後打開百度網盤手機App,操作更方便哦