Sqoop相關概念

一、概念

    Sqoop是一款開源的工具,主要用於在HADOOP和傳統的數據庫(mysql、postgresql等)進行數據的傳遞,可以將一個關係型數據庫(例如:MySQL、Oracle、Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。它是 Hadoop 發展到一定程度的必然產物,它主要解決的是傳統數據庫和Hadoop之間數據的遷移問題。

二、背景

Sqoop 的產生主要源於以下幾種需求:

1、多數使用 Hadoop 技術處理大數據業務的企業,有大量的數據存儲在傳統的關係型數據庫(RDBMS)中。
2、由於缺乏工具的支持,對 Hadoop 和 傳統數據庫系統中的數據進行相互傳輸是一件十分困難的事情。
3、基於前兩個方面的考慮,亟需一個在 RDBMS 與 Hadoop 之間進行數據傳輸的項目。

三、核心設計思想

 Sqoop 的核心設計思想是利用 MapReduce 加快數據傳輸速度。也就是說 Sqoop 的導入和導出功能是通過 MapReduce 作業實現的。所以它是一種批處理方式進行數據傳輸,難以實現實時的數據進行導入和導出。

四、爲什麼選擇Sqoop

我們爲什麼選擇 Sqoop 呢?通常基於三個方面的考慮:

1、它可以高效、可控地利用資源,可以通過調整任務數來控制任務的併發度。另外它還可以配置數據庫的訪問時間等等。
2、它可以自動的完成數據類型映射與轉換。我們往往導入的數據是有類型的,它可以自動根據數據庫中的類型轉換到 Hadoop 中,當然用戶也可以自定義它們之間的映射關係。
3、它支持多種數據庫,比如,Mysql、Oracle和PostgreSQL等等數據庫。

五、Sqoop1 和Sqoop2 比較

1、sqoop1和sqoop2是兩個不同的版本,它們是完全不兼容的。
2、版本劃分方式:Apache 1.4.x 之後的版本屬於sqoop1,1.99.x之上的版本屬於sqoop2.
3、與sqoop1相比,sqoop2有以下優勢:
    1)它引入的sqoop Server,便於集中化的管理Connector或者其它的第三方插件;
    2)多種訪問方式:CLI、Web UI、REST API;
    3)它引入了基於角色的安全機制,管理員可以在sqoop Server上配置不同的角色
整體對比:

功能 Sqoop1 sqoop2
用於所有主要 RDBMS 的連接器 支持 不支持。解決辦法: 使用已在以下數據庫上執行測試的通用 JDBC 連接器: Microsoft SQL Server 、 PostgreSQL 、 MySQL 和 Oracle 。此連接器應在任何其它符合 JDBC 要求的數據庫上運行。但是,性能可能無法與 Sqoop 中的專用連接器相比
Kerberos 安全集成 支持 不支持
數據從 RDBMS 傳輸至 Hive 或 HBase 支持 不支持。解決辦法: 按照此兩步方法操作:1、將數據從 RDBMS 導入 HDFS;2、在 Hive 中使用相應的工具和命令(例如 LOAD DATA 語句),手動將數據載入 Hive 或 HBase
數據從 Hive 或 HBase 傳輸至 RDBMS 不支持。解決辦法: 按照此兩步方法操作。 從 Hive 或 HBase 將數據提取至 HDFS (作爲文本或 Avro 文件)使用 Sqoop 將上一步的輸出導出至 RDBMS 不支持。按照與 Sqoop 1 相同的解決方法操作

sqoop1的架構,僅僅使用一個sqoop客戶端。
sqoop2的架構,引入了sqoop server集中化管理connector,以及rest api,web,UI,並引入權限安全機制。

sqoop1優點架構部署簡單
sqoop1的缺點命令行方式容易出錯,格式緊耦合,無法支持所有數據類型,安全機制不夠完善,例如密碼暴漏, 安裝需要root權限,connector必須符合JDBC模型
sqoop2的優點多種交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的鏈接安裝在sqoop server上,完善權限管理機制,connector規範化,僅僅負責數據的讀寫。
sqoop2的缺點:架構稍複雜,配置部署更繁瑣。

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