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