使用Sqoop從Mysql向雲HBase同步數據
Sqoop是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具。本文介紹如何使用sqoop將數據從Mysql導入到HBase。從成本的角度考慮,針對沒有hadoop集群的用戶,重點介紹單機運行sqoop的配置和參數。
安裝
要完成從Mysql向HBase導入數據的任務,需要安裝和配置的軟件包括hadoop,sqoop,mysql-connector和HBase。我們針對單機運行sqoop的情況提供了四合一的安裝包簡化安裝流程。如果是在hadoop集群上運行sqoop,可以參考Sqoop官方文檔進行配置。
以下介紹單機版的安裝流程。
1 下載安裝包。把文件放在~目錄。
cd ~
wget https://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/sqoop-all.tar.gz
2 解壓文件:解壓,進入解壓後的目錄sqoop-all。
tar -xzvf sqoop-all.tar.gz
cd scoop-all
3 設置環境變量。
cp sqoop-env.sh /etc/profile.d; source /etc/profile
4 修改hbase-1.1.9/conf/hbase-site.xml文件,添加集群的 ZK 地址。可參考雲HBase幫助文檔
準備工作
1 設置ip白名單。需要把運行sqoop的機器ip添加到雲HBase的ip白名單中。如果Mysql是雲上的RDS,也需要修改RDS的ip白名單。總之就是保證這台機器能夠訪問mysql和HBase。
2 確保目標表存在。如果不存在需要先建表。
運行
安裝完成並配置好ip白名單之後,就可以運行sqoop進行數據導入了。
命令示例
以下是單機運行sqoop的命令示例:
sqoop import -Dmapreduce.local.map.tasks.maximum=8 --connect jdbc:mysql://$mysqlURL:3306/$database --table $table --hbase-table $hbaseTable --column-family $columnFamily --hbase-row-key $mysqlColumn --username $mysqlUser -m 8 -P
常用參數說明
--connect JDBC連接字符串
--table 要導入的mysql表名
--columns 要導入的列
--where 過濾條件
--hbase-table hbase表名
--column-family hbase列族
--hbase-row-key 用來做HBase rowkey的mysql列名
--username mysql用戶名
-m map個數,默認為4
此外,對於單機運行,還需要指定mapreduce.local.map.tasks.maximum參數,表示並行執行的最大map個數,否則默認為1,map就變成串行執行的了。也可以根據需要調整其他hadoop參數。
sqoop import的其他參數可參考sqoop-import文檔。
最後更新:2017-08-22 17:32:36