クライアントモードのドキュメントを正しく理解していますか?
spark.driver.memory
+ spark.yarn.am.memory
はマシンのメモリより小さくなければなりませんか?クライアントモードは、ドライバーがアプリケーションマスター内で実行されるクラスターモードとは対照的ですか?
はい、SparkアプリケーションがYARNにデプロイされた場合
Sparkアプリケーションが独自のリソースマネージャー(スタンドアロン)でクラスターモードを使用して送信された場合)、ドライバープロセスはワーカーノードの1つにあります。
画像とコンテンツの参照:
クライアントモードでは、ドライバーとアプリケーションマスターは別個のプロセスであるため、
spark.driver.memory
+spark.yarn.am.memory
はマシンのメモリより小さくなければなりませんか?
いいえ、クライアントモード、ドライバーとAMは個別のプロセスであり、別のマシンに存在するため、メモリを結合する必要はありませんが、spark.yarn.am.memory
+ some overhead
はYARNコンテナーメモリ(yarn.nodemanager.resource.memory-mb
)。 YARNのResource Managerを超えると、コンテナーが強制終了されます。
クライアントモードで、ドライバーのメモリがアプリケーションのマスターメモリ設定に含まれていませんか?
ここに spark.driver.memory
は、sparkアプリケーションが起動する場所であるマシンで使用可能なメモリよりも少ない必要があります。
ただし、クラスターモードでは
spark.driver.memory
の代わりにspark.yarn.am.memory
。
spark.yarn.am.memory
:512m(デフォルト)クライアントモードでYARNアプリケーションマスターに使用するメモリの量。JVMメモリ文字列と同じ形式(例:
512m, 2g
)。クラスタモードでは、spark.driver.memory
代わりに。小文字のサフィックスを使用してください。k, m, g, t
、p
、それぞれキビ、メビ、ギビ、テビ、ペビバイト。チェック ここでこれらのプロパティの詳細
クライアントモードでは、ドライバーは、spark-submit、つまりクライアントプログラム内で直接起動されます。クラスター内のいずれかのノードに作成されるアプリケーションマスター。 spark.driver.memory(+メモリオーバーヘッド)は、マシンのメモリより少なくなります。
クラスターモードでは、クラスター内の任意のノードのアプリケーションマスター内でドライバーが実行されています。
https://blog.cloudera.com/blog/2014/05/Apache-spark-resource-management-and-yarn-app-models/