web-dev-qa-db-ja.com

SparkContextエラー-ファイルが見つかりません/ tmp / spark-eventsが存在しません

Python Spark API呼び出しを介したアプリケーション-アプリケーションの送信時-応答-ワーカーへのSSHの失敗

My pythonアプリケーションは

/root/spark/work/driver-id/wordcount.py

エラーは

/root/spark/work/driver-id/stderr

次のエラーを表示します-

Traceback (most recent call last):
  File "/root/wordcount.py", line 34, in <module>
    main()
  File "/root/wordcount.py", line 18, in main
    sc = SparkContext(conf=conf)
  File "/root/spark/python/lib/pyspark.Zip/pyspark/context.py", line 115, in __init__
  File "/root/spark/python/lib/pyspark.Zip/pyspark/context.py", line 172, in _do_init
  File "/root/spark/python/lib/pyspark.Zip/pyspark/context.py", line 235, in _initialize_context
  File "/root/spark/python/lib/py4j-0.9-src.Zip/py4j/Java_gateway.py", line 1064, in __call__
  File "/root/spark/python/lib/py4j-0.9-src.Zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.Apache.spark.api.Java.JavaSparkContext.
: Java.io.FileNotFoundException: File file:/tmp/spark-events does not exist.
  at org.Apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.Java:402)
  at org.Apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.Java:255)
  at org.Apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:100)
  at org.Apache.spark.SparkContext.<init>(SparkContext.scala:549)
  at org.Apache.spark.api.Java.JavaSparkContext.<init>(JavaSparkContext.scala:59)
  at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:57)
  at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
  at Java.lang.reflect.Constructor.newInstance(Constructor.Java:526)
  at py4j.reflection.MethodInvoker.invoke(MethodInvoker.Java:234)
  at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.Java:381)
  at py4j.Gateway.invoke(Gateway.Java:214)
  at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.Java:79)
  at py4j.commands.ConstructorCommand.execute(ConstructorCommand.Java:68)
  at py4j.GatewayConnection.run(GatewayConnection.Java:209)
  at Java.lang.Thread.run(Thread.Java:745)

/ tmp/spark-eventsが存在しないことを示しています-これはtrueです。ただし、wordcount.py

from pyspark import SparkContext, SparkConf

... few more lines ...

def main():
    conf = SparkConf().setAppName("MyApp").setMaster("spark://ec2-54-209-108-127.compute-1.amazonaws.com:7077")
    sc = SparkContext(conf=conf)
    sc.stop()

if __name__ == "__main__":
    main()
16
Chaitanya Bapat

/tmp/spark-eventsは、Sparkイベントログを保存する場所です。マスターマシンにこのディレクトリを作成するだけで設定が完了します。

$mkdir /tmp/spark-events
$ Sudo /root/spark-ec2/copy-dir /tmp/spark-events/
RSYNC'ing /tmp/spark-events to slaves...
ec2-54-175-163-32.compute-1.amazonaws.com
23
Kien Truong

ローカルマシンにspark履歴サーバーをセットアップしようとしたときに、同じ 'File file:/ tmp/spark-events does not exist。'エラーが発生しました。ログディレクトリをカスタマイズしました。これを解決するには、2つのことを行う必要がありました。

  1. $ SPARK_HOME/conf/spark-defaults.confを編集-これらの2行を追加spark.history.fs.logDirectory /mycustomdir spark.eventLog.enabled true
  2. / tmp/spark-eventsから/ mycustomdirへのリンクを作成します。
    ln -fs /tmp/spark-events /mycustomdir理想的には、ステップ1で問題を完全に解決できたはずですが、それでもリンクを作成する必要があったので、見逃した設定が他にあった可能性があります。とにかく、一度これを行うと、履歴サーバーを実行し、webuiに新しいジョブが記録されるのを見ることができました。
8
dman

クライアント/ドライバープログラムにspark.eventLog.dirを使用します

spark.eventLog.dir=/usr/local/spark/history

履歴サーバーにspark.history.fs.logDirectoryを使用します

spark.history.fs.logDirectory=/usr/local/spark/history

スタンドアロンクラスタ非hdfsモードのスパーク履歴サーバーを有効にする方法

少なくともSparkバージョン2.2.1に従って

3
tvee

作成したばかりの/tmp/spark-eventsを{master}ノードで実行し、クラスター上の他のノードに配布して動作させます。

mkdir /tmp/spark-events
rsync -a /tmp/spark-events {slaves}:/tmp/spark-events

私のspark-default.conf:

spark.history.ui.port=18080
spark.eventLog.enabled=true
spark.history.fs.logDirectory=hdfs:///home/elon/spark/events
0
Elon