【发布时间】:2015-12-16 10:57:25
【问题描述】:
总结:我的 python-spark 作业无法在我的 hadoop 集群的所有节点上运行。 我已经为 hadoop 'spark-1.5.2-bin-hadoop2.6' 安装了 spark。启动 java spark 作业时,负载得到 分布在所有节点上,当启动 python spark 作业时,只有一个节点承担负载。
设置:
- hdfs 和 yarn 配置为 4 个节点:nk01 (namenode)、nk02、nk03、nk04,在 xen 虚拟服务器上运行
- 版本:jdk1.8.0_66、hadoop-2.7.1、spark-1.5.2-bin-hadoop2.6
- hadoop 安装了所有 4 个节点
- spark 仅安装在 nk01 上
我将一堆 Gutenberg 文件(谢谢,Johannes!)复制到 hdfs 上,并尝试使用 java 和 python 对文件子集(以“e”开头的文件)进行字数统计:
Python:
使用自制 python 脚本进行字数统计:
/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 个节点:
Java:
使用 spark 分布中的 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 版本也将负载分配到所有节点?
【问题讨论】:
标签: hadoop apache-spark pyspark