關於hadoop集群的簡單性能測試——mapreduce性能,hive性能,並行計算分析(原創)


一、測試目的

主要是測試hadoop集群分布式計算的速率跟數據大小和計算節點數量的關系。

二、環境

 

硬件:浪潮NF5220。

系統:CentOS 6.1

Master節點在母機CentOS上,分配4CPU,13G內存。

其余三個slave節點在母機的KVM虛擬機上,系統一樣是CentOS6.1。硬件配置:內存1G,4 CPU,每個100G容量大小的硬盤。

三、步驟及測試結果

首先將原始數據大小為260M的txt文件放入hdfs。並配置了Hive環境做數據查詢測試。由於原始數據太小,要做GB以上的文件測試。所以並且分別拷貝10、50、100、200、300、400、500份原始數據做成對應的大數據文件。(即:例如復制100份的數據集形成一份大數據,其中有個字段是id,分別為1——100,對應原始數據的100份)

分別對這些數據使用hiveQL查詢相同的數據,然后記錄不同大小的數據查詢的結果。做成一個圖表。然后再添加一個slave計算節點,負載均衡后再使用相同的hiveQL語言查詢相同的數據集,記錄對應的結果。做出下圖:

 

其中,紅色是4個計算節點的趨勢線,黑色是三個節點。X軸是任務完成時間,Y軸是對應的數據大小,即拷貝原始數據的副本數。圖像表明,1、隨着數據集的容量增大,mapreduce效率會提高,但是當過了一直值,效率會再次下降。2、4個計算節點時隨着數據量的增大mapreduce效率增加的更明顯,但是也有一個峰值。3、對應相同大小的數據,4個計算節點的效率要高於3個計算節點的。

當然,這些數據存在着較大的誤差,由於條件有限,最后加入的節點與之前三個配置不一樣。例如,最后加入的節點硬盤容量比較大,並且本人格式化的hdfs空間也相對大點。這就意味着這個節點會有更多的block,當執行mapreduce時也就會產生更多的mapper。但是CPU和其他硬件沒有提高,會拖帶本節點的性能,所以這個節點的增加不對應線性的速率增加。但是總會比三節點的要好。

另外,通過分析mapreduce節點工作情況,也驗證了task的mapper的數量與性能的關系。

在hadoop中,一個tast作為一個調度時間片。任何時候,只要有空閑的CPU CORE,而且有待調度的Task,那么Task就可以被分配到空閑的CPU CORE上。將一個節點划分為N個Slots,N等於該節點的CPU CORE個數,也就是一個節點最多可以運行與CPU CORE個數相等的Task。

Slots有點像資源池,每個任務必須要獲得一個slots才可以運行。Slots可以理解為能並發執行多少個任務。Slots分為mapper slots和 reduce slots,分別對應最大可並行執行的mapper數和reducer數。

Mapper總數不會變,因為查詢同樣的數據,對應相同數量的spilts。當開始我將mapper slots設置為4時,對應19個task。當mapper slots設置為8時,對應10個task。如圖:

            19個Task

         10個Task

對應19個task。前18個的mapper slots都是滿的4個。第十九個就不滿。所以mapper slots改為8的時候,需要10個task,第十個還是不滿。通過下圖也可以看出,雖然task數量少了,但是每個task運行的時間多了,因為對於每個task,所有mapper不可能同時獲得CPU資源做到並行計算,需要等待調度,總效率還是沒有提高。所以要想提高效率還是要多增加計算節點,降低每個task的最大並行mapper數量(這個數量應該等於CPU核的數量,做到並行調度),從而增加task的數量,使task被均勻分配到每個節點,讓所有mapper都並行計算。提高效率。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM