【HBase】爲什麼不把META表信息直接保存在ZK中?每次訪問都需要請求meta表位置麼?

  • 主要是爲了保存的數據量考慮,ZK中不宜保存大量數據,而META表主要是保存Region和RegionServer的映射信息,Region的數量沒有具體約束,只要在內存允許的範圍內,Region數量可以有很多,如果保存在ZK中,ZK的壓力會很大。所以,通過一個-ROOT-表來轉存到RegionServer中是一個比較理想的方案,相比直接保存在ZK中,也就多了一層-ROOT-表的查詢,對性能來說影響不大。
  • 在這裏插入圖片描述
  • 每次訪問都需要走ZK –> -ROOT- —> .META.的流程麼?當然不需要,Client端有緩存,第一次查詢到相應region所在RS後,這個信息將被緩存到Client端,以後每次訪問都直接從緩存中獲取RS地址即可。當然這裏有個意外:訪問的region若果在RS上發生了改變,比如被balancer遷移到其他RS上了,這個時候,通過緩存的地址訪問會出現異常,在出現異常的情況下,Client需要重新走一遍上面的流程來獲取新的RS地址。總體來說,region的變動只會在極少數情況下發生,一般變動不會很大,所以在整個集羣訪問過程中,影響可以忽略。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章