【集成方案】Sqoop对接TDH社区版数据导入手把手教学贴

友情链接


下载安装Sqoop

1) 官网下载安装sqoop

首先我们先到官网下载Sqoop, 选择合适的版本下载。我们这里使用的是Sqoop1.4.7的版本进行演示。

2) 产品包解压

# 创建一个文件夹放置下载的Sqoop

mkdir /opt/module

# 然后输入以下命令解压下载好的Sqoop产品包

tar -zxvf sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz

3) 重命名

# 将解压出来的文件名sqoop-1.4.7.bin_hadoop-2.6.0改名为sqoop-1.4.7

mv sqoop-1.4.7.bin_hadoop-2.6.0 sqoop-1.4.7


下载TDH Client及修改配置

1)下载TDH-Client

获取客户端安装包

在Transwarp Manager界面右上角上点击 → 下载客户端 ,下载TDH客户端

选择客户端需要访问的集群以及服务

image.png

2) 解压文件

# 将下载的tdh-client.tar文件放在集群中的任意机器上,然后于该机器上执行下述命令解压文件:

tar -xvf tdh-client.tar

执行成功后文件会被解压至目录TDH-Client中

image.png

3) 执行脚本

# 请执行位于目录TDH-Client内的脚本

source TDH-Client/init.sh

注意:用户必须使用source命令执行该脚本。 当新建一个连接到服务的终端session时,都需要重新执行source init.sh,bash init.sh 和 ./init.sh 都不起作用。

image.png

4) 修改配置

解压TDH-Client.tar后假设放置在/root/TDH-Client目录下,对sqoop作如下修改:

A. 执行下述操作后使用vi命令或其他工具打开配置文件

cd /opt/module/sqoop-1.4.7/conf
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh

B. 修改下述参数,对应当前环境的TDH-Client目录

执行下述配置后保存退出,配置生效

image.png

C. 拷贝需要导出的数据库的驱动到/opt/module/sqoop-1.4.7/lib目录

此处用mysql 驱动mysql-connector-java-5.1.36.jar举例(下载地址:http://www.java2s.com/example/jar/m/download-mysqlconnectorjava5136jar-file.html#google_vignette)


数据库连接验证

上述配置修改完成后,可以通过下述步骤验证数据库连接。

1)mysql登陆,创建实验用户

这里假设mysql在本地,打开CMD,创建实验用户,如sqoopuser,密码设置为123456。

image.png

或者如果假设Mysql数据库主机名是mysql-server,端口3306。连接上数据库建立测试用的用户,数据库表等。

image.png

2) 为该角色赋权

这样后续所有ip都能用sqoopuser用户访问这个mysql;

image.png

3) 使赋权生效

flush privileges

4) 准备实验数据

创建并切换使用数据库

create database sqoop_export;
use sqoop_export;
show tables;
image.png

5) 创建表,并插入10条数据

create table tbl_sqoop(name varchar(11),age int,sex varchar(11));


6) 查看表中的数据

select * from tbl_sqoop;
image.png

7) 实验连接数据库,展示数据库及表

bin/sqoop list-databases --connect jdbc:mysql://172.16.200.229:3306/?serverTimezone=UTC --username sqoopuser -password 123456

bin/sqoop list-tables --connect jdbc:mysql://172.16.200.229:3306/sqoop_export?serverTimezone=UTC --username sqoopuser -password 123456


数据导入到TDH中的HDFS

用sqoop将mysql中的表数据导入TDH集群中的HDFS,可以通过下述步骤。

1) 执行TDH Client中的init.sh脚本。比如source /root/TDH-Client/init.sh

2) 如果当前环境开启了guardian安全,需要再执行kinit {user},使当前session具备安全访问集群的能力

3) 把Mysql里的某张表导出到集群HDFS中

bin/sqoop import --connect "jdbc:mysql://172.16.200.229:3306/sqoop_export?serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL" --username sqoopuser --password 123456 --query 'SELECT * FROM tbl_sqoop WHERE $CONDITIONS' --target-dir /user/sqoop_test/tbl_sqoop --delete-target-dir -m 1 -fields-terminated-by "\t"  --split-by name0

4) 执行成功后,可以通过下述命令检查HDFS中的文件

hdfs dfs -ls /user/sqoop_test/tbl_sqoop
hdfs dfs -cat /user/sqoop_test/tbl_sqoop/part-m-00000


使用导入数据建表

1)通过beeline连接Quark Server(此次需要注意自身环境的安全情况,是否开启安全决定了beeline的连接方式,具体可查看:连接方式详解(参考连接方式一)),执行下列命令

2) 创建数据库

create database sqoop_test;
use sqoop_test;

3) 建立外表

create external table tbl_sqoop_ext(
name varchar(11),
age int,
sex varchar(11)
) row format delimited fields terminated by '\t'
location '/user/sqoop_test/tbl_sqoop/';

4) 查看外表数据

select * from tbl_sqoop_ext;

5) 建立内表,从外表导入

create table tbl_sqoop_orc(
name varchar(11),
age int,
sex varchar(11)
) clustered by (age) into 7 buckets
stored as orc;
insert into tbl_sqoop_orc select * from tbl_sqoop_ext;
select * from tbl_sqoop_ext;

完成



评论
登录后可评论
发布者
星小环分享号
文章
180
问答
205
关注者
27
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入