2017-02-28 63 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

相關問題