該工具作為一個輔助性質的性能測試工具,基本上可測可不測,因為優點已經被前述幾個工具占光了,這個工具中規中矩,沒什么好說的。
共性與注意點
大致介紹了那么幾種性能測試工具,共性也可以抽象出來,HDFS的性能測試追求的是檢測Namenode在正常環境、高負載環境下的性能表現。吞吐率是HDFS性能的一個重要指標,但是與傳統單機文件系統的測試結果獲取方法不同之處在于,我們通過HDFS代碼中集成的ganglia相關模塊來收集HDFS的性能指標,監控諸如total_iops、RpcProcessingTime_avg、Syncs_num_ops等指標。有關ganglia以及監控指標的相關內容,將在下一彈《指標監控工具淺談》中進行分享。
此外,進行HDFS性能測試的時候,有一些外界環境條件也是需要注意的。首要之一是絕對不能啟動SecondaryNamenode,這是因為SecondaryNamenode會同步editlog,或者做checkpoint,這都將占用Namenode的帶寬和cpu資源,將干擾到性能測試獲取到的結果數據。其次,為了降低環境因素的干擾,諸如RaidNode、Balancer等都不應該在性能測試中啟動。HDFS文件系統中存在大量數據和沒有數據測出來的性能測試結果也是有差異的,不能用來做性能對比,這是因為在文件目錄結構樹中的查找也會消耗一定的系統資源。
理想的情況是準備一套干凈的只有Namenode和Datanode兩種角色的HDFS文件系統,然后將上述測試工具放在這個環境中運行獲取測試結果,用這個結果來與以前的版本做對比來獲得對新版本性能優劣的評價。
壓力測試
前述工具更關注性能方面的測試,實際上,性能和壓力總是像一對親兄弟,經常出現在同樣的測試環境中。對于壓力測試,我們通過制造大量的block、文件以及數據量來達到目的。測試團隊自己設計制作了線上壓力仿真工具,同樣采用上一篇提到的技術,可以在短短的一天內將block數、文件數造到和線上一致。使得Namenode節點龐大的內存資源被占用去80%以上(本文由于公開發表,相關數據不便公開)。然后再在這樣的環境下使用性能測試工具檢測HDFS的性能。云梯測試環境對于線上壓力的仿真能力非常有限,經過測算仿真的上限基本上是1:10的關系,即100臺機器集群可以仿真1000臺的實際環境。這里瓶頸不在Namenode,而是在Datanode上,由于機器少,block分散在Datanode上就會占用更多的內存、cpu資源,datanode的吞吐率也會下降,這樣一來性能測試受datanode性能的影響就無法發揮最大作用,測試結果失去參考價值。
總結
HDFS下常用的性能壓測工具不僅有本文提及的幾種,還有如“nnbench”,“randomwriter”,“randomtextwriter”等可以使用。本文所提及的則是最具代表性的幾種常用測試工具。海量數據的性能測試一直是這個領域的焦點,從熟悉這些工具入手,我們可以更快的切入到這個領域中。性能測試是一個說不完的話題,相關討論也是層出不窮,本文至此收尾,謹以此文作為觸摸Hadoop兩年來的一個總結。
原文轉自:http://www.anti-gravitydesign.com