Spark/YARN - 并非所有节点都用于spark-submit

问题描述:

我有一个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())) 

我更新了以下设置或spark-env.sh后,所有从站利用。

SPARK_EXECUTOR_INSTANCES=3 
SPARK_EXECUTOR_CORES=8 
+0

您可能会过度承担自己的记忆。如果任务不需要所有的机器,那么它会相应地缩小 –