hbase中region的規劃與硬盤配置分析

      Hbase在邏輯上的存儲最小單位是Region,物理上來說事HFile。每個Region由多個HFile組成。那麼,是否有一個推薦值,確定每臺regionserver上運行多少個region,,每個region的size多大是最合適的呢?

      看到《Hbase權威指南》中有一段話寫道:

      It is noted in the Bigtablepaper that the aim is to keep the region count between 10 to 1000 per serverand each at roughly 100-200MB in size. This refers to the hardware in use in2006 (and earlier). For HBase and modern hardware, the number would be morelike 10 to 1000 regions per server, but each between 1GB to 2GB in size.

But while the numbers haveincreased, the basic principle is the same: the number of regions per server,and their respective sizes, depends on what can be handled sufficiently by asingle server.

      以目前主流服務器的能力計算,該文章給出了以下推薦值:每臺regionserver管理10到1000個regions,每個region大小在1GB~2GB。對應於hbase-site.xml中的一個配置項爲hbase.hregion.max.filesize。如果按推薦值計算每臺regionserver管理的數據量最少可以到10*1GB=10GB,最大可以到1000*2GB=2TB。考慮到3份備份總數據量在6TB左右。通常來講這裏磁盤的配置就有兩種方案。1、4塊2TB的硬盤;2、12塊500GB的硬盤。兩種硬盤容量一樣,後者硬盤塊數增加,如果硬盤總線帶寬夠用,後一種能提供更大的吞吐率,更細粒度的磁盤冗餘備份,更塊的單盤故障恢復時間。

     此外,關於硬件中硬盤的配置,對於hadoop和hbase分佈式應用來說,具有自己的特點。目前主流的服務器廠商都在主板上集成了raid卡,而raid對於hadoop,hbase應用來說是不必要的,官方推薦的是採用JBOD的方式來單獨掛載每塊硬盤。《hadoop權威指南》中寫道:

      HDFS集羣沒有采用RAID(冗餘磁盤陣列)作爲datanodes的存儲設備(儘管namenode使用RAID來保護元數據不會丟失)。由於HDFS是採用在節點之間塊複製的方法,所以RAID提供的冗餘機制對HDFS來說是多餘的。

      此外,RAID條帶(RAID 0)常用於增加性能,但卻比HDFS中用到的JBOD(Just a Bunch Of Disks)要慢,而且JBOD在所有的磁盤之間對HDFS塊進行時間片的輪轉。具體說,RAID 0讀寫操作受限於冗餘磁盤陣列中最慢的那個磁盤的速度。在JBOD中,磁盤的操作是獨立的,所以讀寫操作的平均速度要大於最慢磁盤的速度。實際應用中,磁盤性能多是可以改變的,即使是同一型號的磁盤。在Yahoo Hadoop Cluster的Benchmark中,測試Gridmix顯示JBOD要比RAID 0快10%,另一個測試顯示快30%(這裏的測試指的是HDFS的寫能力。

最後,當一個JBOD配置中的一個磁盤失效,HDFS可以繼續操作;但是在RAID中,一個磁盤的失效將會導致整個陣列(節點也一樣)變得不再可用。

      所以,如果今後有硬件廠家願意生產JBOD配置的服務器作爲雲計算標配機器,那將是最好的選擇。


      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章