2017-05-28 73 views
0

我有一個Spark/YARN羣集,其中有3個從站設置在AWS上。Spark/YARN - 並非所有節點都用於spark-submit

我想提交一份這樣的工作:~/spark-2.1.1-bin-hadoop2.7/bin/spark-submit --master yarn --deploy-mode cluster my.py最終的結果是一個文件,其中包含集羣中所有從節點的所有主機名。我期待我在輸出文件中混合使用主機名,但是,我只能在輸出文件中看到一個主機名。這意味着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

您可能會過度承擔自己的記憶。如果任務不需要所有的機器,那麼它會相應地縮小 –

相關問題