【大数据系列零二】大数据时代下的数据同步利器Sqoop

一、sqoop概述
环境要求:Hadoop,关系型数据库(如MySQL),Sqoop
Scoop是什么?
1、Apache项目,开源的数据传输工具
2、Hadoop生态圈中的一个第三方模块,可以快速实现在Hadoop(HDFS/hive/hbase)和关系型数据库中进行数据传输
3、支持分布式并行,支持多种数据库(如MySQL、oracle)
4、sqoop主要功能:数据导入,数据导出,sqoop作业
Scoop运行原理?
scoop接收command命令,scoop根据命令生成mapReduce代码并提交给Hadoop,Hadoop启动map任务,完成command命令要执行的操作。

二、下载与配置
1、下载并解压
wget http://www.apache.org/dyn/closer.lua/sqoop/1.4.7(下载到的文件sqoop-1.4.6.tar.gz)
tar -zxvf sqoop-1.4.6.tar.gz(解压后文件:sqoop-1.4.6)
2、文件重命名
mv sqoop-1.4.6 sqoop
3、配置Linux环境变量,增加以下配置 vi /etc/profile
export SQOOP_HOME=/home/scal/apps/sqoop
export PATH= P A T H : PATH: PATH:SQOOP_HOME/bin
4、sqoop配置相关
1)环境初始化配置
cd sqoop/conf/
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh,打开以下hadoop相关支持的注释
export HADOOP_COMMON_HOME=/root/apps/hadoop
export HADOOP_MAPRED_HOME=/root/apps/hadoop
2)取消sqoop验证配置
cd bin/
vi configure-sqoop,注释以下行
if [ ! -d “ H C A T H O M E " ] ; t h e n i f [ ! − d " {HCAT_HOME}" ]; then if [ ! -d " HCATHOME"];thenif[!d"{ACCUMULO_HOME}” ]; then
5、验证sqoop是否安装成功
sqoop version

三、导入
1、全表导入
1)、查看hdoop目录下现有的数据
hdfs dfs -cat /user/root/movies/* (存在在root用户目录下的movies表下是否有数据)
2)、删除1中现有数据
hdfs dfs -rm -r /user
3)、在运行1的命令,会报错说文件夹不存在
4)、导入命令
sqoop import (控制参数) (导入参数)
例如:
sqoop import --connect jdbc:mysql://47.98.11.134:3306/doubanmove --username tiger --password tiger --table movies -m 1
备注:-m 1表示为单任务
2、限制数据范围导入
columns 指定要导入的列,导入命令后面任意位置 --columns <列名>
where 同MySQL的where,用法同columns
自由sql语句导入 , --query
例如:
sqoop import --connect jdbc:mysql://47.98.11.134:3306/doubanmove --username tiger --password tiger --table movies --columns ‘id,name’ --where “id > 200” -m 1
sqoop import --connect jdbc:mysql://47.98.11.134:3306/doubanmove --username tiger --password tiger --table movies -m 1 --query “select id,name from movies where id>200 and $conditions”
3、增量导入
核心参数:
–check-column:要检查的字段
–last-value:上次更细的值
–incremental:指定增量导入的模式,append 或 lastmodified
1)append,对数据附加,不支持更新。适用于只累加不修改,比如日志数据收集
2)lastmodified,源表中数据更新时候使用,对于变动数据收集,记录变动必须记录时间
sqoop import --connect jdbc:mysql://47.98.11.134:3306/doubanmove --username tiger --password tiger --table movies -m 1 --check-column id --incremental append --last-value 264

四、导出
1、与import相反,将HDFS中的数据导出到RDBMS中
2、有两种模式:
1)insert 写入
2)update 更新
3、命令:sqoop export (控制参数) (导出参数)
(用的较少,不详细展开)

五、作业任务
保存任务执行参数,确保任务可以被重复执行
语法:sqoop job <通用控制参数> <作业控制参数>
1、将MySQL 密码创建为隐形文件存放
echo -n “triger” > /root/apps/sqoop/.mysql.password
2、命令示例:
sqoop job --create myjob – import --connect jdbc:mysql://47.98.11.134:3306/doubanmove --username tiger --password-file file:///root/appssqoop/.mysql.password --table movies -m 1 --check-column id --incremental append --last-value 264
3、查看已经创建的所有job
sqoop job --list
4、查看对应job的详细信息
sqoop job --show myjob
5、执行job
sqoop job --exec myjob

六、sqoop定时作业任务
三种方式
1、使用任务流Oozie,定时调度sqoop任务
2、编写定时程序,定时调度sqoop任务
3、使用Centos自带的调度器Crontab
crontab示例:
1)创建sheel脚本:vi sqoop_incremental.sh
/root/apps/sqoop/bin/sqoop job --exec myjob > myjob.out 2>&1 &
2)编辑crontab -e
*/1 * * * * sh /root/apps/sqoop/sqoop_incrementalsh

相关链接:Sqoop入门实践

你可能感兴趣的:(大数据,sqoop)