以下仅是我根据我公司实际情况做出的配置设计,不代表所有,仅供参考。
硬件:一台Mac Pro(A),两台 Ubuntu 服务器(B和C)
角色分配:
A : 在我的Mac Pro上 使用 Kettle UI客户端 设计调试 转换 和 作业,调试完成后保存到远程资源库(在B上使用MySQL数据库来保存)
B : 建立 MySQL 数据库保存调试好的 转换 和 作业
C : 安装 Kettle (别忘记copy过来用到的各种数据库的驱动),使用命令行模式,用来自动定时执行保存在 B 中的作业和转换
注意: B 和 C 可在同一台机器上
原来我就在我自己的Mac上开发调试,等要切到生产环境的时候遇见了一个最大的问题:
仔细思考以后把问题分解成了三个小问题:
解决方案:分两步:
第一步,将作业和转换保存到数据库资源库
第二步,从资源库取作业和转换执行
将 job 保存到远程资源库,不推荐文件资源库,因为windows和Linux之间文件路径不通用,可能会出现一些问题,建议数据库资源库。
Kettle如何连接数据库资源库?
在这过程中发现导入的转换和作业名字乱码都是??问号,查找原因是 Mysql 数据库字符集配置的问题。
Ubuntu 下 MySql 修改数据库编码为UTF8
一点需要注意的是:同一个作业的 .kjb 和 .ktr 文件要放在同一个目录下,不然 作业 会找不见 里边的转换
我在kettle执行服务器中使用./kitchen.sh -listrep
命令要找出可用的资源库,发现找不见。我想来也是找不见,因为资源库在另一台服务器的MySql数据库里,我在这台执行 kettle 任务的服务器上自然找不见。既然找不见,那肯定是要配置数据库连接等配置的,配置文件在哪里呢?经过仔细搜索后,
据说是在 .kettle 文件夹下的 repositories.xml 文件里。
.kettle 在哪里?
在用户目录下,。所以:
cd ~
切换到当前用户的目录下
ls -a
找找看,有没有.kettle,.kettle 看名字就知道是隐藏文件夹,所以 需要加-a
,用来显示隐藏目录,让他露出原形。
接下来,在 .kettle 文件夹下果然找见了 repositories.xml。
切换到执行 kettle 任务的服务器,到当前用户目录下 ls -a
,果然也有 .kettle 文件夹,但是打开以后却是空的,没有 repositories.xml 文件,所以也就能解释的通,为什么在这台机器上使用 ./kitchen.sh -listrep
找不见可用的资源库了。
我们把在我小情人Mac Pro下找到的 repositories.xml 文件使用 scp
命令复制到这台 kettle 执行服务器的 .kettle 文件夹下。
scp 跨机远程拷贝
再次使用 ./kitchen.sh -listrep
,果然能找到可用的资源库了。
执行./kitchen.sh -rep kettle_repository -user admin -pass admin -listdir
,可能会遇见一下问题
ERROR: Bundle pentaho-webjars-deployer [10] Unable to get module class path. (java.lang.RuntimeException: Unable to open JAR file, probably deleted: error in opening zip file)
。。。
我把/opt/data-integration/system/karaf/caches
下边的缓存数据清除掉,再执行就可以了
解决方案:在另一台服务器上安装 Kettle ,使用 linux 的定时任务来调用 Kettle 命令行执行 资源库中的 作业和转换
linux系统下调度数据库类型资源库中的kettle job
./kitchen.sh -rep kettle_repository -user admin -pass admin -dir /default -job test -level=debug >> /root/kettlelog/test.log
遇见的问题: ubuntu中不支持中文目录和文件名
因为有些作业和转换名字是中文的,但是在ubuntu下命令行和vim文档都是中文乱码,而且无法输入中文。解决办法如下:
ubuntu 16.04 英文版命令行安装中文语言包
安装完就可以了。
安装中文语言包
sudo apt-get install language-pack-zh-han*
安装gnome包
sudo apt-get install language-pack-gnome-zh-han*
安装kde包
sudo apt-get install language-pack-kde-zh-han*
到这里就能够查看目录下面的中文字符了。
最后运行语言支持检查
sudo apt install $(check-language-support)
linux系统下调度数据库类型资源库中的kettle job
Ubuntu下运行Shell脚本
crontab 定时任务
遇见的问题:
export JAVA_HOME = /usr/lib/jvm/java-8-oracle
echo $JAVA_HOME
命令,