日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

啟動Azkaban報錯:

java.lang.NoSuchMethodError:com.google.common.collect.ImmutableMap.toImmutableMap

解決方法:

從報錯信息來看,是找不到toImmutableMap這個方法。首先找到類ImmutableMap對應的Jar包為guava,然后在服務器查找這個Jar包:

find / -name "guava*.jar"

發現除了Azkaban安裝目錄,其他程序目錄下也有guava包。Azkaban里面的guava包版本為guava-21.0.jar,其他程序的版本有11,14,17,18,19,21,25,懷疑是由于有多個guava包,而使用的是低版本的包,里面沒有toImmutableMap方法。

接下來,看看azkaban運行時候的classpath是什么樣的。查看Web Server啟動文件start-web.sh:

more /u01/app/azkaban-3.50.0/azkaban-web-server-0.1.0-SNAPSHOT/bin/start-web.sh

內容為:

#!/bin/bash

script_dir=$(dirname $0)

${script_dir}/internal/internal-start-web.sh >webServerLog_`date +%F+%T`.out 2>&1 &

調用的是internal-start-web.sh,于是再查看:

more /u01/app/azkaban-3.50.0/azkaban-web-server-0.1.0-SNAPSHOT/bin/internal/internal-start-web.sh

內容為:

#!/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之后的,如下:

總結

以上是生活随笔為你收集整理的启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。