记录flume运行时报NullPointerException异常

ops/2024/10/21 10:15:06/

【背景说明】

我要起一个将kafka上的topic_log主题中的数据上传到hdfs上的flume进程。

这是我的flume配置文件脚本:

#定义组件
a1.sources=r1
a1.channels=c1
a1.sinks=k1#配置source1
a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.r1.batchSize = 5000
a1.sources.r1.batchDurationMillis = 2000
a1.sources.r1.kafka.bootstrap.servers= = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.sources.r1.kafka.topics=topic_log
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = com.atguigu.flume.interceptor.TimestampInterceptor$Builder#配置channel
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /opt/module/flume/checkpoint/behavior1
a1.channels.c1.dataDirs = /opt/module/flume/data/behavior1
a1.channels.c1.maxFileSize = 2146435071
a1.channels.c1.capacity = 1000000
a1.channels.c1.keep-alive = 6#配置sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /origin_data/gmall/log/topic_log/%Y-%m-%d
a1.sinks.k1.hdfs.filePrefix = log
a1.sinks.k1.hdfs.round = falsea1.sinks.k1.hdfs.rollInterval = 10
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0#控制输出文件类型
a1.sinks.k1.hdfs.fileType = CompressedStream
a1.sinks.k1.hdfs.codeC = gzip#组装 
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

我上面这个flume是没问题的,但我在起它的时候:[atguigu@hadoop102 flume]$ bin/flume-ng agent -n a1 -c conf/ -f job/kafka_to_hdfs_log.conf 

报了如下2个错误:

【报错1】

四月 2024 01:08:35,304 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.SinkRunner$PollingRunner.run:158)  - Unable to deliver event. Exception follows.
java.lang.IllegalStateException: Channel closed [channel=c1]. Due to java.io.IOException: File /opt/module/flume-1.10.1/data/behavior1/log-14 has bad version 7f000001
        at org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:358) ~[flume-file-channel-1.10.1.jar:1.10.1]
        at org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:123) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:365) ~[flume-hdfs-sink-1.10.1.jar:1.10.1]
        at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:39) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:145) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_121]
Caused by: java.io.IOException: File /opt/module/flume-1.10.1/data/behavior1/log-14 has bad version 7f000001
        at org.apache.flume.channel.file.LogFileFactory.getRandomReader(LogFileFactory.java:100) ~

这个报错的原因是这两个文件夹里的数据损坏了,删掉这两个文件里的内容

cd checkpoint/

rm -rf behavior*

cd data/        

rm -rf behavior*

【报错2】

四月 2024 01:39:22,929 ERROR [PollableSourceRunner-KafkaSource-r1] (org.apache.flume.source.kafka.KafkaSource.doProcess:327)  - KafkaSource EXCEPTION, {}
java.lang.IllegalStateException: Channel closed [channel=c1]. Due to java.lang.NullPointerException: null
        at org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:358) ~[flume-file-channel-1.10.1.jar:1.10.1]
        at org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:123) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:183) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at org.apache.flume.source.kafka.KafkaSource.doProcess(KafkaSource.java:308) ~[flume-kafka-source-1.10.1.jar:1.10.1]
        at org.apache.flume.source.AbstractPollableSource.process(AbstractPollableSource.java:60) ~[flume-ng-core-1.10.1.jar:1.10.1]
        at org.apache.flume.source.PollableSourceRunner$PollingRunner.run(PollableSourceRunner.java:133) ~[flume-ng-core-1.10.1.jar:1.10.1]

这个报错的原因是里面有JSONObject这个类找不到,解决办法有两个,要么把对应的这个类单独上传到flume的lib目录下,要么重新打包,把带dependencies的jar传到lib目录下。

再重新跑就行了。


http://www.ppmy.cn/ops/4858.html

相关文章

新兴存内计算芯片架构、大型语言模型、多位存内计算架构——存内计算架构的性能仿真与对比分析探讨

CSDN存内社区招募:https://bbs.csdn.net/forums/computinginmemory? 首个存内计算开发者社区,现0门槛新人加入,发文享积分兑超值礼品; 存内计算先锋/大使在社区投稿,可获得双倍积分,以及社区精选流量推送…

项目管理利器 Git

一、序言 今天聊聊 Git。 二、开发的问题 在开发项目时,我们的代码都是直接放在本地的机器上的。如果本地机器出现了问题,怎么办?在企业中,开发项目都是团队协作,一个团队共同维护一个项目该如何处理?团…

HTML快速入门

HTML简介 HTML(超文本标记语言)是一种用于创建网页和Web应用程序的标记语言。它由一系列标签组成,每个标签通过尖括号来定义,并用于标记文本、图像、链接和其他内容。HTML标签描述了网页中的信息结构和布局,并定义了文…

Linux中进程和计划任务

一.程序 1.什么是程序 (1)是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具 (2)用于描述进程要完成的功能,是控制进程执行的指令集 二.进程 1.什么是进程…

vue 3 中i18n字符串 转义问题

文章目录 前言原因分析解决方案1. 特殊字符的转义2. 占位符与变量插值3. HTML标记4. 多行字符串 前言 本地没有问题,打包就有问题,最后排查是i18n问题,这里记录下 原因分析 特殊符号被误解析:某些特殊符号可能在字符串解析时被特…

SQL SERVER的安装

目录 1.百度SQL SERVER找到图下的所显示的,点击进去 2.找到图下红色框起来的,点击立即下载 3.下载好之后点开,选择下载介质 4.SQLSERVER下载成功之后选择打开文件夹 6.双击后缀名是.iso的镜像文件 7.双击setup.exe进行安装 8.安装成功…

React-hooks:useReducer

useReducer 文档地址 useReducer 是一个 React Hook,它允许你向组件里面添加一个 reducer。 对于拥有许多状态更新逻辑的组件来说,过于分散的事件处理程序可能会令人不知所措。对于这种情况,你可以将组件的所有状态更新逻辑整合到一个外部函…

山岭隧道及道路3D建模教程【Blender】

创建具有恒定坡度的山路、隧道的信息和技术似乎散布在互联网上。 在这篇文章中,我将它们全部收集在一起。 这篇文章的大纲如下: 创建一座山创建一条路挖一条隧道 道路的坡度将固定为常数,从而消除颠簸。 NSDT工具推荐: Three.j…