疑問
sqoop作為數(shù)據(jù)遷移工具合適嗎?
sqoop1沒有提供api接口看铆,sqoop2似乎不能導(dǎo)入數(shù)據(jù)到hbase
Sqoop簡單介紹
Sqoop是一款開源的工具,主要用于在Hadoop和傳統(tǒng)的數(shù)據(jù)庫(MySQL癞志、postgresql等)進行數(shù)據(jù)的傳遞锣笨,可以將一個關(guān)系型數(shù)據(jù)庫(例如:MySQL、Oracle菲驴、Postgres等)中的數(shù)據(jù)導(dǎo)進到Hadoop的HDFS中荐吵,也可以將HDFS的數(shù)據(jù)導(dǎo)進到關(guān)系型數(shù)據(jù)庫中。
Sqoop中一大亮點就是可以通過hadoop的mapreduce把數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫中導(dǎo)入數(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 。此連接器應(yīng)在任何其它符合 JDBC 要求的數(shù)據(jù)庫上運行疑俭。但是粮呢,性能可能無法與 Sqoop 中的專用連接器相比 |
Kerberos 安全集成 | 支持 | 不支持 |
數(shù)據(jù)從 RDBMS 傳輸至 Hive 或 HBase | 支持 | 不支持。解決辦法: 按照此兩步方法操作:1钞艇、將數(shù)據(jù)從 RDBMS 導(dǎo)入 HDFS啄寡;2、在 Hive 中使用相應(yīng)的工具和命令(例如 LOAD DATA 語句)哩照,手動將數(shù)據(jù)載入 Hive 或 HBase |
數(shù)據(jù)從 Hive 或 HBase 傳輸至 RDBMS | 不支持挺物。解決辦法: 按照此兩步方法操作。 從 Hive 或 HBase 將數(shù)據(jù)提取至 HDFS (作為文本或 Avro 文件)使用 Sqoop 將上一步的輸出導(dǎo)出至 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ī)范化伟叛,僅僅負責(zé)數(shù)據(jù)的讀寫。
sqoop2的缺點:架構(gòu)稍復(fù)雜脐嫂,配置部署更繁瑣统刮。
一些小問題
測試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;