Sqoop學習手冊

1 簡介及原理

1.1簡介

Sqoop是Apache旗下的一款“hadoop和關係型數據庫服務器之間傳送數據”的工具。
導入數據:MySQL、Oracle導入數據到hadoop的hdfs、hive、HBASE等數據存儲系統。
導出數據:從hadoop的文件系統中導出數據到關係型數據庫中。

1.2 sqoop 導入導出原理

參考自Sqoop的介紹(導入導出原理)

1.2.1 數據導入在這裏插入圖片描述

  1. sqoop會通過jdbc來獲取需要的數據庫的元數據信息,例如:導入的表的列名,數據類型。
  2. 這些數據庫的數據類型會被映射成爲java的數據類型,根據這些信息,sqoop會生成一個與表名相同的類用來完成序列化工作,保存表中的每一行記錄。
  3. sqoop開啓MapReduce作業
  4. 啓動的作業在input的過程中,會通過jdbc讀取數據表中的內容,這時,會使用sqoop生成的類進行序列化。
  5. 最後將這些記錄寫到hdfs上,在寫入hdfs的過程中,同樣會使用sqoop生成的類進行反序列化。

1.2.2 數據導出

解釋:

  1. 首先sqoop通過jdbc訪問關係型數據庫,得到需要導出的數據的元數據信息
  2. 根據獲取的元數據信息,sqoop生成一個java類,用來進行數據的傳輸載體,該類必須實現序列化
  3. 啓動MapReduce程序
  4. sqoop利用生成的這個java類,並行的從hdfs中讀取數據。
  5. 每一個map作業都會根據讀取到的導出表的元數據信息和讀取到的數據,生成一批insert語句然後多個 map 作業並行的向數據庫 mysql 中插入數據。

總結:數據是從hdfs中併發進行讀取,也是併發進行寫入,那並行的讀取時依賴hdfs的性能,而並行的寫入到MySQL,就要依賴MySQL的性能

1.3 Sqoop技術核心

  1. 生成mapreduce
    sqoop接收用戶的請求,通過解析請求,生成mapreduce代碼,並打包,將打好的jar包提交給hadoop執行。生成mapreduce代碼是sqoop的核心技術,也是數據傳輸的關鍵。

  2. 作業創建
    主要用於定時任務,定時導入導出新數據的sqoop作業。例如增量導入。

  3. 數據映射
    關係型數據庫字段是有類型的,數據映射可以自動對數據庫字段類型和hadoop的類型進行對應。當然也可以自定義類型映射。

  4. 並行控制
    採用sqoop集羣或者多個任務並行進行數據的導入導出工作。主要在大型導入導出任務中,爲了提升性能使用的。

2 Sqoop導入

。。。太簡單了,先參考視頻吧:Sqoop入門實踐教程

2.1 全表導入

2.2 限制數據範圍導入

2.3 增量導入

3 Sqoop導出

4 Sqoop作業制定

4-1 數據增量導入作業

4-2 定時作業調度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章