web-dev-qa-db-ja.com

Spark Hadoopなし:起動に失敗しました

Ubuntu16.04でSpark 2.1.0、Hive 2.1.1、Hadoop2.7.3を実行しています。

Sparkプロジェクトをgithubからダウンロードし、「hadoopなし」バージョンをビルドします。

./dev/make-distribution.sh --name "hadoop2-without-Hive" --tgz "-Pyarn、hadoop-provided、hadoop-2.7、parquet-provided"

./sbin/start-master.shを実行すると、次の例外が発生します。

 Spark Command: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java -cp /home/server/spark/conf/:/home/server/spark/jars/*:/home/server/hadoop/etc/hadoop/:/home/server/hadoop/share/hadoop/common/lib/:/home/server/hadoop/share/hadoop/common/:/home/server/hadoop/share/hadoop/mapreduce/:/home/server/hadoop/share/hadoop/mapreduce/lib/:/home/server/hadoop/share/hadoop/yarn/:/home/server/hadoop/share/hadoop/yarn/lib/ -Xmx1g org.Apache.spark.deploy.master.Master --Host ThinkPad-W550s-Lab --port 7077 --webui-port 8080
 ========================================
 Error: A JNI error has occurred, please check your installation and try again
 Exception in thread "main" Java.lang.NoClassDefFoundError: org/slf4j/Logger
     at Java.lang.Class.getDeclaredMethods0(Native Method)
     at Java.lang.Class.privateGetDeclaredMethods(Class.Java:2701)
     at Java.lang.Class.privateGetMethodRecursive(Class.Java:3048)
     at Java.lang.Class.getMethod0(Class.Java:3018)
     at Java.lang.Class.getMethod(Class.Java:1784)
     at Sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.Java:544)
     at Sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.Java:526)
 Caused by: Java.lang.ClassNotFoundException: org.slf4j.Logger
     at Java.net.URLClassLoader.findClass(URLClassLoader.Java:381)
     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)
     at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:331)
     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
     ... 7 more

投稿に従ってSPARK_DIST_CLASSPATHを編集します hadoop2のhadoopjarファイルはどこにありますか?

export SPARK_DIST_CLASSPATH=~/hadoop/share/hadoop/common/lib:~/hadoop/share/hadoop/common:~/hadoop/share/hadoop/mapreduce:~/hadoop/share/hadoop/mapreduce/lib:~/hadoop/share/hadoop/yarn:~/hadoop/share/hadoop/yarn/lib

しかし、それでも同じエラーが発生します。 slf4jjarファイルが~/hadoop/share/hadoop/common/libの下にあることがわかります。

このエラーを修正するにはどうすればよいですか?

ありがとうございました!

12
Top.Deck

「Hadoopフリー」ビルドでは、SPARK_DIST_CLASSPATHを変更してHadoopのパッケージjarを含める必要があります。これを行う最も便利な場所は、conf /spark-env.shにエントリを追加することです。
export SPARK_DIST_CLASSPATH = $(/ path/to/hadoop/bin/hadoop classpath)
これを確認してください https://spark.Apache.org/docs/latest/hadoop-provided.html

6
yuxh