一、準備工作
首先,我們要知道,平常所說的網速和文件大小的MB是什么關系。
100Mbps單位是bit;10M/s單位是byte ; 1byte=8bit,100Mbps/8=12.5M/s。
測試
配置102、103、104虛擬機網速
102上用Python
開啟一個文件下載服務,類似FTP
python -m SimpleHTTPServer
在103上下載102的文件
可以看到,下載速度在11.6MB/s左右
。符合預期。
二、HDFS寫性能測試
原理說明
兩種算法
1、所有MapTask
處理的文件大小總量/總時間。
2、每個MapTask
的速度統計,求平均值。
正常情況下,這兩個值差別不大,但是,出現個別服務器有問題,則會出現較大的偏差。
測試命令
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
<!--是否啟動一個線程檢查每個任務正使用的虛擬內存量,如果任務超出分配值,則直接將其殺掉,默認是true -->
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property>
保存,分發并重啟Hadoop
。
三、HDFS讀性能測試
測試命令
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
四、刪除測試文件
命令
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -clean
五、放開網絡限制
測試寫性能
這塊還是有點云里霧里。。。。
應該有更專業的測試工具。