本篇帖子将手把手教大家如何使用开源的Sqoop工具对接社区版TDH来进行数据导入导出的操作,我们一起来看看吧。
下载安装sqoop
(1)官网下载安装sqoop
首先我们先到官网下载Sqoop, 选择合适的版本下载。我们这里使用的是Sqoop1.4.7的版本进行演示。
下载地址:http://archive.apache.org/dist/sqoop/
(2)产品包解压
# 创建一个文件夹放置下载的Sqoop
mkdir /opt/module
# 然后输入以下命令解压下载好的Sqoop产品包
tar -zxvf sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz - C /opt/module
# 打开之前创建好的文件夹后就可以看到我们解压后的文件了
cd /opt/module
(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及修改配置
下载TDH-Client
(1)获取客户端安装包
在Transwarp Manager界面右上角上点击 → 下载客户端 ,下载TDH客户端
(2)选择客户端需要访问的集群以及服务
(3)解压文件
# 将下载的tdh-client.tar文件放在集群中的任意机器上,然后于该机器上执行下述命令解压文件:
tar -xvf tdh-client.tar
执行成功后文件会被解压至目录TDH-Client中。
(4)执行脚本
# 请执行位于目录TDH-Client内的脚本。
source TDH-Client/init.sh
注意:用户必须使用source命令执行该脚本。 当新建一个连接到服务的终端session时,都需要重新执行source init.sh,bash init.sh 和 ./init.sh 都不起作用。
修改配置
解压TDH-Client.tar后假设放置在/root/TDH-Client目录下,对sqoop作如下修改
(1)执行下述操作后使用vi命令或其他工具打开配置文件
cd /opt/module/sqoop-1.4.7/conf
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
(2)修改下述参数,对应当前环境的TDH-Client目录
执行下述配置后保存退出,配置生效
(3)拷贝需要导出的数据库的驱动到/opt/module/sqoop-1.4.7/lib目录。
此处用mysql 驱动mysql-connector-java-5.1.36.jar举例。
(1)mysql登陆
这里假设Mysql数据库主机名是mysql-server,端口3308。连接上数据库建立测试用的用户,数据库表等。
(2)创建实验用户
TDH集群的节点IP分别是172.26.5.8~10
(3)将全部权限赋给集群的三个节点
(4)使赋权生效
flush privileges
(5)准备实验数据
(6)创建并切换使用数据库
create database sqoop_export;
use sqoop_export;
show tables;
(7)创建表,并插入10条数据
create table tbl_sqoop(name varchar(11),age int,sex varchar(11));
(8)查看表中的数据
select * from tbl_sqoop;
(9)退出MySQL
exit;
(10)实验连接数据库
数据导入到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中
步骤4 执行成功后,可以通过下述命令检查HDFS中的文件
使用导入数据建表
(1)执行TDH-Client的init.sh脚本
source /root/TDH-Client/init.sh
(2)通过beeline连接Quark Server,执行下列命令
没开安全:
beeline -u "jdbc:hive2://node01:10000/default" --maxWidth=15000
开了安全:执行knit admin,输入密码后链接数据库
beeline -u "jdbc:hive2://node01:10000/default;principal=hive/node01@TDH" --maxWidth=15000
(3)创建数据库
create database sqoop_test;
use sqoop_test;
(4)建立外表
(5)查看外表数据
select * from tbl_sqoop_ext
(6)建立内表,从外表导入
完成