Sqoop學習(一) —— 簡單理論總結

一、前言

最近項目中需要用到sqoop,剛開始還以爲是之前完全沒接觸過的技術,後面用上之後才發現本科畢設那會幫實驗室跑測試用過,頓時感受到遺忘的力量,不過當時也就只是搜了幾個需要用到的命令執行完成任務就完事了,也沒去具體的學習,最近利用時間快速的過了一下,在此進行簡單的總結。

二、參考鏈接

三、知識點

3.1 Sqoop產生背景

在基於Hadoop生態框架的大數據技術來臨之後,需要將數據導入大數據平臺中,然而當時數據基本上都存儲在傳統的關係型數據庫中,如何將數據從RDBMS轉入Hadoop生態環境中(HDFS、Hive、HBase等)是個難題,Sqoop工具由此誕生。

3.2 Sqoop概念介紹

Sqoop是連接RDBMS和Hadoop的橋樑、數據ETL工具 ,主要操作涉及兩個方面,即導入import和導出export。其中import是指將數據從RDBMS中傳送到Hadoop(HDFS、Hive、HBase)中,export指將數據從Hadoop中傳送到RDBMS中。

Sqoop支持數據的全量和增量更新,這裏簡單解釋一下全量和增量,全量和增量是數據同步的兩種方式,前者是一次性導入數據,後者支持將新數據以append方式進行同步。

3.3 Sqoop的優勢

  • 可自動完成數據映射和轉換,也可用戶自定義映射關係
  • 支持多種數據庫(RDBMS如MySQL、Oracle;Hadoop下如Hive、HBase)
  • 高效可控,可通過調整任務數來控制任務的併發度(根據後續實戰此處猜測是命令中的--num-mappers 1中對於這個數值的定義來控制任務併發數)

3.4 Sqoop的版本說明

  • Sqoop1:部署簡單,Sqoop工具接收到客戶端的shell命令或者java api命令後,通過Sqoop中的任務翻譯器(Task Translator)將命令轉換爲對應的MapReduce任務,而後將關係型數據庫和Hadoop中的數據進行相互轉移,進而完成數據拷貝

  • Sqoop2:相較於Sqoop1來講,Sqoop2添加了Sqoop Server機制,同時支持web ui和rest api,部署較爲複雜

說明:一般練習使用Sqoop1足以,對Sqoop的需求如果只是一個轉換RDBMS和Hive數據的工具的話安裝部署Sqoop1即可,如果對其有更高的性能等要求可選擇安裝部署Sqoop2

3.5 Sqoop的工作機制

從本質上講,Sqoop就是一個數據ETL工具,具體來講是將Sqoop的數據轉換命令轉爲MapReduce任務(job),所以也就依賴於Hadoop基礎環境,數據格式的轉換主要是通過對MR程序中的InputFormat和OutputFormat進行定製實現

四、總結

此篇博客算是通過學習他人博客關於Sqoop的總結然後自己做的一個小總結,後續如果有其他方面的深入學習會繼續更新~

發佈了34 篇原創文章 · 獲贊 7 · 訪問量 8328
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章