详细步骤截图 链接:http://note.youdao.com/noteshare?id=4373d4bf052b217f223f16588b47ac7d

Sqoop工具使用

一、认识sqoop

1、Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2、作用:
①连接服务器 ②搜索connectors
③创建Link ④创建Job
⑤提交Job ⑥返回Job运行信息等功能
二、启动
1、启动zookeeper
①如果Zookeeper未启动,则在集群中所有主机上使用命令“zkServer.sh start”启动Zookeeper服务的脚本。
②#在集群中所有主机上使用此命令,查看该节点Zookeeper服务当前的状态,若集群中只有一个“leader”节点,其余的均为“follower”节点,则集群的工作状态正常。
$zkServer.sh status
2、启动Hadoop
①在主节点(cgt-01)使用命令,启动Hadoop集群。
$start-all.sh ②在所有备用主节点(cgt-02)的主机,使用此命令,启动YARN主节点服务。
$yarn-daemon.sh start resourcemanager
③检查:在主节点使用命令“jps”查看Java进程信息,若有名为“NameNode”、“ResourceManager”、“DFSZKFailoverController”的三个进程,则表示Hadoop集群的主节点启动成功。
3、启动hbase
①确定Hadoop集群已启动状态,然后在主节点使用此命令,启动HBase集群。
$start-hbase.sh ②检查:在主节点使用命令“jps”查看Java进程信息,若有名为“HMaster”的进程,则表示HBase集群的主节点启动成功。
4、启动Hive
①在主节点使用命令“hive”启动Hive,启动成功后能够进入Hive的控制台。
②在控制台中使用命令“show databases;”查看当前的数据库列表。

5、启动sqoop
①在主节点使用命令“sqoop2-tool verify”验证配置是否正确。
②使用命令“sqoop2-server start”启动Sqoop服务器。
③使用命令“jps”查看Java进程信息,若有名为“SqoopJettyServer”的进程,则表示Sqoop启动成功。

④使用命令“sqoop2-shell”进入Sqoop的控制台。

6、启动mysql
①启动顺序:管理节点(cgt-01)->数据节点(cgt-02;cgt-03)->sql节点(cgt-04;cgt-05)
#ndb_mgmd -f /usr/local/mysql/etc/config.ini 管理节点
#ndbd 数据节点
#service mysql start SQL节点
②检查:在管理节点主机上使用命令“ndb_mgm”进入MySQL管理节点的控制台。
在控制台中使用命令“show”可以查看节点状况,若有相应SQL服务节点的连接信息,则表示SQL服务节点启动并连接成功。

三、mysql-HDFS
1、初始化Sqoop服务器连接参数
①进入Sqoop的控制台
配置连接Sqoop服务器的参数

set server --host Cluster-01 --port 12000 --webapp sqoop
显示“shell”和“server”的版本信息,若显示的“server”的版本信息正确,则表示服务器连接没有问题。
show version --all

②查看所有连接模板信息 > show connector

2、建立MySQL测试表空间、表和数据
a、创建用户sqoop并授权:
#mysql -uroot -pmysqlabc
#mysql -uroot -pmysqlabc

grant all privileges on . to ‘sqoop’@’%’ identified by ‘sqoop’ with grant option;
b、创建表空间(schema)sqoop,并创建测试表:
CREATE DATABASE sqoop;
use sqoop;
create table students (id int not null primary key,name varchar(20),age int);
show tables;
select*from students;

c、插入测试数据:

insert into students values(‘10001’,‘liyang’,29);
insert into students values(‘10002’,‘lion’,28);
insert into students values(‘10003’,‘leon’,26);
select*from students;

3、建立MySQL数据库连接
①把MySQL数据库连接工具包“mysql-connector-java-5.1.42-bin.jar”上传到用户家目录的“setups”目录下,该目录为事先自行创建用于存放实训相关软件包的目录。
②将MySQL的数据库连接工具包添加到Sqoop的“extra”目录下
$cp/setups/mysql-connector-java-5.1.42-bin.jar/sqoop/sqoop-1.99.7-bin-hadoop200/extra

③创建数据库连接

create link -connector generic-jdbc-connector

查看创建的连接信息

4、建立HDFS文件系统连接

create link -connector hdfs-connector

查看创建的连接信息

5、在HDFS创建用于存放导出的数据文件的目录
$ hadoop fs -mkdir -p /user/admin/test/sqoop

6、创建数据传输事务

create job -f mysqoop -t hdsqoop

参数配置完成后若出现“successful”信息则表示事务成功创建。
7、查看创建的事务信息

show job
使用命令“start job -n 事务名”启动数据传输事务
start job -n mysql-HDFS
使用命令“status job -n 事务名”可以查看事务的状态信息,若事务在运行中,可以看到事务当前的运行进度。
status job -n mysql-HDFS
数据传输事务执行完成后,退出Sqoop控制台,返回系统控制台。
:exit

8、打开浏览器查看集群状态、日志信息等:
http://192.168.10.111:8088/http://192.168.10.111:8088/cluster四、练习
1、在admin用户家目录/home/admin/新建一个文本文件test001.txt,内容如下:
1,lcuy,25,18133333333
2,lili,20,18044444444
3,yueyue,24,18955555555
2、从本地文件系统复制文件到HDFS文件系统
$ hadoop fs -put test001.txt /user/admin/test001.txt
$ hadoop fs -ls /user/admin/
$ hadoop fs -cat /user/admin/test001.txt
3、在Mysql提前创建好表结构

create table test001(id int not null primary key,name varchar(20),age int,tel varchar(20));
select*from test001
4、创建job并执行导入到mysql
create job -f HDFS-sqoop -t mysql-sqoop

show job

使用命令“> start job -n mysql-HDFS”启动数据传输事务

使用命令“> status job -n mysql-HDFS”可以查看事务的状态信息,若事务在运行中,可以看到事务当前的运行进度。

数据传输事务执行完成后,退出Sqoop控制台,返回系统控制台。
5、在mysql查询导入的数据

五、命令练习

stop job -n HDFS-mysql
delete job -n HDFS-mysql
set option --name verbose --value true
show job -n HDFS-mysql
show link
delete link -n mysql-sqoop
delete link -n HDFS-sqoop

六、总结
本次实验过程中屡屡出错,经再三尝试,完成本实验,主要原因如下:①集群稳定性低②前期的知识点不熟练③对集群的结构理解太浅,没有搞清其关系。对于上述问题,需在空闲时间,对前期所学知识点,进行梳理总结。