2017-05-28 6 views
0

AWSに3つのスレーブが設定されたSpark/YARNクラスタがあります。スパーク/ YARN - すべてのノードがスパーク送信に使用されていません

私はこのような仕事をspark-submitします。~/spark-2.1.1-bin-hadoop2.7/bin/spark-submit --master yarn --deploy-mode cluster my.py最終結果は、クラスタ内のすべてのスレーブからのすべてのホスト名を含むファイルです。出力ファイルにホスト名を混在させることを期待していましたが、出力ファイルには1つのホスト名しか表示されません。つまり、YARNはクラスタ内の他のスレーブを決して利用しません。

設定に何か不足していますか?

以下の設定は、spark-env.shにも含まれています。

HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/ 
YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop/ 

SPARK_EXECUTOR_INSTANCES=3 
SPARK_WORKER_CORES=3 

my.py

import socket 
import time 
from pyspark import SparkContext, SparkConf 

def get_ip_wrap(num): 
    return socket.gethostname() 

conf = SparkConf().setAppName('appName') 
sc = SparkContext(conf=conf) 

data = [x for x in range(1, 100)] 
distData = sc.parallelize(data) 

result = distData.map(get_ip_wrap) 
result.saveAsTextFile('hby%s'% str(time.time())) 

答えて

0

私は、次の設定やspark-env.shを更新した後、すべてのスレーブが利用されます。

SPARK_EXECUTOR_INSTANCES=3 
SPARK_EXECUTOR_CORES=8 
+0

メモリをオーバーコミットしている可能性があります。タスクがすべてのマシンを必要としない場合は、それに応じてスケールダウンします –

関連する問題