sqoop2(1.99.4)的使用和简单运维

sqoop安装

见文:sqoop2(1.99.4)的安装

sqoop-shell熟悉

启动sqoop server服务

bin/sqoop.sh server start

进入sqoop-shell

bin/sqoop2-shell

配置客户端使用服务

sqoop:000>set server --host [your hostname] --port 12000 --webapp sqoop

help可以查看可以执行的命令

sqoop:000>help

sqoop2(1.99.4)的使用和简单运维_第1张图片

例如:查看版本号

sqoop:000>show version --all

sqoop2(1.99.4)的使用和简单运维_第2张图片

例如:查看连接器

sqoop:000> show connector

sqoop2(1.99.4)的使用和简单运维_第3张图片

还有查看任务、查看任务细节等等

MYSQL与HDFS互传数据实例

mysql version:5.6.38 MySQL Community Server
hadoop version:hadoop-2.6.0

任务前准备工作

创建MYSQL数据库,名为“sqoop”

mysql> create database sqoop;

授权数据库“sqoop”的操作权限给root

mysql> grant all privileges on sqoop.* to root;

更新权限信息

mysql> flush privileges;

建表,名为“test”并添加数据,为了方便我就直接用工具Navicat for mysql做
这里写图片描述
这里写图片描述

进入spark-shell,并配置好客户端使用服务(见上文)

建立HDFS连接

sqoop:000> create link --cid 1

sqoop2(1.99.4)的使用和简单运维_第4张图片
建立JDBC连接

sqoop:000> create link --cid 2

sqoop2(1.99.4)的使用和简单运维_第5张图片

MYSQL -> HDFS

创建任务

sqoop:000> create job -f 7 -t 6

sqoop2(1.99.4)的使用和简单运维_第6张图片

*解释一下:
- -f代表from、-t代表to,实际数字根据自己生成的ID填写
- Schema name指的是数据库名字,Table name指的是表名
- Partition column name其实是sqoop工作的机制,它可以根据参数对数据进行分片并行化处理,所以一般填写不重复且自增的值,如id
- format就是一些指定的格式啦
- Output directory字面意思,输出的地方*

开始任务

sqoop:000> start job --jid 15

sqoop2(1.99.4)的使用和简单运维_第7张图片

查看任务详细进度

sqoop:000> status job --jid 15

我这里发生错误
这里写图片描述
一脸懵逼,写一条命令看详细信息

sqoop:000> set option --name verbose --value true

再去查看任务详细进度
sqoop2(1.99.4)的使用和简单运维_第8张图片
还是一脸懵逼
经过多次试验,操作几次总会出这样的意外,不知道是否跟我的集群有关系,那这里先不管啦

查看HDFS中是否已导入MYSQL中的数据
sqoop2(1.99.4)的使用和简单运维_第9张图片
成功导出

HDFS->MYSQL

清空mysql数据库“sqoop”中表“test”数据
这里写图片描述

创建任务

sqoop:000> create job -f 6 -t 7

sqoop2(1.99.4)的使用和简单运维_第10张图片

执行任务

sqoop:000> start job --jid 16

sqoop2(1.99.4)的使用和简单运维_第11张图片
查看任务状态

sqoop:000> status job --jid 16

sqoop2(1.99.4)的使用和简单运维_第12张图片
查看MYSQL内情况

mysql> select * from test;

sqoop2(1.99.4)的使用和简单运维_第13张图片
任务成功

简单运维

Error

命令正确却发生错误,例如
这里写图片描述

查看详细信息

sqoop:000> set option --name verbose --value true

找原因
sqoop2(1.99.4)的使用和简单运维_第14张图片

通过web端19888端口查看任务状况

在mapred-site.xml配置文件中添加

<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>CMaster:19888value>
property>
configuration>

在namenode上启动

sbin/mr-jobhistory-daemon.sh start historyserversbin

打开浏览器,输入namenode主机ip以及19888端口
这里写图片描述
贴一个我曾经遇到的错误以及相应的查看方法
sqoop2(1.99.4)的使用和简单运维_第15张图片
sqoop2(1.99.4)的使用和简单运维_第16张图片
sqoop2(1.99.4)的使用和简单运维_第17张图片
最终发现是源数据中某一列的时间格式出了问题,解决后就导入成功了

写脚本执行sqoop命令

创建文件,命名后缀为.sqoop,例如

vi script.sqoop

编辑文本
这里写图片描述
执行命令

sqoop2-shell /home/grid/script/script.sqoop

总结

这个是我上个月自学的一些内容,所以可能有些地方不太记得了。当时是为了找出解决某个实际需求的方法,所以也是学得不太透彻,之后有空的时候再深入学习吧。以后关于sqoop的更新可能还要学习的是基于时间的增量导入、定时执行等…

你可能感兴趣的:(sqoop2(1.99.4)的使用和简单运维)