内容纲要
概要描述
在TDC使用大数据时,有需要在容器内使用hdfs/sqoop/hbase的场景,但是容器内可能没有集成相关大数据环境变量和相关jar包,此时可以将tdc-client放到容器内集成使用
本文描述具体的集成方法
详细描述
实验背景
本文以TDC3.2.0 TDS3.2.0 为例,描述如何在TDS环境内部署调用hdfs,sqoop等相关命令
准备tdc-client安装包
tdc-client下载
下载上传到集群服务器上 进行解压
tar -zxvf tdc-client.tar.gz
获取实例的相应配置

cd tdc-client/scripts
bash get_tdc_tenant_tdh_conf.sh --tenant_name fzd --cluster_name clus-1 --terminal_pod terminal-k256g-0 --tdc_tdh_version transwarp-9.0.0-final

将文件copy到上级目录
cp -r conf ../
TDC上下载相应的keytab并进行放置
由于tdc上大数据大都开启安全,故需要准备keytab文件进行认证。进入租户内的guardian,下载拥有hdfs权限的keytab放到上一步中生成的目录


cp /root/hdfs.keytab /root/tdc-client/conf/tdc/tdc-master-172.22.28.21/fzd/clus-1/
准备好jdk1.7环境变量(不需要sqoop或者对接tdh9,可以省略jdk步骤)
sqoop只能在jdk1.7版本内执行,故需要准备jdk1.7环境(可以从hdfs的pod内获取)

缩容tdc-client镜像包
如果只对接tdh9.x的版本,那么只需要保留9.x的相关jar包,删除tdc-client中自带的其他版本依赖包,减小重新持久化进行的大小
cd tdc-client/tdhpackage
rm -rf transwarp-6.2.0-final/ transwarp-7.0.0-final/ transwarp-8.0.1-final/

将tdc-client文件和jdk(TDH9以下且需要sqoop的话)目录上传至workflow-executor的pod的root目录
kubectl cp jdk1.7.0_71/ workflow-executor-bj766-0:/root/jdk1.7.0_71 -n fzd
kubectl cp tdc-client workflow-executor-bj766-0:/root/tdc-client -n fzd
pod内执行tdc-client渲染配置文件获取执行地址
cd tdc-clent
./tdc_client init_tdc #加载配置
./tdc_client workon #执行加载获取执行目录


pod 内测试hdfs命令操作成功

TDS页面测试sqoop任务(可选)
设置TDS调用的脚本如下:
#!/bin/bash
set -ex
#设置运行jdk(对接TDH9以下需要设置)
export JAVA_HOME=/root/jdk1.7.0_71
#执行tdc-client的环境变量加载
/root/tdc-client/tdc_client init_tdc
cd /root/tdc-client/scripts/../.env/fzd_clus-1
source ./env
#安全认证
kinit -kt /root/tdc-client/scripts/../.env/fzd_clus-1/hdfs.keytab hdfs@FZD.TDH
#执行sqoop
sqoop import \
--connect jdbc:mysql://172.22.23.2:3316/shufeng \
--username root \
--password 743174389 \
--table t_lsb \
--m 1 \
--delete-target-dir \
--target-dir /tmp/mysqlsqoop \
--fields-terminated-by '\t' \
--lines-terminated-by '\n'


镜像持久化

去22节点找到对应的container
docker ps | grep workflow-exe

docker commit 1fb8866d1971 172.22.28.21:5000/transwarp/workflow-executor:studio-3.2.0-final
docker push 172.22.28.21:5000/transwarp/workflow-executor:studio-3.2.0-final
重启workflow服务,再进行测试
