2016-10-12 4 views
1

私は、AWS EMRクラスター(EMR 5.0.0、Spark 2.0.0,30 r3.4xlarge)でスパーク送信アプリケーションを実行しています。SparkListenerBusエラーの防止

time spark-submit --conf spark.sql.shuffle.partitions=5000 \ 
--conf spark.memory.storageFraction=0.3 --conf spark.memory.fraction=0.95 \ 
--executor-memory 8G --driver-memory 10G dataframe_script.py 

アプリケーションがspark.master =糸を持つデフォルトAWSのスパークの設定を、使用し、配備モードを=クライアント:スクリプトを起動するには、私は、次のコマンドを実行し、マスターノードにSSHで接続します。

アプリケーションでは〜220GBのデータが読み込まれ、SQLのような集約が行われ、s3に書き込まれます。書き込まれたデータは正しく処理されたように見えます。コードが実行されている間、私はエラーmessaageを参照してくださいが、コードは実行し続けます。アプリケーションを書いて行われ

ERROR LiveListenerBus: Dropping SparkListenerEvent because no remaining room in event queue. This likely means one of the SparkListeners is too slow and cannot keep up with the rate at which tasks are being started by the scheduler. 

した後、アプリケーションは、AAを送信、> 10分間のコマンドラインに戻りません。警告:

WARN ExecutorAllocationManager: No stages are running, but numRunningTasks != 0 

その後、数十のエラーメッセージで数千行の:

16/10/12 00:40:03 ERROR LiveListenerBus: SparkListenerBus has already stopped! Dropping event SparkListenerExecutorMetricsUpdate(176,WrappedArray()) 

プログレスバーもエラーメッセージ、例えば間で移動し続ける:

[Stage 17:=================================================> (465 + 35)/500] 

主要ステップの書き込みと終了のための私のコードは:

def main(): 
    # some processing 
    df.select(selection_list).write.json('s3path', compression=codec) 
    print 'Done saving, shutting down' 
    sc.stop() 

this JIRAを指すprevious StackOverflow questionがあります。古いバージョンのSparkの修正があったようですが、問題の内容が分かりません。

これらのエラーメッセージを回避するにはどうすればよいですか?

答えて

0

問題が見つかりました。私のSparkスクリプトでは、main()関数の外側でSparkContextを開始しますが、main関数内で停止します。これにより、スクリプトが終了してもう一度SparkContextを閉じようとするときに問題が発生します。 main関数の中でSparkContextの初期化を動かすことで、これらのエラーの大半は消え去りました。