摘要:我无法让我的python-spark作业在我的hadoop集群的所有节点上运行。 我为hadoop安装了火花&spark; 1.5.2-bin-hadoop2.6'。启动java spark作业时,负载得到 分布在所有节点上,当启动python spark作业时,只有一个节点负载。
设置:
我将一堆Gutenberg文件(谢谢你,Johannes!)复制到hdfs上,并尝试在文件的一个子集上使用java和python进行wordcount(以' e' ):
的Python :
使用自制的python脚本来执行wordcount:
/opt/spark/bin/spark-submit wordcount.py --master yarn-cluster \
--num-executors 4 --executor-cores 1
Python代码分配了4个分区:
tt=sc.textFile('/user/me/gutenberg/text/e*.txt',4)
在60秒内加载4个节点:
爪哇:
使用火花分布中的 JavaWordCount :
/opt/spark/bin/spark-submit --class JavaWordCount --master yarn-cluster \
--num-executors 4 jwc.jar '/user/me/gutenberg/text/e*.txt'
结论:java版本在集群中分配负载,python版本只在1个节点上运行。
问题:如何让python版本在所有节点上分配负载?
答案 0 :(得分:5)
根据Shawn Guo的建议,蟒蛇计划的名字确实处于错误的位置。它应该以这种方式运行:
/opt/spark/bin/spark-submit --master yarn-cluster --num-executors 4
--executor-cores 1 wordcount.py
答案 1 :(得分:3)
Spark-submit
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
以下是参数位置中scala / java提交的一些不同之处。
对于Python应用程序,只需传递一个.py文件即可 application-jar 而不是JAR,并使用--py-files将Python .zip,.egg或.py文件添加到搜索路径。
您应该使用以下命令:
/ opt / spark / bin / spark-submit --master yarn-cluster wordcount.py
--num-executors 4 --executor-cores 1