报错内容

ERROR - org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:459)
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)
报错如下图
记一次 Flume v1.9.0启动报错ERROR - org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:459)_flume

集群背景(基于 Hadoop 3.3.0 集群安装部署 Flume 1.9.0)

1、Hadoop 3.3 HDFS 分布式集群基础环境
javascript:void(0)
2、Flume 设置了sink.type 为 hdfs
即:

# 配置sink组件
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path =hdfs://master:9820/user/flume/data
agent1.sinks.sink1.hdfs.fileType = DataStream
报错原因

Hadoop 3.3.0 中的 guava 版本和 Flume 1.9.0 中的版本不一致
经查
Hadoop 3.3.0 中 guava-27.0-jre.jar

[root@master ~]# ll /usr/bigdata/hadoop-3.3.0/share/hadoop/common/lib/
-rw-r--r-- 1 yarn yarn 2747878 7月   7 02:47 guava-27.0-jre.jar

Flume 1.9.0 中 guava-11.0.2.jar

[root@master ~]# ll /usr/bigdata/apache-flume-1.9.0-bin/lib/
-rw-r--r-- 1 root root 1648200 9月  13 2018 guava-11.0.2.jar
解决方案

删除低版本的 guava ,把高版本的 guava 复制一份放在低版本处
删除 Flume 中的 guava

[root@master ~]# rm -rf /usr/bigdata/apache-flume-1.9.0-bin/lib/guava-11.0.2.jar

把 Hadoop 中的 guava 复制到 Flume 中

[root@master ~]# cp /usr/bigdata/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /usr/bigdata/apache-flume-1.9.0-bin/lib/

重新启动 Flume 问题解决!