2016-04-23 5 views
4

私はスパークストリーミング1.6.1を、粗粒度モードで動作するMesos 0.28クラスターでkafkaレシーバーを使用してプロトタイプ作成しました。スパークストリーミングによる粗粒メゾスクラスターのKafkaレシーバー

私は、それぞれがの6つのメソスレーブを持っています。
私のカフカのトピックには3つのパーティションがあります。
私の目標は、各エグゼキュータが1つのカフカパーティションから1つのカフカレシーバを読み取っているすべての(それぞれ異なるメソスレーブ上の)すべての3人のエグゼクティブを起動することです。

spark.cores.maxを24に設定し、spark.executor.memoryを8GBに設定してスパークアプリケーションを起動すると、1つのスレーブに16コア、別のスレーブに8コアを持つ2つのエグゼキュータが得られます。

3つの異なるスレーブでそれぞれ8つのコアを持つ3人のエグゼクティブを探しています。それはリソースの予約/隔離、制約などを通してmesosで可能ですか?

私の今のところうまくいく回避策は、各メゾスのスレーブノードを8コアまでしかスケールダウンしないことです。パフォーマンス上の理由から細かいモードでメソスを使用したいと思っていませんし、サポートもすぐに終了します。

答えて

4

メゾスフィアはスパークに次のパッチを提供しました:https://github.com/apache/spark/commit/80cb963ad963e26c3a7f8388bdd4ffd5e99aad1aこの改善はSpark 2.0に上がります。 Mesosphereは、Spark 1.6.1のこの改良点をバックポートし、DC/OS(http://dcos.io)で利用可能にしました。

このパッチは、コースゲインモードで新しい "spark.executor.cores"設定変数を導入しました。 "spark.executor.cores"設定変数が設定されている場合、エグゼキュータは指定されたコア数でサイジングされます。

オファーが(spark.executor.memory、spark.executor.cores)の倍数で到着した場合、そのオファーで複数のエグゼクティブが開始されます。つまり、複数のSparkエグゼキュータが同じMesosエージェントノード上で実行されている場合があります。

Nメゾスエージェント全体でエグゼキュータを広める方法はありません(現在)。 N Mesosエージェント間でSparkエグゼキュータを広める機能を追加することについて簡単に説明しましたが、可用性の向上という面ではあまり買収しないと結論付けました。

スパークエグゼクティブを3人のメゾスエージェントに広めるというあなたの動機を理解するのに役立つことができますか?おそらくすべてのユースケースと利点を考慮していない可能性があります。

キース

+0

N Mesos奴隷の上にN執行を広げるための私のモチベーション - >別々のネットワークインターフェイス – rohit

+0

@rohit経由カフカパーティションからの読み込みにも、可能な限りそのカフカ受信機は、労働者のホスト上で広がっているので、私はと思いますあなたはこれが欲しい:https://issues.apache.org/jira/browse/SPARK-4940それは広範に議論され、それについてのPRさえあったが、それはそれがそれとは違うという理由で受け入れられなかったYARNが提供できるもの今日の状態を知らない。 – maasg

関連する問題