疑問
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;