2017-10-31 15 views
0

は:スパーク動的リソース割り当てが有効になっている場合スパーク動的リソース割当ておよびキューアプリケーション

、すべてのリソースは、後続のアプリケーションが起動キューイングさせる可能な最初に投入されたジョブに割り当てられています。アプリケーションがリソースを並行して取得できるようにするには、リソースをプールに割り当て、そのプールでアプリケーションを実行し、プール内で実行されているアプリケーションを優先使用できるようにします。

私はこの動作を自分で見てきましたが、私は現在、2ノード(EMRではm3.xlarge)と1つのマスター(r3.xlarge)の小さなクラスタで作業しています。私が見ているのは、複数のスパークアプリケーション(​​への別の呼び出し)を送信すると、EMRでリソースマネージャーを調べると、すべてのアプリケーションが受け入れられますが、一度に1つしか実行されないということです。

これは、私が約2GBのファイルを読み込んでおり、自分のリソースが最大になっていることが原因である可能性があります。私はまた、火花の既存のpi.pyの例でいくつかの電話を​​にしようと試みました。その場合は、実行中のジョブが1つ以上表示されます。

Clouderaの文書は正しいのですか、それとも誤解を招くのですか?はるかに大きなクラスタを使用する場合、複数のアプリケーションが並行して実行されていますか?

答えて

0

スパークダイナミックアロケーション次のように

ダイナミックアロケーションは、上下スケール執行の方針が付属しています:

スケールアップポリシーは、保留中のタスクがある場合、新たな執行を要求し、数を増加させエグゼクティブが遅くなり、Sparkアプリケーションが少し必要になる可能性があるため、エグゼクティブは指数関数的に増加します。

スケールダウンポリシーは、spark.dynamicAllocation.executorIdleTimeout秒間アイドル状態になっているエグゼキュータを削除します。プール

Clouderaのリソース保留タスクのためにすべてのリソースを取るかもしれないものClouderaのは言っている、単一のジョブがあるかもしれませんので、糸QUESを作成して、特定の量を割り当ててください。クエストあたりのリソース。糸くずを作り出す方法のリンクを辿ってください。あなたの仕事で

https://discuss.pivotal.io/hc/en-us/articles/201623853-How-to-configure-queues-using-YARN-capacity-scheduler-xml

上記のケースで シナリオ1

がより保留中のタスクかもしれないとリソースのほとんどが原因動的なリソースを単一のジョブに割り当てる割り当てられています、あなたが次のアプリケーションを提出したにもかかわらず、リソースのために待機状態になります。

シナリオ2

あなたはこれらの例を実行すると、ジョブで必要なリソースは、より多くの執行(保留中のタスクのために)回転していない以下のタスクと動的割り当てかもしれません。クラスタ内に余分な(割り当てられていない)リソースがあるため、次に待機状態ではなく複数のアプリケーションが実行されています。

+0

私の例に関しては、2つの異なるシナリオがあります: 1)私は複数の「大きな」アプリケーションを提出します。これにより、これらのアプリケーションで処理するために多くのメモリが必要になることを意味します。このシナリオでは、アプリケーションはすべて受け入れられ、キューに入れられますが、一度に1つだけ実行されます。 2)Piを計算するために既存の例のように複数の「小さな」アプリケーションを提出します。ここでは、同時に実行状態にある複数のアプリケーションを見ることができます。 後者の場合、すべてのリソースが1つのアプリケーションで使い切られていないと、複数のタスクが「実行中」表示されませんでしたか? –

関連する問題