2017-02-28 68 views
-1

我试图运行一个示例spark工作,它的工作正常。现在,我需要在集群中的多个节点上运行相同的工作。 在我的程序中需要更改什么来指示在多个节点中运行它。在多个节点中运行spark工作

from pyspark import SparkConf, SparkContext 
import collections 

#conf = SparkConf().setMaster("local").setAppName("RatingsHistogram") 
conf = SparkConf().setMaster("hadoop-master").setAppName("RatingsHistogram") 
sc = SparkContext(conf = conf) 

#lines = sc.textFile("file:///SparkCourse/ml-100k/u.data") 
lines = sc.textFile("hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k/u.data") 
ratings = lines.map(lambda x: x.split()[2]) 
result = ratings.countByValue() 

sortedResults = collections.OrderedDict(sorted(result.items())) 
for key, value in sortedResults.items(): 
    print("%s %i" % (key, value)) 

回答

1

代码中唯一需要更改的选项是spark上下文的主控。要在hadoop上运行脚本,您需要将HADOOP_CONF_DIR放置在环境中,并将主设置为yarn。所有这些都在文档中解释:http://spark.apache.org/docs/latest/running-on-yarn.html#launching-spark-on-yarn

+0

谢谢。我能够在火花簇上运行..我有一个火花集群和hadoop集群设置..在火花集群中运行火花作业vs hadoop集群有什么优势吗? – user1050619

+0

这取决于你的需求。在hadoop claster上,您可以根据需要创建尽可能多的火花作业,并且这适用于多用户环境。例如,使用标准Hadoop机制为每个用户的作业管理对HDFS/Hive数据和YARN资源的权限。但它是唯一使用spark的维护工具,hadoop集群仅用于spark工作可能是不必要的开销。 – Mariusz

相关问题