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