通过sqoop将MySQL数据库中的数据导入Hbase,sqoophbase
从接触到大数据到成功的实现一个功能期间走了不少弯路也踩了不少坑,这里作为我的学习笔记也可以作为小白们的前车之鉴,少走弯路,有不正确之处,望指出
环境准备:
hadoop、hbase、sqoop、mysql
hbase和hadoop版本存在兼容问题,具体兼容信息参照官网和相关资料
一、sqoop安装配置
1.下载 下载地址 http://mirrors.cnnic.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz2.解压
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ /home/sqoop3.环境变量配置
vi /etc/profile
添加以下内容
export SQOOP_HOME=/home/sqoop
export PATH=$PATH:$SQOOP_HOME/bin 使其生效 source /etc/profile
4.配置sqoop参数
在${SQOOP_HOME}/conf中执行命令
mvsqoop-env-template.sh sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/
#set the path to where bin/hbase is available
export HBASE_HOME=/home/hbase/
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hive/
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/home/zookeeper
路径根据用户实际路径配置
6. 将mysql的驱动jar复制到lib目录下
mysql-connector-java-5.1.31-bin.jar
7.测试sqoop是否安装成功
sqoop version
看到以上信息说明sqoop就安装成功啦,下面进行数据同步
二、Mysql数据定时导入Hbase
1.示例语句/home/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/yqm --username root --password root --table user --hbase-table user --hbase-create-table
--column-family userinfo --hbase-row-key userid
localhost:3306/yqm localhost为数据库地址,yqm为数据库名
--table 为数据库表名
--username 数据库连接用户名
--password 数据库连接密码
--hbase-table user 在hbase新建表user
--column-family列族
--column-family userid 数据库中userid作为hbase中的row-key
2.创建job
sqoop job --create myjob --import --connect jdbc:mysql://localhost:3306/yqm --username root --password root --table user --hbase-table user --hbase-create-table --column-family userinfo --hbase-row-key userid
解释:
--create myjob创建一个名为myjob的job
3.执行job
sqoop job --exec myjob
4.配置sqoop-site.xml
在执行job时会有数据库密码的校验:
sqoop job --exec myjob
Enter password:
...
所以要更改配置在sqoop-site.xml中:
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>
If true, allow saved passwords in the metastore.
</description>
</property>
当这个值为真的时候才会保存密码。
配置更改过要重新建任务才会生效,把之前的任务删除:
sqoop job --delete myjob
重复上述操作,执行时不用输入数据库密码校验。
5.Hbase查看是否同步成功
hbase shell进入hbaseshell界面
list 列出hbase所有的表
scan ‘user’查看user表
6.创建定时任务
在 /home/sqoop下新建job.sh脚本,内容如下
#!/bin/sh
. /etc/profile
. ~/.bash_profile
sqoop job --exec hjob
输入 crontab -e新增任务,内容如下
*/1 * * * * /bin/sh /home/sqoop/a.sh>/home/sqoop/job.txt 2>&1
保存即可
此例设置为每一分钟执行一次,设置定时可参考crontab定时任务
解释:crontab为非登录用户下运行,不能读取环境变量,所以加入. /etc/profile和. ~/.bash_profile读取系统环境变量和用户环境变量,crontab因用户权限无法读取脚本,所以加入/bin/sh赋予权限
至此,sqoop安装配置和mysql数据定时导入hbase已完成;如有疑惑或不正之处 qq:1506852741
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。