2016-10-11 2 views
1

スタンドアロンのSpark 2.0サーバーをセットアップして、分析機能を並列処理しようとしています。これを行うには、複数のエグゼキュータを持つ1人のワーカーを欲しがります。複数のエグゼキュータを持つスタンドアロン構成のスパーク

私が使用しています:

  • スタンドアロンスパーク2.0
  • 8コア
  • 24gigのRAM
  • のWindows Server 2008
  • pyspark(これは関係のない表示されますが)

これは純粋な概念証明のためのものですが、私は8エグゼキュータ、各コアごとに1つ。

私はこのトピックの他のスレッドに従おうとしましたが、何らかの理由でそれが動作しません。 IE:次のように Spark Standalone Number Executors/Cores Control

私の設定は次のとおりです。

のconf \スパーク-defaults.confに

spark.cores.max = 8 
spark.executor.cores = 1 

私も無駄に私のspark-env.shファイルを変更しようとしました。代わりに、私の1人の労働者に1人のエグゼクティブしかいないことが示されています。下記のように、8コアの1エグゼキュータを使用してスタンドアロンを表示しています。

enter image description here

答えて

1

私はあなたがローカルおよびスタンドアロンモードを混ぜ信じる:

  • ローカルモードすべてのプロセスを単一のJVM内で実行されている開発ツールです。マスタモードをlocal,local[*]またはlocal[n]に設定すると、アプリケーションはローカルモードで起動されます。 spark.executor.coresおよびspark.executor.coresは、ローカル・モードでは適用されません。
  • スタンドアロンモードはスタンドアロンSpark clusterが必要です。マスターノード(SPARK_HOME/sbin/start-master.shスクリプトを使用して開始できる)と少なくとも1つのワーカーノード(SPARK_HOME/sbin/start-slave.shスクリプトを使用して開始できる)が必要です。

    SparkConfは、マスターノードアドレスを使用して(spark://host:port)を作成する必要があります。

0

まず、スパーク・スタンドアロン・クラスタを構成し、実行する個々のスパーク・アプリケーションに必要なリソースの量を設定する必要があります。

クラスタを構成するためには、あなたはこれを試すことができます。confに/スパーク-ENVで

。SH:1つのワーカーが使用できるコアのノードごとワーカーインスタンス(#Executors)の数を決定

Set the SPARK_WORKER_INSTANCES = 10

(そのデフォルト値は1つだけである)

Set the SPARK_WORKER_CORES = 15

数(デフォルト:すべてのコア、あなたの場合は36)

Set SPARK_WORKER_MEMORY = 55g

合計でありますSparkプログラムを実行するために1台のマシン(ワーカーノード)で使用できるメモリ量。 同じフォルダ内のすべてのワーカーノードにこの設定ファイルをコピーしてください sbin(sbin/start-all.sh、...)のスクリプトを実行してクラスタを起動してください 上記の設定で5人の従業員がいるので、 * 5(従業員一人当たりのエグゼクティブ)= 10(executers per worker)=マスターWebインターフェイス上の50人の生き残りエグゼキュータ

スタンドアロンモードでアプリケーションを実行すると、デフォルトではクラスタ。このアプリケーションを実行するためのリソースの量を明示的に設定する必要があります。例:

val conf = new SparkConf() .setMaster(...) .setAppName(...) .set("spark.executor.memory", "2g") .set("spark.cores.max", "10")

関連する問題