启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm
問題描述:
啟動(dòng)Azkaban報(bào)錯(cuò):
java.lang.NoSuchMethodError:com.google.common.collect.ImmutableMap.toImmutableMap
解決方法:
從報(bào)錯(cuò)信息來(lái)看,是找不到toImmutableMap這個(gè)方法。首先找到類ImmutableMap對(duì)應(yīng)的Jar包為guava,然后在服務(wù)器查找這個(gè)Jar包:
find / -name "guava*.jar"
發(fā)現(xiàn)除了Azkaban安裝目錄,其他程序目錄下也有g(shù)uava包。Azkaban里面的guava包版本為guava-21.0.jar,其他程序的版本有11,14,17,18,19,21,25,懷疑是由于有多個(gè)guava包,而使用的是低版本的包,里面沒有toImmutableMap方法。
接下來(lái),看看azkaban運(yùn)行時(shí)候的classpath是什么樣的。查看Web Server啟動(dòng)文件start-web.sh:
more /u01/app/azkaban-3.50.0/azkaban-web-server-0.1.0-SNAPSHOT/bin/start-web.sh
內(nèi)容為:
#!/bin/bash
script_dir=$(dirname $0)
${script_dir}/internal/internal-start-web.sh >webServerLog_`date +%F+%T`.out 2>&1 &
調(diào)用的是internal-start-web.sh,于是再查看:
more /u01/app/azkaban-3.50.0/azkaban-web-server-0.1.0-SNAPSHOT/bin/internal/internal-start-web.sh
內(nèi)容為:
#!/bin/bash
azkaban_dir=$(dirname $0)/../..
# Specifies location of azkaban.properties, log4j.properties files
# Change if necessary
conf=$azkaban_dir/conf
if [[ -z "$tmpdir" ]]; then
tmpdir=/tmp
fi
for file in $azkaban_dir/lib/*.jar;
do
CLASSPATH=$CLASSPATH:$file
done
for file in $azkaban_dir/extlib/*.jar;
do
CLASSPATH=$CLASSPATH:$file
done
for file in $azkaban_dir/plugins/*/*.jar;
do
CLASSPATH=$CLASSPATH:$file
done
if [ "$HADOOP_HOME" != "" ]; then
echo "Using Hadoop from $HADOOP_HOME"
CLASSPATH=$CLASSPATH:$HADOOP_HOME/conf:$HADOOP_HOME/*
JAVA_LIB_PATH="-Djava.library.path=$HADOOP_HOME/lib/native/Linux-amd64-64"
else
echo "Error: HADOOP_HOME is not set. Hadoop job types will not run properly."
fi
if [ "$HIVE_HOME" != "" ]; then
echo "Using Hive from $HIVE_HOME"
CLASSPATH=$CLASSPATH:$HIVE_HOME/conf:$HIVE_HOME/lib/*
fi
echo $azkaban_dir;
echo $CLASSPATH;
executorport=`cat $conf/azkaban.properties | grep executor.port | cut -d = -f 2`
serverpath=`pwd`
if [[ -z "$AZKABAN_OPTS" ]]; then
AZKABAN_OPTS="-Xmx4G"
fi
# Set the log4j configuration file
if [ -f $conf/log4j.properties ]; then
AZKABAN_OPTS="$AZKABAN_OPTS -Dlog4j.configuration=file:$conf/log4j.properties -Dlog4j.log.dir=$azkaban_dir/logs"
else
echo "Exit with error: $conf/log4j.properties file doesn't exist."
exit 1;
fi
AZKABAN_OPTS="$AZKABAN_OPTS -server -Dcom.sun.management.jmxremote -Djava.io.tmpdir=$tmpdir -Dexecutorport=$executorport -Dserverpat
h=$serverpath"
java $AZKABAN_OPTS $JAVA_LIB_PATH -cp $CLASSPATH azkaban.webapp.AzkabanWebServer -conf $conf $@ &
echo $! > $azkaban_dir/currentpid
可以看到,Azkaban安裝目錄的jar包是在原$CLASSPATH之后的,如下:
總結(jié)
以上是生活随笔為你收集整理的启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 附近的近义词是什么
- 下一篇: ora-00923数据类型不一致_小白学