我在python上运行了一个不同大小的HDInsight群集的wordcount程序,每次花费相同的时间。文件大小为600 MB,我在2个,4个和8个节点上运行 - 每次都有相同的时间(不是第二个但非常接近)。
我预计随着集群规模的增长,文件被大量节点处理后会有变化的时间......我想知道这是一个相对较小的文件的情况吗?或者有没有办法定义应该完成作业的节点数量? - 我个人并不这么认为,因为群集大小是事先设定的。
或者是wordcount应用程序的性质以及reducer执行相同工作量的事实?
或者是因为它是python - 我在某处读到它比java(或火花上的scala)慢?
同样的事情发生在Spark群集上 - 虽然节点数量上升但时间不会下降。
答案 0 :(得分:0)
根据我的经验,在Hadoop上处理的600MB数据量很小。处理文件并不是所有时间成本,因为Hadoop需要一些时间来为M / R作业准备启动工作。关于HDFS的数据。
对于小型数据集,使用太多计算节点不是必需的。甚至,单台计算机获得的性能也会高于Hadoop上的集群,例如几个小文本文件的Hadoop样本wordcount
。
众所周知,Hadoop上的数据集大小通常需要超过数百GB级别才能获得性能优势,并且性能随着节点数量的增加而增加。
作为参考,你可以知道一个SO线程(Why submitting job to mapreduce takes so much time in General?)。