1.HBase 數據讀取流程分析
從 zookeeper 獲得 meta 表所在 region 位置,再根據 table、namespace、rowkey 去 meta 表中獲取讀對象所在的 RegionServer。
找到 RegionServer 之后,首先用 MemStoreScanner 搜索 MemStore 里是否有所查的 rowKey(這一步在內存中,很快)
如果沒有則需要定位 HFile 了,具體流程是:
* 用 Bloom Block 通過算法過濾掉大部分一定不包含所查 RowKey 的 HFile , 另外內存中還會記錄每個 HFile 的偏移量,可以快速排除掉剩下的部分HFile * 經過上面兩步,剩下的就是很少一部分的 HFile 了,就需要根據 Index Block 索引數據快速查找 Rowkey 所在的 Block 的位置 * 找到 Block 的位置后,檢查這個 Block 是否在 BlockCache 中,在則直接去取,如果不在的話把這個 Block 加載到 BlockCache 進行緩存,當下一次再定位到這個 Block 的時候就不需要再進行一次 IO 將整個 Block 讀取到內存中。 * 最后掃描這些讀到內存中的 Block(可能有多個,因為有多版本),返回需要的版本。
2.HBase Region分裂如何定位切分點
整個Region中最大Store中的最大文件中最中心的一個Block的首個RowKey,什么情況下會出現沒有切分點的場景呢?最常見的就是一個文件只有一個block,執行split的時候就會發現無法切分。
更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。