运行命令时Flume运行成功
/opt/module/flume/bin/flume-ng agent --conf /opt/module/flume/conf --conf-file /opt/module/flume/conf/file_flume_kafka.conf --name a1 -Dflume.root.logger=INFO,console
[root@master bin]# jps
12193 Application
10259 QuorumPeerMain
12310 Jps
10751 Kafka
但是当我运行我写的启动脚本时,它不起作用。脚本如下:
# ! /bin/bash
case $1 in
"start"){
for i in master slaves01
do
echo " --------启动 $i 采集flume-------"
ssh $i "/opt/module/flume/bin/flume-ng agent --conf /opt/module/flume/conf --conf-file /opt/module/flume/conf/file_flume_kafka.conf --name a1 -Dflume.root.logger=INFO,console"
echo "-------运行完命令-----------"
done
};;
"stop"){
for i in master slaves01
do
echo " --------停止 $i 采集flume-------"
ssh $i "ps -ef | grep file_flume_kafka | grep -v grep |awk '{print \$2}' | xargs kill"
done
};;
esac
控制台显示:
[root@master flume]# f1.sh start
--------启动 master 采集flume-------
Info: Sourcing environment configuration script /opt/module/flume/conf/flume-env.sh
Info: Including Hive libraries found via () for Hive access
+ exec /opt/module/jdk1.8.0_144/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp '/opt/module/flume/conf:/opt/module/flume/lib/*:/lib/*' -Djava.library.path= org.apache.flume.node.Application --conf-file /opt/module/flume/conf/file_flume_kafka.conf --name a1
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Lists
at org.apache.flume.node.Application.main(Application.java:346)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Lists
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
-------运行完命令-----------
--------启动 slaves01 采集flume-------
Info: Sourcing environment configuration script /opt/module/flume/conf/flume-env.sh
Info: Including Hive libraries found via () for Hive access
+ exec /opt/module/jdk1.8.0_144/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp '/opt/module/flume/conf:/opt/module/flume/lib/*:/lib/*' -Djava.library.path= org.apache.flume.node.Application --conf-file /opt/module/flume/conf/file_flume_kafka.conf --name a1
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Lists
at org.apache.flume.node.Application.main(Application.java:346)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Lists
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
-------运行完命令-----------
键入“jps”:
[root@master bin]# jps
10259 QuorumPeerMain
12539 Jps
10751 Kafka
[root@master bin]#
我在网上找了很久。但没用。请帮助或尝试给出一些解决方法。
1条答案
按热度按时间zlhcx6iw1#
如果你的情况和我在ubuntu机器上运行的情况相似,你可以尝试我成功尝试的方法。
您可以删除默认值
guava11*.jar
在flume的lib文件夹里,对吗?在正常情况下,删除这个jar之后,flume会查找
$HADOOP_HOME
在hadoop中使用Guava。然后你去复印guava*.jar
在hadoop到flume中,应该没事,可能是环境变量的问题。
linux环境变量,是否登录,是否交互访问,决定了系统的加载顺序
/etc/profile
以及/etc/profile.d/*.sh
以及~/.bashrc
以及~/.profile
或其他文件。ubuntu查找环境变量的步骤似乎与centos不同。我对细节不是很精通。我只知道有这样一个序列。在centos和ubuntu的同一位置改变环境变量,ssh到远程机器上执行某个命令,可能一个可以找到该命令,另一个可能找不到该命令。