一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)

这篇具有很好参考价值的文章主要介绍了一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目的

在实际项目中,从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 

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(二)定时任务设置

定时任务设置为每天的零点,零点一到开始执行任务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(三)最后工作流情况

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

三、启动工作流

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

工作流启动,成功!工作流一直在跑

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

相应的任务实例也在跑!

四、启动工作流每天HDFS情况

(一)第一天为2023/8/30日

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

由于第一天开始执行任务,因此自动生成2023/08/30的HDFS文件

(二)第二天为2023/8/31日

1、2023/08/31早上更新

(1)04_Kafka_to_HDFS_turnratio任务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

第二天的海豚任务自动调度,自动生成2023/08/31的HDFS文件

但问题是,除了再跑31日的任务外,30日的任务还在跑,可能是定时配置有问题,需要优化

而且这样搞容易把kettle搞出问题!

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

2、2023/08/31晚上更新

(1)04_Kafka_to_HDFS_turnratio任务

不设置定时任务,kettle任务一直运行,已经生成8月31日的文件,观察明天会不会自动生成9月1日的数据文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

已生成的8月31日文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)01_Kafka_to_HDFS_queue任务

不设置定时任务,kettle任务一直运行,已经生成8月31日的文件,观察明天会不会自动生成9月1日的数据文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

已生成的8月31日文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

如果明早不能自动生成9月1日的文件,那就要设置海豚定时为每天的执行时间为0时0分0秒到23时59分59秒  或者在脚本里设置时间  或者在kettle里设置时间????

(三)第三天为2023/9/1日

1、2023/09/01早上更新

昨晚海豚调度的两个kettle任务以失败告终,没有自动生成9月1日的数据文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

今日再尝试其他的方式

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——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

但是日志文件显示kettle任务却一直再跑

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

当然,HDFS中确实生成了9月1日今日的文件,而且任务运行时间是我设置的17点7分

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

这个方法不行,后面再试试其他方法?怎么就不会设置任务停止呢

(四)第四天为2023/9/4日

1、2023/09/04早上更新

由于Kafka里有时间戳字段,因此在kettle任务里获取当前系统时间戳的日期字段、然后文件名直接从这个日期字段获取

(1)当前系统时间戳的日期字段

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)HDFS输出中文件名直接获取这个日期字段,这样kettle任务运行时,是不是能自动生成每天的数据文件?

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(3)测试结果,任务可以跑通,但是HDFS生成的文件不知却在哪?

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

终于查到了,原来这样导出的文件不在HDFS,而在kettle的安装文件里,即在本地

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

而且这么直接以日期命名也有问题,因为有多个Kafka,不可能仅仅以日期命名区分

2、2023/09/04晚上更新 

因为上午的思路有问题,导出的文件没有在HDFS中,反而在本地,于是下午又换了种思路。

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

还是从系统获得时间day,但是文件路径直接写成HDFS的文件路径+day,这样的url字段才是HDFS输出控件中的文件名字段

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(1)用海豚调度对比,定时调度01_Kafka_to_HDFS_queue任务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

目前已生成生成9月4日的文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)用海豚调度对比,不加定时调度04_Kafka_to_HDFS_turnratio任务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式目前已生成生成9月4日的文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(五)第五天为2023/9/5日

1、2023/09/05早上更新

虽然自动生成了9月5日的文件,但是由于数据量过大、加上把hadoop.tmp.dir放在了/opt/soft/hadoop313/hadooptmp,导致opt文件夹磁盘溢出,使得namenode处于安全模式。

花了一上午时间终于解决NameNode的安全模式问题,发现应该把HADOOP 运行时存储路径放在home目录下,因为home的磁盘空间最大

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

2、2023/09/05晚上更新

惊喜!!!

可能已经找到了解决方法,直接对Kafka里的时间戳字段进行截取,然后拼接文件路径,从而形成一个可以根据时间戳字段的日期变动的HDFS文件,即每天自动生成一个数据文件

(1)通过Java自定义文件名  字段url(HDFS路径+截取的可变的时间戳字段)

var url="hdfs://root:***@hurys22:8020/rtp/queue_dynamic/queue_dynamic"+substr(create_time,0,10)

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)在HDFS输出控件的文件就选择url字段
一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式(3)结果

已经生成了9月5日的数据文件,不需要海豚定时调度,只需要海豚一直跑kettle任务即可!

虽然还是生成了9月5日的数据文件,不过我今天下午按照生成每小时维度的数据文件测试过

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

下午16时运行任务,生成了16时的数据文件,然后到17时,又生成了17时的数据文件,这两个数据文件都在跑,而且HDFS里大小显示都为0。

不过区别是,16时的数据是完整的,17时的数据文件是不断增加的。因为Kafka是实时的,17时只会发送17时的数据,不会发送16时数据。下面是16时的文件数据

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

16时的数据文件是有固定的数据,17点后就没有再写入数据。之所以看不到这个这个block的大小,是因为写入数据的规模太小了,等到这个写入的数据规模达到128MB,即一个块大小后才会看到这个block的数据。

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

所以只要一直运行这个kettle任务、不断写入数据即可,只要写入的数据规模达到128MB,第一个block就会被看到。

已用海豚调度一个kettle任务,没有定时,就一直跑。目前HDFS已生成了9月5日的数据文件,明天就可以观察几点

1、有没有自动生成明天9月6日的数据文件

2、今天9月5日的数据文件里面的数据是不是固定的、完整的,晚上12点之后不再写入

3、等到写入数据规模达到128MB看第一个block的数据大小可不可看到?

明天9月6日除了看这几点外,还用flume去做Kafka到HDFS的采集工作,以防万一,这两天被这个问题搞得头疼,kettle真是一个易入门难精通的工具!

(六)第六天为2023/9/6日

1、2023/09/06早上更新

由于昨晚Kafka突然有问题,导致kettle没能导入数据到HDFS的文件,今早已重新启动Kafka服务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(1)目前已重新启动海豚调度的kettle服务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)目前已自动生成9月6日的数据文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(3)只能明天9月7日看一下昨晚的3个问题

1、有没有自动生成明天9月7日的数据文件

2、今天9月6日的数据文件里面的数据是不是固定的、完整的,晚上12点之后不再写入

3、等到写入数据规模达到128MB看第一个block的数据大小可不可看到?

2、2023/09/06下午更新

(1)为了以防万一,加了个对比测试。看看如果一天的数据放不满一个block或者部分多余数据放不满一个block,可不可以正常显示?即使它总的写入数据量大于128MB

不仅多加了几台模拟设备推送数据,还对动态排队数据和静态排队数据两个kettle任务进行对比

(2)动态排队数据有自动日期分区,可以自动分成不同日期的文件,就是昨晚跑的kettle任务

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式文章来源地址https://www.toymoban.com/news/detail-685213.html

(3)而静态排队数据没有日期分区,就往第一个日期文件里写入数据

目前静态排队数据也已经生成了9月6日的数据文件,后面会一直写入这个文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

明早对比这两个kettle任务的数据文件看看情况

(七)第七天为2023/9/7日

1、2023/09/07早上更新

A、HDFS文件有日期分区的动态排队数据kettle任务状况

(1)首先是自动生成9月7日的文件

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(2)然后是6日的数据文件固定,没有7日的数据

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

(3)6日的数据这一块由于只有62.8MB,因此HDFS的块没有显示大小

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

B、HDFS文件没有日期分区的静态排队数据kettle任务状况

由于写入的HDFS文件没有日期分区,而且数据量写入超过了128MB,所以这一块的数据虽然在不断写入,但是这一块的文件显示大小为128MB

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

疑问:现在任务依然运行,我想看看这个块已经有128MB后,会不会在其他block写入数据?

2、2023/09/07晚上更新

A、HDFS文件有日期分区的动态排队数据kettle任务状况

(1)今日9月7日写入的数据量超过128MB,因此HDFS已显示文件大小

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

总结一下:用kettle采集Kafka数据写入HDFS这条路是可行的,只要设置变动的文件名、生成每日的数据文件,然后一直跑任务就好!!!

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善),Kettle,大数据调度工具,kafka,hdfs,分布式

到了这里,关于一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA面试题分享一百六十三:Kafka如何实现延时推送?

    目录 一、延时队列定义 二、技术实现方案 1. Redis 2. Kafka 3. RabbitMQ 4. RocketMQ 三、Kafka延时队列背景 四、Kafka延时队列实现思路 六、Kafka延时队列架构图 七、kafka延时任务代码实现 1. KafkaDelayQueue:Kafka延迟队列 2. KafkaDelayQueueFactory:Kafka延迟队列工厂 3. KafkaPollListener:Kafka延迟队

    2024年02月04日
    浏览(73)
  • JAVA面试题分享一百六十二:Kafka消息重复消费问题?

    消息重复消费的根本原因都在于:已经消费了数据,但是offset没有成功提交。 其中很大一部分原因在于发生了再均衡。 1)消费者宕机、重启等。导致消息已经消费但是没有提交offset。 2)消费者使用自动提交offset,但当还没有提交的时候,有新的消费者加入或者移除,发生

    2024年02月03日
    浏览(46)
  • 每天一个数据分析题(一百六十)

    以下关于代码片段(使用sklearn)的使用和PCA(主成分分析)的描述中,哪项是正确的? A. preprocessing.scale(data)用于对数据进行归一化处理,确保PCA分析前各特征处于同一量级。 B. PCA(n_components=9)将数据降维了9个主成分。 C. pca.explained_variance_输出的是降维后各主成分的方差。

    2024年02月20日
    浏览(49)
  • 第一百六十四回 如何实现NumberPicker

    我们在上一章回中介绍了\\\"如何在任意位置显示PopupMenu\\\"相关的内容,本章回中将介绍 如何实现NumberPicker .闲话休提,让我们一起Talk Flutter吧。 我们在本章回中介绍的 NumberPicker 主要用来实现数字选择功能,比如选择年月日,当然也可以使用 YearPicker 实现,不过YearPicer是把年月

    2024年02月07日
    浏览(63)
  • 每天一个数据分析题(一百六十四)

    关于OLAP系统,下列选项不正确的是() A. 是基于数据仓库的信息进行分析处理过程 B. 用户数量相对较少,其用户主要是业务决策人员与管理人员 C. 对响应时间要求非常高。 D. 基础数据来源于生产系统的操作数据,也就是说,OLAP系统的数据来源与OLTP系统。 题目来源于CDA模

    2024年02月22日
    浏览(50)
  • PCL点云处理之多种体素滤波方法大汇总(一百六十四)

    对PCL中的基于八叉树体素滤波方法,以及在此基础上,自己进一步实现的新滤波方法,进行一个汇总,列出各自的效果和,具体的实现代码 PCL中自带的滤波方法,也是最常用的滤波方法,应该是体素中的点云重心取代原始点,但使用时要注意体素不可过小,

    2024年02月05日
    浏览(52)
  • 一百六十九、Hadoop——Hadoop退出NameNode安全模式与查看磁盘空间详情(踩坑,附截图)

    在海豚跑定时跑kettle的从Kafka到HDFS的任务时,由于Linux服务器的某个文件磁盘空间满了,导致Hadoop的NodeName进入安全模式,此时光执行 hdfs dfsadmin -safemode leave命令语句没有效果( 虽然显示Safe mode is OFF,但没效果,一旦执行还是报错 ) Caused by: org.apache.hadoop.ipc.RemoteException(org

    2024年02月10日
    浏览(44)
  • 一百八十九、ClickHouse——在海豚调度器中执行ClickHouse建库建表语句

    由于Hive处理好的结果数据要同步到ClickHouse中,因此需要在在海豚调度器中执行ClickHouse的ADS层的建库建表语句 1、直接在海豚中创建执行SQL文件脚本的工作流 (1)第一步,在资源中心上传ADS层的建库建表SQL文件 (2)第二步,在项目里建工作流,添加运行SQL文件的脚本 #! /b

    2024年02月07日
    浏览(47)
  • Linux下部署kettle并配置定时调度

    1、安装JAVA (1) 查看原系统版本,从图中可以看出JDK版本为openJDK需要卸载,如果没有安装跳过即可 (2) 查看安装信息 (3) 卸载OPENJDK (4) 下载对应的JDK版本 这里我使用的kettle是9.1的,jdk-8u371-linux-x64.tar测试可用 (5) 配置环境变量 添加如下行: 使环境变量生效 (6) 验证JDK是否安装成功

    2024年02月07日
    浏览(31)
  • 一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

    Kafka到HDFS,除了用Kafka API和flume之外,还可以用kettle,最大优点是不用写代码! 版本:Kettle版本:8.2、Hadoop版本:3.1.3 前提:    详情请看鄙人的一百零一、Kettle8.2.0连接Hive3.1.2(踩坑,亲测有效) http://t.csdn.cn/mWfOC http://t.csdn.cn/mWfOC 前提一、Hadoop系列配置文件已复制到kettle路径

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包