2016-04-12 11 views
1

私はそこにsparkマスターとスレーブが走っているサーバーを持っています。スパークは、次のフラグを使用して手動で作成されました。シンプルなスパークプログラムはすべてのリソースを食べます

build/mvn -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests clean package 

私はリモートで次の簡単なプログラムを実行しようとしている:

def main(args: Array[String]) { 
     val conf = new SparkConf().setAppName("testApp").setMaster("spark://sparkserver:7077") 
     val sc = new SparkContext(conf) 
     println(sc.parallelize(Array(1,2,3)).reduce((a, b) => a + b)) 
} 

スパーク依存:

"org.apache.spark" %% "spark-core" % "1.6.1" 

ログイン実行中のプログラム上:

16/04/12 18:45:46 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 

My clust WebUI: enter image description here

なぜ単純なアプリケーションがすべての使用可能なリソースを使用するのですか?

P.S.私は私のアプリのためのより多くのメモリ(10ギガバイト例えば)を割り当てる場合はまた、私は何に気づいた次のログには何度も表示されます。

16/04/12 19:23:40 INFO AppClient$ClientEndpoint: Executor updated: app-20160412182336-0008/208 is now RUNNING 
16/04/12 19:23:40 INFO AppClient$ClientEndpoint: Executor updated: app-20160412182336-0008/208 is now EXITED (Command exited with code 1) 

私は、マスタとスレーブとの間の接続にその理由を考えます。どのように私は(同じマシン上で)マスタとスレーブを設定します。

sbin/start-master.sh 
sbin/start-slave.sh spark://sparkserver:7077 

P.P.S.私はすべてが良いです、スパーク、シェルでマスターを刺激するために接続していた場合:デフォルトでは

spark-shell --master spark://sparkserver:7077 
+0

おそらく、以前のアプリケーションが実行されている間にアプリケーションを実行しようとしていましたが、2つ目のアプリケーションで使用できるリソースがないまま8つのコアすべてを使用していましたか? –

+0

私のアプリケーションを実行する前に他のプロセスはありません。すべてのメモリは私のアプリだけで食べられます。 – Cortwave

+0

'spark.executor.cores'フラグを使ってアプリのコア数を指定しようとしています。 –

答えて

0

それはドライバの問題でした。ドライバ(私のscalaアプリ)は私のローカルコンピュータで動いていました。そして、労働者はそれにアクセスできません。その結果、ドライバーに再接続しようとすると、すべてのリソースが消費されました。

0

糸ダイナミックressource配分をtrueに設定し、あなたの仕事はまだ持っている場合、糸は全て「利用可能」ressourcesを割り当てますキューに入れられたタスク。また、あなたの糸の構成、つまりエグゼキュータの数とそれぞれに割り当てられたメモリを探して、必要に応じて調整することもできます。ファイル内

+0

しかし、私は糸を使用していません。私はスパークマスターを走らせて、それにスレーブをつけました。 – Cortwave

+0

スパークスタンドアロンクラスターでも、すべてのコアと(合計RAM - 1GBの)メモリーをワーカーに割り当てます。これらのパラメーターはspark-env.shで変更する必要があります。spark configuration pageをご覧ください。 –

+0

「メモリ使用中」とは、エグゼキュータ用に割り当てられたメモリです。つまり、エグゼキュータ用に予約されており、アプリケーションがすべてを消費しているとは限りません。 – hqxortn

0

:スパーク-default.xmlの------->設定:spark.cores.max = 4

関連する問題