糸のメモリ管理上の解決スパークこの記事の目的は、その火花のチューニングがより明確に考えていること
メモリ関連のパラメータ
スパークがメモリに基づいて計算され、メモリー・チューニングのためのスパークのほとんどは、メモリパラメータの火花を理解することでも、私たちが火花メモリ管理を理解するのに役立ち
- spark.driver.memory:デフォルトの512M
- spark.executor.memory:デフォルトの512M
- spark.yarn.am.memory:デフォルトの512M
- spark.yarn.driver.memoryOverhead:384の最小とドライバのメモリ* 0.10、
- spark.yarn.executor.memoryOverhead:384の最小とエグゼキュータのメモリ* 0.10、
- spark.yarn.am.memoryOverhead:384の最小で午前メモリ* 0.10、
- エグゼキュータ - コア:エグゼキュータはプロセスに相当し、スレッドの処理に相当するコア
メモリの決意
spark.xxx.memory / --xxxメモリヒープ領域は、JVM、JVM自体であるが、一部のspark.yarn.xxx.memoryOverheadによって決定されるヒープの一部を取り、この関係は、図に従います。
メモリの割り当て
スパークメモリをより良く利用するために、通常我々は、以下のパラメータ糸クラスタを設定する必要は[必ずしも]
< プロパティ> < 名前> yarn.nodemanager.resource.memory-MB </ 名前> < 値> 106496 </ 値> <! - 104G - > </ プロパティ> < プロパティ> < 名前> yarn.scheduler.minimum -allocation-MB </ 名前> < 値> 2048 </ 値> </ プロパティ> < プロパティ> <名前>yarn.scheduler.maximum割り当て-MB </ 名前> < 値> 106496 </ 値> </ プロパティ> < プロパティ> < 名前> yarn.app.mapreduce.am.resource.mb </ 名前> < 値> 2048 </ 値> </ プロパティ>
- yarn.app.mapreduce.am.resource.mb:最大メモリに適用することができています
- yarn.nodemanager.resource.memory-MB:最大メモリノードマネージャを適用することができます
- 最小メモリコンテナをスケジュールすると、適用される場合があります:yarn.scheduler.minimum割り当て-MB
- yarn.scheduler.maximum割り当て-MBは:コンテナをスケジュールする場合、最大メモリを申請することができます
yarn.scheduler.minimum割り当て-MBは、メモリコンテナの基本単位である、すなわち、コンテナメモリ必須yarn.scheduler.minimum割り当て-MBは整数倍です、
例えばyarn.scheduler.minimum割り当て-MBは2G、2048M、に設定されています
アプリケーションがメモリ512Mである場合、512 + 384 <2048M、2Gメモリが割り当てられ、
アプリケーションがメモリ3Gである場合は、3072 + 384 = 3456M <4096M、4Gメモリが割り当てられ、
アプリケーションがメモリ6Gである場合、6144 + 614 = 6758 <8192M、8Gメモリが割り当てられ、[MAX(6144 * 0.1、384)= 614]
ときは、3Gとして設定--executor・メモリ、コンテナではない実際のメモリ3G
よくある質問
一般的な問題は殺されるべきメモリまたはコンテナの欠如以外の何ものでもありません
- なし最近のハートビートでエグゼ5を取り外す:120504ミリ秒は120000ミリ秒タイムアウト超えます
- コンテナは、メモリの制限を超えたためYARNによって殺さ
- spark.yarn.executor.memoryOverheadを高める考えてみましょう
- 火花のOutOfMemory:GCオーバーヘッドの制限を超えました
従来の考え方
1.第一の溶液を増加させることである総メモリを 【この方法は、すべての問題を解決することはできません]
2.第二に、データスキューの問題を考えるために記憶課題における不十分なデータスキュー結果、別のタスクに十分なメモリ
//最も簡単な方法はある[この方法ですべての問題を解決しない]配分
3.増やすことを検討してすべてのタスク使用可能なメモリを
//エグゼキュータの数を減らします
//エグゼキュータ・コアの数を減らします
パラメータ設定の注意事項
エグゼキュータ・メモリ
、あまりにも大規模なセットGCプロセスにつながる長いと、メモリの64Gが上限をお勧めします[ハードウェアに応じて、適したキャップを見つけることができます]
パフォーマー、色
1セットが大きすぎ、平行度が容易に充填されたネットワーク帯域幅が得られ、高くなり、特に、HDFS、リターンまたは収集したデータドライバからデータを読み出します
複数のコアリソース間のGC時間の2セットは大きすぎる、作り競争がGCに費やした時間のほとんどをリードしてきました
参考文献:
https://www.cnblogs.com/saratearing/p/5813403.html#top
https://blog.csdn.net/pearl8899/article/details/80368018
https://www.so.com/s?q=with+minimum+of+384&src=se_zoned
https://blog.cloudera.com/how-to-tune-your-apache-spark-jobs-part-2/英語ブログ