現在、Spark 1.3 と Python 2.7 の 50 ノードのクラスターでリアルタイムの Spark ストリーミング ジョブを実行しています。Spark ストリーミング コンテキストは、180 秒のバッチ間隔で HDFS のディレクトリから読み取ります。以下は、Spark ジョブの構成です。
spark-submit --master yarn-client --executor-cores 5 --num-executors 10 --driver-memory 10g --conf spark.yarn.executor.memoryOverhead=2048 --conf spark.yarn.driver.memoryOverhead= 2048 --conf spark.network.timeout=300 --executor-memory 10g
ほとんどの場合、ジョブは正常に実行されます。ただし、通信チャネルを取得できないことを理由に、約 15 時間後に Py4j Exception をスローします。
バッチ間隔のサイズを小さくしようとしましたが、処理時間がバッチ間隔よりも長くなるという問題が発生します。
以下はエラーのスクリーンショットです
いくつかの調査を行ったところ、ここからのソケット記述子のリークの問題である可能性があることがわかりましたSPARK-12617
ただし、エラーを回避して解決することはできません。ポートの提供を妨げている可能性のある開いている接続を手動で閉じる方法はありますか。または、これを解決するためにコードに特定の変更を加える必要がありますか。
ティア