kettle on docker

  • Post author:
  • Post category:其他




一、制作kettle镜像

服务器已部署kettle,现需要将部署方式变更为docker部署。

基于kettle8.3。因为本地已经安装过kettle,并且使用的为文件资源库,所以这里配置文件及资源库采用映射



1.1 安装docker(略)



1.2 拉取centos镜像

docker pull centos



1.3 启动镜像,配置KETTLE

# 启动centos镜像
docker run -d -it centos /bin/bash

# 进入镜像
docker exec -it [容器ID] bash

# 新建所需目录
mkdir /opt/java
mkdir /opt/kettle
mkdir -p /data/bigdata_etl
mkdir /root/.kettle

# 退出镜像,上传jdk与kettle。如果是安装包,需要上传后进入容器解压,这里直接上传解压后的文件
exit

docker cp /data/module/jdk1.8.0_301/ [容器ID]:/opt/java
docker cp /data/module/kettle8.3/ [容器ID]:/opt/kettle

# 重新进入容器,配置java环境变量
vi /etc/bashrc
# 在文件末尾加上
export JAVA_HOME=/opt/java/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin

source /etc/bashrc
# 如果命令直接执行需要用到java,可以将java软连接到bin下
ln -s /opt/java/jdk1.8.0_301/bin/jar /bin/jar
ln -s /opt/java/jdk1.8.0_301/bin/java /bin/java
ln -s /opt/java/jdk1.8.0_301/bin/javac /bin/javac
ln -s /opt/java/jdk1.8.0_301/bin/javah /bin/javah
ln -s /opt/java/jdk1.8.0_301/bin/javadoc /bin/javadoc

# 执行java命令,测试环境变量是否配置完成
java -version

# 如果kettle任务中有用到其他组件或程序,也需要在容器内安装
# 如果有用到hosts映射,添加映射
# 根据具体场景配置所需环境
# 注意时区问题,镜像默认为UTC+0 
# 如果需要调整为国内时区可以
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
对应kettle这种java应用,则可以在启动参数里加上 -Duser.timezone=GMT+8
vi $KETTLE_HOME/spoon.sh
在 OPT="... -Duser.timezone=GMT+8"里加上 



1.4 打包镜像

# 退出镜像后,commit打包镜像
docker commit -a "xxx" -m "kettle8.3" [容器ID] kettle:8.3

# 查看镜像
docker images

# 运行镜像
docker run -d -v /root/.kettle:/root/.kettle -v /data/bigdata_etl:/data/bigdata_etl -it kettle:8.3 /bin/bash

# 进入kettle容器内,测试能否正常运行kettle
/opt/kettle/kettle8.3/kitchen.sh -rep xxx -dir /test_etl -job test_job

# 关于使用,可以命令传参的方式一次性运行docker容器,也可以开启一个常驻容器,使用命令或者子服务器使用。可根据不同场景自行选择
# 一次性调度示例:
docker run --network=host -v /root/.kettle:/root/.kettle -v /data/bigdata_etl:/data/bigdata_etl --rm kettle:8.3 /bin/bash /opt/kettle/kettle8.3/kitchen.sh -rep bigdata_repo -dir /test_etl -job test_job



版权声明:本文为github_39319229原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。