Apache HBase 1.3.0版在2017年1月中旬正式發布了,新版本支持分層數據的壓縮和多個方面的性能提升,像預寫日志(WAL)、一個新的RPC機制,等等。HBase 1.3.0一共修復了1,700多個問題。
在一些像OpenTSDB的項目中,HBase通常被直接用作時序應用或者通過項目本身用作時序應用。在時序應用中,數據常常按照抵達時間的先后順序隊列寫入存儲單元,查詢數據經常發生在一個有限的時間回溯窗口內,這導致最新寫入數據的查詢操作比舊數據更頻繁。
HBase 1.3.0版本支持分層壓縮的特性正好適用于一些特定的應用場景——在極少數情況下,數據被刪除或更新的時候——通常要更頻繁地掃描最新的數據,而舊數據則較少被掃描。
使用這種新的壓縮策略可以輕松記錄文件的生存時間(time-to-live,TTL);當將現有存儲文件壓縮到單個較大的存儲文件中時,過期的記錄將被刪除。
根據谷歌BigTable的建模法則,HBase基于NoSQL將數據劃分成不同的區域,每個區域都分別被定義為關鍵空間的起始和結束行。HBase設置了區域服務器來管理多個區域,當一個區域變得過大時,它會被拆分成兩個并且隨機遷移給其他的區域服務器管理,以便在所有分布式節點之間實現負載均衡。
默認情況下每個區域服務器上都有一個預寫日志(WAL),該區域上的所有操作都要寫入這個唯一的預寫日志(WAL)。而改進的多預寫日志(WAL)支持更高性能的寫入操作,這使得復制速度更快而同步寫入的延遲更低。默認情況下,多預寫日志(WAL)的這一特性提供了三個區域分組策略來分配預寫日(WAL)志:每個區域的預寫日志(WAL)都有一個“身份”標識,輪詢調度算法保證每個區域映射的預寫日志(WAL)都有其“邊界”,區域中不同“命名空間”的表被映射到不同的預寫日志(WAL)文件中。性能測試報告顯示,預寫日志(WAL)在純SATA磁盤里運行的平均延時減少了20%;在SATA-SSD磁盤里運行的延時減少了40%。
新的RPC調度器基于CoDel算法,用于阻止可用IO無法滿足過高請求頻率引起的長連接隊列。CoDel算法以可控的延遲來管理活動隊列,它根據定義好的閾值來裁決隊列中的最小延遲。一旦最小延遲超過閾值,該連接便會被丟棄以便處理其他更有利的最小延遲。
其他的改進還包括一個避免大量IO峰值的磁盤刷新吞吐量控制器。這些改進還有助于提高Apache Phoenix、OpenTSDB以及其他依賴HBase引擎做數據持久化和快速查詢功能的軟件項目的性能。
查看英文原文:Apache HBase 1.3 Ships with Multiple Performance Improvements