本文章没有搭建教学,只是关于搭建完成后的性能测试以及提供一些自己的建议。

由于学习本人租了三台不同公司学生机服务器搭建Hadoop分布式,版本为2.9.1,本以为可以放到上面跑一跑项目会比本机开docker搭建的分布式要快,但是没想到碰到了各种问题。

在配置了一个master两个slave,hdfs副本数设置为2的情况下,测试文件大小为400M左右,做一个简单的wordcount分析,文件从master上传大概花了20多分钟左右,分析原因肯定在网络的数据传输过程中花费了大量的时间,因为学生机只有1M的带宽,上传完成后运行wordcount程序,从namenode运行时间如下:

hadoop集群中100台服务器如何分配 hadoop集群最少服务器数量_文件大小

跑了3分钟左右我直接kill掉了,正常情况下绝对不会运行这么久,慢的原因应该是map后数据交换时带宽又成了瓶颈。

考虑到大部分时间花费在副本复制的网络传输过程中,所以将副本数设置为1,直接从datanode上传数据,这样做可以避免网络的传输,很快就可以完成,但是没有经过namenode可能会产生一些问题目前还不太清楚,从namenode运行wordcount程序花费的时间如下:

hadoop集群中100台服务器如何分配 hadoop集群最少服务器数量_文件大小_02

可以看到果然报错了但是运行结果是对的,花费的时间也比双副本要少,70s左右。

最后直接将不工作的datanode去掉,设置成单副本和一个datanode,从namenode运行时间如下:

hadoop集群中100台服务器如何分配 hadoop集群最少服务器数量_上传_03

可以看出运行时间和上次是一样的,所以那个没有数据的datanode节点根本没用到,所以建议如果想买学生机试一试玩一玩的同学尽量买同一公司同一区域的服务器,如果买不了的话,跨机群两个节点设置一个master一个slave要比三个节点要好,只是按照当前测试情况的建议,也可能有更好的解决办法。