HBase列族設計優化實踐分析
大小:0.7 MB 人氣: 2017-10-10 需要積分:1
隨著大數據的越來越普及,HBase也變得越來越流行。會用HBase現在已經變的并不困難,然而,怎么把它用的更好卻并不簡單。那怎么定義‘用的好’呢?很簡單,在保證系統穩定性、可用性的基礎上能夠用最少的系統資源(CPU,IO等)獲得最好的性能(吞吐量,讀寫延遲)就是’用的好’。HBase是一個龐大的體系,涉及到很多方面,很多因素都會影響到系統性能和系統資源使用率,根據場景對這些配置進行優化會很大程度上提升系統的性能。筆者總結至少有如下幾個方面:HDFS相關配置優化,HBase服務器端優化(GC優化、Compaction優化、硬件配置優化),列族設計優化,客戶端優化等,其中客戶端優化在前面已經通過超時機制、重試機制講過,后面筆者會繼續分別介紹其他三個優化重點。
本節重點介紹列族設計優化,HBase中基本屬性都是以列族為單位進行設置的,如下示例,用戶創建了一張稱為‘ NewsClickFeedback’的表,表中只有一個列族’Toutiao’,緊接著的屬性都是對此列族進行的設置。這些屬性基本都會或多或少地影響該表的讀寫性能,但有些屬性用戶只需要理解其意義就知道如何設置,而有些屬性卻需要根據場景、根據業務來設置,比如BLOCKSIZE屬性在不同場景下應該如何設置?還有COMPRESSION屬性和DATA_BLOCK_ENCODING屬性,兩者都可以提供壓縮功能,那到底應該選擇哪個,還是兩個都需要進行設置?本文就重點介紹這三個屬性的設計原則。
BlockSize設置
塊大小是HBase的一個重要配置選項,默認塊大小為64M。對于不同的業務數據,塊大小的合理設置對讀寫性能有很大的影響。而對塊大小的調整,主要取決于兩點:
1. 用戶平均讀取數據的大小。理論上講,如果用戶平均讀取數據的大小較小,建議將塊大小設置較小,這樣可以使得內存可以緩存更多block,讀性能自然會更好。相反,建議將塊大小設置較大。
為了更好說明上述原理,筆者使用YCSB做了一個測試,分別在Get、Scan兩種場景下測試不同BlockSize大小(16K,64K,128K)對性能的影響。測試結果分別如下面兩圖:
隨著BlockSize的增大,系統隨機讀的吞吐量不斷降低,延遲不斷增大。64K大小比16K大小的吞吐量大約降低13%,延遲增大13%。同樣的,128K大小比64K大小的吞吐量降低約22%,延遲增大27%。因此,對于以隨機讀為主的業務,可以適當調低BlockSize的大小,以獲得更好的讀性能。
隨著BlockSize增大,scan的吞吐量逐漸增大,延遲不斷降低。64K大小BlockSize比16K大小的吞吐量增加了33%,延遲降低了24%;128K大小比64K大小吞吐量增加了7%,延遲降低了7%;因此,對于以scan為主的業務,可以適當增大BlockSize的大小,以獲得更好的讀性能。
可見,如果業務請求以Get請求為主,可以考慮將塊大小設置較小;如果以Scan請求為主,可以將塊大小調大;默認的64M塊大小是在Scan和Get之間取得的一個平衡。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
HBase列族設計優化實踐分析下載
相關電子資料下載
- 【分布式存儲數據恢復】hbase和hive數據庫底層文件誤刪的恢復案例 415
- 使用G1 GC時HBase為什么性能下降了近20% 1653
- Hbase的基礎性介紹與入門 1046
- 阿里HBase高可用8年“抗戰”回憶錄 246
- 阿里云HBase推出普惠性高可用服務,獨家支持用戶的自建、混合云環境集群 205
- 今年小米做東,HBaseCon Asia 2019將在北京召開 2893
- 基于HBase的工業大數據存儲實戰 3130
- 阿里云HBase推出全新X-Pack服務 定義HBase云服務新標準 123
- 阿里云HBase全新發布X-Pack NoSQL數據庫再上新臺階 231
- 八年技術加持,性能提升10倍,阿里云HBase 2.0首發商用 130