一、目的
在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分。而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件?
为了测试实际项目中的海豚定时调度从Kafka到HDFS的kettle任务情况,特地提前跑一下海豚定时调度这个任务,看看到底什么情况。
二、海豚调度任务配置
(一)SHELL脚本配置
#!/bin/bash
source /etc/profile
/opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/kafka_to_hdfs/ -trans=04_Kafka_to_HDFS_turnratio level=Basic >>/home/log/kettle/04_Kafka_to_HDFS_turnratio_`date +%Y%m%d`.log
(二)定时任务设置
定时任务设置为每天的零点,零点一到开始执行任务
(三)最后工作流情况
三、启动工作流
工作流启动,成功!工作流一直在跑
相应的任务实例也在跑!
四、启动工作流每天HDFS情况
(一)第一天为2023/8/30日
由于第一天开始执行任务,因此自动生成2023/08/30的HDFS文件
(二)第二天为2023/8/31日
1、2023/08/31早上更新
(1)04_Kafka_to_HDFS_turnratio任务
第二天的海豚任务自动调度,自动生成2023/08/31的HDFS文件
但问题是,除了再跑31日的任务外,30日的任务还在跑,可能是定时配置有问题,需要优化
而且这样搞容易把kettle搞出问题!
2、2023/08/31晚上更新
(1)04_Kafka_to_HDFS_turnratio任务
不设置定时任务,kettle任务一直运行,已经生成8月31日的文件,观察明天会不会自动生成9月1日的数据文件
已生成的8月31日文件
(2)01_Kafka_to_HDFS_queue任务
不设置定时任务,kettle任务一直运行,已经生成8月31日的文件,观察明天会不会自动生成9月1日的数据文件
已生成的8月31日文件
如果明早不能自动生成9月1日的文件,那就要设置海豚定时为每天的执行时间为0时0分0秒到23时59分59秒 或者在脚本里设置时间 或者在kettle里设置时间????
(三)第三天为2023/9/1日
1、2023/09/01早上更新
昨晚海豚调度的两个kettle任务以失败告终,没有自动生成9月1日的数据文件
今日再尝试其他的方式
2、2023/09/01下午更新
下午尝试用Crontab定时任务调度Kettle脚本
[root@hurys22 kettle_job_sh]# crontab -l
SHELL=/bin/bash
# */1 * * * * /bin/sh /opt/install/kettle9.2/kettle_job_sh/test2.sh
06-07 17 * * * /bin/sh /opt/install/kettle9.2/kettle_job_sh/01_Kafka_to_HDFS_queue.sh
设置每天的17点的6分到7分中执行
但是日志文件显示kettle任务却一直再跑
当然,HDFS中确实生成了9月1日今日的文件,而且任务运行时间是我设置的17点7分
这个方法不行,后面再试试其他方法?怎么就不会设置任务停止呢