sqoop1和sqoop2對比

疑問
sqoop作為數(shù)據(jù)遷移工具合適嗎?
sqoop1沒有提供api接口,sqoop2似乎不能導入數(shù)據(jù)到hbase

Sqoop簡單介紹

Sqoop是一款開源的工具,主要用于在Hadoop和傳統(tǒng)的數(shù)據(jù)庫(MySQL、postgresql等)進行數(shù)據(jù)的傳遞,可以將一個關(guān)系型數(shù)據(jù)庫(例如:MySQL、Oracle、Postgres等)中的數(shù)據(jù)導進到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導進到關(guān)系型數(shù)據(jù)庫中。

Sqoop中一大亮點就是可以通過hadoop的mapreduce把數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫中導入數(shù)據(jù)到HDFS。

Sqoop目前版本已經(jīng)到了1.99.7,我們可以在其官網(wǎng)上看到所有的版本,Sqoop1.99.7是屬于sqoop2,Sqoop1的最高版本為1.4.6,版本號劃分區(qū)別,Apache:1.4.x,1.99.x~

Sqoop一代和二代對比

版本號對比兩代之間是兩個完全不同的版本,不兼容

sqoop2比sqoop1的改進:

  • (1) 引入sqoop server,集中化管理connector等
  • (2) 多種訪問方式:CLI,Web UI,REST API
  • (3) 引入基于角色 的安全機制

sqoop2和sqoop1的功能性對比

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

優(yōu)缺點

sqoop1與sqoop2的優(yōu)缺點如下:

    sqoop1的架構(gòu),僅僅使用一個sqoop客戶端。
    sqoop2的架構(gòu),引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入權(quán)限安全機制。 

sqoop1與sqoop2優(yōu)缺點比較 :

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

一些小問題

測試sqoop1

bin/sqoop import --connect jdbc:mysql://192.168.2.133:3306/hive --username root --password x5  --table student -m1

出現(xiàn)以下問題

Streaming result set com.mysql.jdbc.RowDataDynamic@1d5a7f6 is still active

原因及解決辦法
mysql的bug,下載新的jar包就可以了
http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz

從windows上用navcat連接虛擬機Linux上的MySQL出現(xiàn) Host xxx is not allowed to connect to this MySQL server
原因是沒有授權(quán),解決方法如下:
  // 從任何主機上使用root用戶,密碼:youpassword(你的root密碼)連接到mysql服務(wù)器:
  # mysql -u root -proot 
  mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
  mysql>FLUSH PRIVILEGES;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容