我在不同大小的hdinsight集群上用python运行了一个wordcount程序,每次都花费相同的时间。文件大小是600MB,我在2、4和8个节点上运行它—每次都是相同的时间(不是第二次,但非常接近)。
我预计时间会发生变化,因为随着集群规模的增长,文件会被更多的节点处理。。。我想知道这是否是一个相对较小的文件的情况?或者有没有一种方法来定义作业应该在哪些节点上完成我个人不这么认为,因为集群大小是预先设置的。
或者是wordcount应用程序的性质和reducer做相同工作量的事实?
或者是因为它是python——我在某个地方读到过,据说它比java(或scala on spark)慢?
同样的事情也发生在spark集群上——尽管节点数增加了,但时间没有减少。
1条答案
按热度按时间fwzugrvs1#
根据我的经验,在hadoop上处理的600mb数据量很小。不是所有处理文件的时间成本,因为hadoop需要一些时间来准备启动hdfs上的m/r作业和数据。
对于小数据集,不需要使用太多的计算节点。甚至,单台计算机获得的性能也比hadoop上的集群(如hadoop示例)要高
wordcount
对于几个小的文本文件。据我所知,hadoop上的数据集大小一般需要在数百gb以上才能获得性能优势,并且性能会随着节点数量的增加而提高。
作为参考,有一个线程(为什么提交作业到mapreduce通常需要这么多时间?)你可以知道。