スタンドアロンクラスターモードでsparkジョブを実行しているときに、これらのエラーに直面しています。
私のspark仕事の目的:
groupby
を実行し、count
、joins
で最後のdf
を取得し、次にdf.toPandas().to_csv()
を取得します。入力データセットは524Mbです。私が得るエラー:
警告TaskMemoryManager:ページ(33554432バイト)の割り当てに失敗しました。再試行してください。
上記を複数回繰り返した後、再び新しいエラー
警告NettyRpcEnv:無視された失敗:Java.util.concurrent.TimeoutException:10秒以内に応答を受信できません
org.Apache.spark.rpc.RpcTimeoutException:[10秒]後に先物がタイムアウトしました。このタイムアウトはspark.executor.heartbeatIntervalによって制御されます
org.Apache.spark.rpc.RpcTimeoutで。 org $ Apache $ spark $ rpc $ RpcTimeout $$ createRpcTimeoutException
ExecutorLostFailure(実行中のタスクの1つが原因でエグゼキュータドライバが終了しました)理由:エグゼキュータのハートビートが158295ミリ秒後にタイムアウトしました
( '127.0.0.1'、49128)からの要求の処理中に例外が発生しましたトレースバック(最後の最後の呼び出し):
ファイル "/home/stp/spark-2.0.0-bin-hadoop2.7/python/pyspark/accumulators.py"、235行目、ハンドルnum_updates = read_int(self.rfile)ファイル"/home/stp/spark- 2.0.0-bin-hadoop2.7/python/pyspark/serializers.py "、545行目、read_intでEOFErrorを発生させるEOFError
やっと ###********##
py4j.protocol.Py4JNetworkError:Javaサーバー(127.0.0.1:38073)に接続しようとしたときにエラーが発生しました
最初に考えたところ、エラーはメモリエラー(TaskMemoryManager)が原因である可能性があり、合計16 GBから、プロセスは最大6 GBを消費し、9GB以上を解放しました。また、ドライバメモリを10Gに設定しました。だから合格。
しかし、最終的なデータフレームでcount()またはshow()を実行すると、成功しました。しかし、toCsvを実行している間、上記のエラー/警告がスローされます。
問題の原因を実際に理解/推測しないでください。
上記のエラーの分析を手伝ってください。ヘルプ/コメントは大歓迎です。ありがとう。
私たちの場合、小さなテーブル(<10 MB)がたくさんありました。そこで、ブロードキャストを無効にすることにし、それに加えてガベージコレクションにG1GCを使用し始めました。これらのエントリを$ SPARK_HOME/confのspark-defaults.confファイルに追加します
spark.driver.extraJavaOptions -XX:+UseG1GC
spark.executor.extraJavaOptions -XX:+UseG1GC
spark.sql.autoBroadcastJoinThreshold -1
または、別の方法として、autoBroadcastのしきい値サイズを調整して、問題が解決することを確認することもできます。