平台:
Flume版本 1.9.0
Kafka版本 2.12
Mysql版本 8.0.23
Hadoop版本 3.1.3
在windows环境下,做flume实验过程中,第一个用Flume实时捕捉MySQL数据库中的记录更新实验中基本比较简单,但是还是要注意conf文件,在配置中需要注意apache-flume-1.9.0的位置
‘a1.sources.r1.status.file.path=C:/software/apache-flume-1.9.0-bin’
否则会遇到下面这样的报错:
2023-11-16 19:42:42,945 (PollableSourceRunner-SQLSource-r1) [ERROR - org.keedio.flume.source.SQLSourceHelper.updateStatusFile(SQLSourceHelper.java:217)] Error writing incremental value to status file!!!
java.io.FileNotFoundException: C:\software\apache-flume-1.9.0-bin\status (系统找不到指定的路径。)
就是路劲错误引起的。
另外!!!
做实验前一定配置好环境,安装好flume-ng-sql-source-1.5.2.jar以及mysql-connector-java-8.0.23.jar
放到lib文件夹下。
否则报错报错报错!!!!
[ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:147)] Failed to load configuration data. Exception follows.
org.apache.flume.FlumeException: Unable to load source type: org.keedio.flume.source.SQLSource, class: org.keedio.flume.source.SQLSource
解决:
————————————————————————————————————————
Caused by: java.lang.ClassNotFoundException: org.keedio.flume.source.SQLSource
解决:是因为缺少flume-ng-sql-source jar包导致的,找到相应的包,GitHub - keedio/flume-ng-sql-source: Flume Source to import data from SQL DatabasesFlume Source to import data from SQL Databases . Contribute to keedio/flume-ng-sql-source development by creating an account on GitHub.https://github.com/keedio/flume-ng-sql-source
然后放到lib文件夹下C:\apache-flume-1.9.0-bin\lib
在第二个编写Flume配置文件,将Kafka作为输入,通过Flume将Kafka生产者输入的信息存入HDFS中的实验,最大的问题是flume的启动问题:
process failed
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)
Exception in thread "SinkRunner-PollingRunner-DefaultSinkProcessor" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)
报错截图:
有大佬说是因为jar包冲突的原因,去查guava包,在flume的lib的版本是11.0.9,在hadoop的lib下是28.0。
解决办法是把高版本的guava复制到低版本的lib中,同时删掉低版本guava。
再次启动apache-flume-1.9.0,这一类错误消失。
另一个启动错误:
启动zookeeper、启动Kafka、创建Kafka的topic、创建Kafka生产者、启动HDFS,最后启动flume。一切宛如表面一样的美好安静,是的。接着在启动生产者的窗口中输入“Hello Flume”
打开浏览器,http://localhost:9870/explorer.html#,没有记录。回去看flume窗口:
报错:
Did not find winutils.exe: {}
java.io.FileNotFoundException: Hadoop bin directory does not exist: C:\hadoop-3.1.3\bin\bin -see https://wiki.apache.org/hadoop/WindowsProblems
看报错原因是Hadoop路劲下多了bin,所以去系统环境变量里去改,
系统变量:
HADOO_HOME:C:\hadoop-3.1.3\
Path:
C:\hadoop-3.1.3\bin
再次启动,运行成功。
第三个实验简单,所以再没有需要多余叙述的地方。