使用Sqoop从Mysql向云HBase同步数据

    xiaoxiao2021-04-17  221

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具。本文介绍如何使用sqoop将数据从Mysql导入到HBase。从成本的角度考虑,针对没有hadoop集群的用户,重点介绍单机运行sqoop的配置和参数。

    安装

    要完成从Mysql向HBase导入数据的任务,需要安装和配置的软件包括hadoop,sqoop,mysql-connector和HBase。我们针对单机运行sqoop的情况提供了四合一的安装包简化安装流程。如果是在hadoop集群上运行sqoop,可以参考Sqoop官方文档进行配置。以下介绍单机版的安装流程。

    1 下载安装包。把文件放在~目录。

    cd ~ wget http://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文档](http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_literal_sqoop_import_literal)。

    公网运行

    一般来说,我们不建议在公网执行数据同步任务,因为可能会有潜在的安全隐患以及绕行公网带来的延时增大、性能问题等。但是考虑到开发测试阶段的便利,HBase也提供了公网访问的功能,我们可以通过配置HBase公网访问实现在公网运行数据同步任务。

    开通公网访问

    开通公网访问的方法参见公网访问方案。公网访问需要使用阿里云定制的客户端,具体的下载和配置参见使用 Shell 访问。完成后,如果能通过hbase shell访问,就说明这一步的配置已经成功了。

    修改sqoop环境变量

    sqoop环境变量中和HBase相关的环境变量主要是HBASE_HOME,需要把这个变量改成阿里云定制客户端所在的目录。运行vi sqoop-en.sh,修改如下内容:

    #export HBASE_HOME=~/sqoop-all/hbase-1.1.9 注释这一行,替换成: export HBASE_HOME=~/sqoop-all/alihbase-1.1.4 #改成阿里云客户端所在的目录

    然后

    cp sqoop-env.sh /etc/profile.d; source /etc/profile

    环境变量生效之后,就可以在公网执行导入操作了。

    相关资源:七夕情人节表白HTML源码(两款)

    最新回复(0)