一、准备工作
首先,我们要知道,平常所说的网速和文件大小的MB是什么关系。
100Mbps单位是bit;10M/s单位是byte ; 1byte=8bit,100Mbps/8=12.5M/s。
测试
配置102、103、104虚拟机网速
102上用Python
开启一个文件下载服务,类似FTP
bash
python -m SimpleHTTPServer
在103上下载102的文件
可以看到,下载速度在11.6MB/s左右
。符合预期。
二、HDFS写性能测试
原理说明
两种算法
1、所有MapTask
处理的文件大小总量/总时间。
2、每个MapTask
的速度统计,求平均值。
正常情况下,这两个值差别不大,但是,出现个别服务器有问题,则会出现较大的偏差。
测试命令
bash
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB
测试结果
参数介绍:
Number of files
:生成mapTask数量,一般是集群中(CPU核数-1),我们测试虚拟机就按照实际的物理内存-1分配即可
Total MBytes processed
:单个map处理的文件大小
Throughput mb/sec
:单个mapTak的吞吐量
计算方式:处理的总文件大小/每一个mapTask写数据的时间累加
集群整体吞吐量:生成mapTask数量*单个mapTak的吞吐量
Average IO rate mb/sec
:平均mapTak的吞吐量
计算方式:每个mapTask处理文件大小/每一个mapTask写数据的时间全部相加,再求均值
IO rate std deviation
:方差、反映各个mapTask处理的差值,越小越均衡
可能的报错
解决办法:
yarn-site.xml
xml
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
保存,分发并重启Hadoop
。
三、HDFS读性能测试
测试命令
bash
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read-nrFiles 10 -fileSize 128MB
四、删除测试文件
命令
python
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -clean
五、放开网络限制
测试写性能
这块还是有点云里雾里。。。。
应该有更专业的测试工具。