1 測試環境
1.1 硬件環境
●五個HP Z210: 8G內存;4個型號爲i7-2600的CPU,4核;千兆網卡;SATA 硬盤,7200轉/分鐘
●CiscoCatalyst 3670交換機
1.2 軟件環境
OS:Red Hat 64bit;hadoop-1.0.3;HBase0.94.0
1.3 組網
2 寫性能測試
●黑色曲線
4個客戶端,分別部署在SM21、SM22、SM23和SM24。每個客戶端有兩個不共用連接的線程,表是非AutoFlush模式,數據滿2M後,才向HRegionServer提交。8個線程不斷向表的同一個列族插入value大小爲1K的cell, rowkey爲long類型的隨機數。表的定義:create'test0', 'profile'。
測試880分鐘。測試完成後,插入的數據共有548M個cell,數據量有548G。平均吞吐量爲10000cells/s。
●藍色曲線
4個客戶端,分別部署在SM21、SM22、SM23和SM24。每個客戶端有兩個不共用連接的線程,表是非AutoFlush模式,數據滿2M後,才向HRegionServer提交。8個線程不斷向8個表的插入value大小爲1K的cell, rowkey爲long類型的隨機數。
測試880分鐘後,插入的數據共有467M個記錄,數據量有467Gbyte。平均吞吐量爲8000cell/s。
●紅色曲線
1個客戶端,部署在SM21。客戶端有1個線程,表是非AutoFlush模式,數據滿2M後,才向HRegionServer提交。線程不斷向1個表的插入value大小爲1K的cell, rowkey爲long類型的隨機數。表的定義:create 'test0', 'profile'。
測試880分鐘後,插入的數據共有299M個記錄,數據量有299Gbyte。平均吞吐量爲5000cell/s。
3 讀性能測試
3.1 隨機查找測試1
表的定義如下:
create 'test0',{NAME => 'profile',BLOOMFILTER =>'ROWCOL'}
test0中有94M記錄,value大小爲1K。可以計算出表test0中共94GB數據。從test0中隨機查找存在的數據。測試得出:每秒可以查詢50次,時延爲1000ms/50=20ms。
測試結果分析:
在HDFS上測試可知,隨機讀64K-block(64K?HBase IO的基本單位是64K)的延遲越爲19ms。所以20MS的延遲主要是由於HDFS的延遲造成的。
注:如果沒有BLOOMFILTER,性能會更低。
3.2隨機查找測試2
除了4個客戶端同時查詢,其它與3.1相同。測試結果160次/S。每個客戶端40次/S。
3.3隨機查找測試3
一個客戶端,查詢不存在的記錄,其它與3.1同。每秒可以查詢75次,時延爲1000ms/75 = 13ms。
測試結果分析:
測試結果比查詢存在的記錄稍高。原因是查詢不存在的記錄只需要讀取bloom filter塊;除此之外,查詢存在的記錄還需要讀取數據塊。
3.4 測試4
一個客戶端進行範圍查找,平均吞吐約爲2400rows/s。
4 磁盤性能測試
4.1 順序寫
測試方法:一個進程,順序寫3000個文件,每個文件256MB,每次寫64KB。
測試結果:寫64KB的延遲爲2.5ms,吞吐爲28MB/S。
4.2 順序讀
測試方法:一個進程,順序讀3000個文件,每個文件256MB,每次讀64KB。
測試結果:讀64KB的延遲爲0.8ms,吞吐爲80MB/S。
4.3 隨機64k-block讀
測試方法:一個進程,隨機讀3000個文件,每個文件256MB,每次讀64KB。
測試結果:讀64KB的延遲爲21ms,吞吐爲3MB/S。
4.4 隨機1b讀
測試方法:一個進程,隨機讀3000個文件,每個文件256MB,每次讀1KB。
測試結果:讀1byte的延遲爲18MS,吞吐爲55B/S。
4.5 總結
磁盤讀寫延遲由三部分組成:尋道延遲+旋轉延遲+傳輸延遲。
● 對比4.1和4.2, 讀性能是寫的3倍。
● 對比4.2和4.3,尋道延遲和旋轉延遲佔總時間的97%
● 4.4,IOPS能夠達到55次/s
5 HDFS性能測試
5.1 順序寫測試
測試方法:一個進程,順序寫10個文件,每個文件10GB,每次寫64KB。
測試結果:寫64KB的延遲爲4.7ms,吞吐爲14MB/S。
5.2 隨機64k-block讀測試
測試方法:一個進程,隨機讀10個文件,每個文件10GB,每次讀64KB。
測試結果:讀64KB的延遲爲2ms,吞吐爲32MB/S。