当前位置:  开发笔记 > 编程语言 > 正文

无法让pyspark作业在hadoop群集的所有节点上运行

如何解决《无法让pyspark作业在hadoop群集的所有节点上运行》经验,为你挑选了1个好方法。

摘要:我无法让我的python-spark作业在hadoop集群的所有节点上运行。我已经安装了hadoop'spark-1.5.2-bin-hadoop2.6'的火花。启动java spark作业时,负载分布在所有节点上,而启动python spark作业时,只有一个节点承担负载。

设置

为xen虚拟服务器上运行的4个节点配置的hdfs和yarn:nk01(namenode),nk02,nk03,nk04

版本:jdk1.8.0_66,hadoop-2.7.1,spark-1.5.2-bin-hadoop2.6

hadoop已安装所有4个节点

仅在nk01上安装了spark

我将一堆古腾堡文件(谢谢约翰内斯!)复制到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版本以在所有节点之间分配负载?



1> WillemM..:

正如肖恩·郭(Shawn Guo)所建议的那样,Python程序名称的位置确实错误。应该以这种方式运行:

/opt/spark/bin/spark-submit --master yarn-cluster --num-executors 4 
       --executor-cores 1 wordcount.py

这会在节点上产生此负载:

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有