熬過去,出衆。
熬不過,出局。
這是最真實的人生,人都是熬過來的。
Sqoop 是一個用來将Hadoop和關系型資料庫中的資料互相轉移的工具,它是Hadoop環境下連接配接關系資料庫與Hadoop存儲系統的橋梁,支援多種關系型資料源和Hive、HDFS、Hbase的互相導入。支援全表導入,也支援增量資料導入機制,Sqoop工作機制利用MapReduce分布式批處理,加快了資料傳輸速度和容錯性。
選擇Sqoop理由:
1、可以高效的利用資源,可以通過調整任務數來控制任務的并發度。
2、可以自動地完成資料類型映射與轉換。導入的資料是有類型的,它可以自動根據資料庫中的類型轉換到Hadoop中,當然也可以自定義他們的映射關系。
3、它支援多種資料庫,eg:mysql、Oracle、PostgreSQL。
Sqoop工作原理:
Sqoop利用MapReduce并行特點以批處理的方式加快資料傳輸,進而提供并發特征和容錯。Sqoop主要通過jdbc連接配接關系型資料庫,理論上隻有關系型資料庫支援JDBC都可以使用Sqoop與HDFS進行資料互動。
1、Sqoop從關系型資料庫導入HDFS的原理:使用者先輸入一個Sqoop import 指令,Sqoop會從關系型資料庫中擷取中繼資料資訊,包括庫資訊、表有哪些字段及字段類型等,擷取資訊後會将導入指令轉換為基于Map的MapReduce任務。會開啟很多map任務,每個map任務讀取一部分資料,多個map任務并行完成資料複制到HDFS分布式檔案系統上。

2、Sqoop導出功能原理:使用者輸入export指令,Sqoop會擷取關系型資料表結構資訊,建立與Hadoop字段有關系型資料庫表字段的映射關系,将指令轉換為基于Map的MapReduce作用,生産很多Map任務,并行地從HDFS中讀取資料檔案,将這個資料複制到資料庫中。
Sqoop版本和架構
Sqoop存在兩個版本,1.4.x和1.99.x,通常簡稱為sqoop1和sqoop2
Sqoop1架構師使用Sqoop用戶端直接送出的方式,通路方式是CLI控制台方式進行通路,在指令或腳本中指定資料庫名及密碼。
Sqoop2架構引入了Sqoop Server,集中化管理Connector,提供多種通路方式,如CLI、Web UI、REST API,同時Sqoop2通過CLI方式通路會有一個互動式界面,使輸入的密碼資訊不被看到。
Sqoop不僅可以用于關系型資料庫與HDFS檔案系統之間進行資料轉換,也可以将資料從關系型資料庫傳輸至Hive或Hbase,而對于資料從Hive或者Hbase 傳輸到關系型資料庫來說,則可以從Hive或者Hbase将資料提取至HDFS,然後使用Sqoop将上一步的輸出導入到關系資料庫。
使用Sqoop增量導入有append 和 lastmodified兩種模式,lastmodified模式差別于apend是可以指定一個時間戳字段,按時間順序導入,這個模型可以指定增量資料在HDFS的方式,比如最終增量結果為一個檔案。
需要在應用的主要參數:
-check-column:指定增量導入的依賴字段,通常為自增的主鍵id或者時間戳
-incremental:指定導入模式(append 或者lastmodified)
-last-value:指定導入的上次最大值,也是這次的開始值。