一、为什么要做基准测试
有两个问题:
- 将一个 1T 的数据上传到 hdfs 需要多久?
- 将一个 10T 的数据从 hdfs 读取完毕需要多久?
如果不做基准测试,这两个问题就没有答案,因为不知道。所以在搭建完集群后,一定要先做基准测试。
二、如何做基准测试
1.测试 HDFS 写性能:向 HDFS 写 10个 128M 的文件(看自己心情设置文件个数和大小)
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB
结果如下:
这里主要看 Throughput 参数即可,我的测试结果为:3.25 MB 每秒(本人笔记本虚拟机4G内存测试,性能很低)
2.测试 HDFS 读性能:读取 HDFS 10个 128M 的文件
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB
结果如下:
这里依然看 Throughput 参数即可,我的测试结果为:40.38 MB 每秒
3.测完最后删除测试数据
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -clean
三、使用Sort 程序评测 MapReduce
此项测试建议在强大的集群环境下做,最好不要在自己的低配电脑上(内存小于32G)做测试,否则......
1.使用RandomWriter来产生随机数,每个节点运行10个Map任务,每个Map产生大约1G大小的二进制随机数
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar randomwriter random-data
2.执行Sort程序
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar sort random-data sorted-data
3.验证数据是否真正排好序了
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar testmapredsort -sortInput random-data -sortOutput sorted-data