閱讀100 返回首頁    go 微信


Sqoop__數據傳輸軟件_開發人員指南_E-MapReduce-阿裏雲

Sqoop 是一款用來在不同數據存儲軟件之間進行數據傳輸的開源軟件,它支持多種類型的數據儲存軟件。

安裝 Sqoop

注意:目前,E-MapReduce 從版本 1.3 開始都會默認支持 Sqoop 組件,您無需再自行安裝,可以跳過本節。

若您使用的 E-MapReduce 的版本低於 1.3,則還沒有集成 Sqoop,如果需要使用請參考如下的安裝方式。

  1. 從官網下載 Sqoop 1.4.6 版本(點擊下載)。若下載的 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 無法打開,也可以使用鏡像地址https://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz進行下載,請執行如下命令:

    1. wget https://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__ha doop-2.0.4-alpha.tar.gz
  2. 執行如下命令,將下載下來的sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz解壓到 Master 節點上:

    1. tar zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
  3. 要從 Mysql 導數據需要安裝 Mysql driver。請從官網下載最新版本(點擊下載),或執行如下命令進行下載(此處以版本 5.1.38 為例):

    1. wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz
  4. 解壓以後把 jar 包放到 Sqoop 目錄下的 lib 目錄下。

數據傳輸

常見的使用場景如下所示:

  • Mysql -> HDFS

  • HDFS -> Mysql

  • Mysql -> Hive

  • Hive -> Mysql

  • 使用 SQL 作為導入條件

注意:在執行如下的命令前,請先切換你的用戶為 Hadoop。

  1. su hadoop

從 Mysql 到 HDFS

在集群的 Master 節點上執行如下命令:

  1. sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <hdfs-dir>

參數說明:

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/。

dbname:數據庫的名字,例如:user。

username:數據庫登錄用戶名。

password:用戶對應的密碼。

tablename:Mysql 表的名字。

hdfs-dir:HDFS 的寫入目錄,例如:/user/hive/result。

更加詳細的參數使用請參考 Sqoop Import

從 HDFS 到 Mysql

需要先創建好對應 HDFS 中的數據結構的 Mysql 表,然後在集群的 Master 節點上執行如下命令,指定要導的數據文件的路徑。

  1. sqoop export --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <hdfs-dir>

參數說明:

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/。

dbname:數據庫的名字,例如:user。

username:數據庫登錄用戶名。

password:用戶對應的密碼。

tablename:Mysql 的表的名字。

hdfs-dir:要導到 Mysql 去的 HDFS 的數據目錄,例如:/user/hive/result.

更加詳細的參數使用請參考 Sqoop Export

從 Mysql 到 Hive

導入的同時也新建一個 Hive 表,執行如下命令:

  1. sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --fields-terminated-by "t" --lines-terminated-by "n" --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>

參數說明:

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/。

dbname:數據庫的名字,例如:user。

username:據庫登錄用戶名。

password:用戶對應的密碼。

tablename:Mysql 的表的名字。

hdfs-dir:要導到 Mysql 去的 HDFS 的數據目錄,例如:/user/hive/result。

hive-tablename:對應的 Hive 中的表名,可以是 xxx.yyy。

更加詳細的參數使用請參考 Sqoop Import

從 Hive 到 Mysql

請參考上麵的從 HDFS 到 Mysql的命令,隻需要指定 Hive 表對應的 HDFS 路徑就可以了。

從 Mysql 到 OSS

類似從 Mysql 到 HDFS,隻是 —target-dir 不同。在集群的 Master 節點上執行如下命令:

注意: OSS 地址中的 host 有內網地址、外網地址和 VPC 網絡地址之分。如果用經典網絡,需要指定內網地址,杭州是 oss-cn-hangzhou-internal.aliyuncs.com,VPC 要指定 VPC 內網,杭州是 vpc100-oss-cn-hangzhou.aliyuncs.com。

  1. sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir>

參數說明:

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/。

dbname:數據庫的名字,例如:user。

username:數據庫登錄用戶名。

password:用戶對應的密碼。

tablename:Mysql 表的名字。

oss-dir:OSS 的寫入目錄,例如:oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result

更加詳細的參數使用請參考 Sqoop Import

6. 從Oss到Mysql

類似mysql到hdfs,隻是—export-dir不同。需要創建好對應oss中的數據結構的Mysql表

然後在集群的Master節點上執行如下:指定要導的數據文件的路徑

  1. sqoop export --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <oss-dir>

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/

dbname:數據庫的名字,例如:user

username:數據庫登錄用戶名

password:用戶對應的密碼

tablename:Mysql的表的名字

oss-dir:oss的寫入目錄,例如:oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result

注意: oss地址host有內網地址,外網地址,vpc網絡地址之分。如果 用經典網絡,需要指定內網地址,杭州是oss-cn-hangzhou-internal.aliyuncs.com,vpc要指定vpc內網,杭州是vpc100-oss-cn-hangzhou.aliyuncs.com

更加詳細的參數使用請參考,Sqoop Export

使用 SQL 作為導入條件

除了指定 Mysql 的全表導入,還可以寫 SQL 來指定導入的數據,如下所示:

  1. sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --query <query-sql> --split-by <sp-column> --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>

參數說明:

dburi:數據庫的訪問連接,例如: jdbc:mysql://192.168.1.124:3306/。

dbname:數據庫的名字,例如:user。

username:數據庫登錄用戶名。

password:用戶對應的密碼。

query-sql:使用的查詢語句,例如:”SELECT * FROM profile WHERE id>1 AND $CONDITIONS”。記得要用引號包圍,最後一定要帶上 AND $CONDITIONS。

sp-column:進行切分的條件,一般跟 Mysql 表的主鍵。

hdfs-dir:要導到 Mysql 去的 HDFS 的數據目錄,例如:/user/hive/result。

hive-tablename:對應的 Hive 中的表名,可以是 xxx.yyy。

更加詳細的參數使用請參考 Sqoop Query Import

集群和其他數據庫的網絡配置請參考,用Aliyun E-MapReduce集群的 Sqoop 工具和數據庫同步數據如何配置網絡

最後更新:2016-11-23 16:03:59

  上一篇:go HBase 開發手冊__開發人員指南_E-MapReduce-阿裏雲
  下一篇:go 阿裏雲數據集成__數據傳輸軟件_開發人員指南_E-MapReduce-阿裏雲