<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          HBase-整體架構(gòu)及讀寫原理

          共 1807字,需瀏覽 4分鐘

           ·

          2020-10-02 20:13

          1.HBase架構(gòu)圖

          f2f007ce470f6ad188b042976ac46415.webp

          上圖標(biāo)明了HBase各個(gè)組件及其內(nèi)在聯(lián)系,主要有以下幾部分

          HMaster:HBase的管理節(jié)點(diǎn),可以為多個(gè),實(shí)現(xiàn)HA,負(fù)責(zé)將region分配給HRegionServer,協(xié)調(diào)RegionServer的負(fù)載并維護(hù)集群的狀態(tài),維護(hù)元數(shù)據(jù),不參與數(shù)據(jù)的輸入輸出。

          HRegionServer:HBase的工作節(jié)點(diǎn),主要作用為依托ZookeeperWatcher進(jìn)行分布式信息共享與任務(wù)協(xié)調(diào);Region的管理;WAL(Write-Ahead-Log)管理;Metrics

          zookeeper:zk的本質(zhì)是注冊(cè)中心,集成在HBase內(nèi)部負(fù)責(zé)以下任務(wù),hbase regionserver 向zookeeper注冊(cè),提供hbase regionserver狀態(tài)信息(是否在線);hmaster啟動(dòng)時(shí)候會(huì)將hbase 系統(tǒng)表-ROOT- 加載到 zookeeper cluster,通過zookeeper cluster可以獲取當(dāng)前系統(tǒng)表.META.的存儲(chǔ)所對(duì)應(yīng)的regionserver信息;

          client:hbase的客戶端,可以使用第三方封裝好的client。也可以使用hbase自帶的client

          HDFS:HBase的底層存儲(chǔ)系統(tǒng)。


          2.HBase寫入為什么那么快?

          HBase寫入優(yōu)先,它并不會(huì)直接寫入磁盤,而是寫入MemStore,待MemStore達(dá)到閾值,再異步刷入文件形成一個(gè)StoreFile。多個(gè)小的StoreFile會(huì)合并成一個(gè)大的StoreFile。當(dāng)大的StoreFile達(dá)到閾值,就會(huì)觸發(fā)split,將當(dāng)前的Region分割成兩個(gè)子的Region并被HMaster分配到不同的RegionServer上。整個(gè)寫入過程由于全內(nèi)存操作,所以很快。


          3.HBase讀取為什么那么快?

          首先看一下HBase讀取數(shù)據(jù)的大致流程

          f854595557371a9febb5eb17609ea5b8.webp

          尋址流程

          client–>Zookeeper–>ROOT表–>META表–>RegionServer–>Region–>client

          具體流程

          • 先到zk找到root表的RegionServer(root表的地址);

          • 到root表中找到meta表的RegionServer(meta表的地址);root表的region只會(huì)有一個(gè),meta表的region會(huì)有多個(gè);為了加快訪問速度meta表的數(shù)據(jù)會(huì)被緩存到client且不會(huì)主動(dòng)過期。在應(yīng)用中就有主動(dòng)flush client cache的操作;

          • 到meta表中找到對(duì)應(yīng)數(shù)據(jù)的RegionServer;

          • 到數(shù)據(jù)的RegionServer中找到對(duì)應(yīng)的Region;

          • 先到BlockCache查找,找不到再到MemStore查找,再找不到就到StoreFile中查找,然后緩存到BlockCache中;BlockCache負(fù)責(zé)讀,MemStore負(fù)責(zé)寫,這種讀寫分離的設(shè)計(jì)是HBase寫和讀都很快的基礎(chǔ)。為了加快查詢,在StoreFile中使用了布隆過濾器(LSM樹的優(yōu)化方式)。HBase只是增加數(shù)據(jù)(因?yàn)镠File是只讀的),更新和刪除數(shù)據(jù)都是在合并(Compact)階段完成的。


          4.HBase宕機(jī)如何處理?

          宕機(jī)分為 HMaster 宕機(jī)和 HRegisoner 宕機(jī),如果是HRegionServer宕機(jī), HMaster 會(huì)將其所管理的region重新分布到其他活動(dòng)的RegionServer上,由于數(shù)據(jù)和日志都持久在 HDFS中,該操作不會(huì)導(dǎo)致數(shù)據(jù)丟失。所以數(shù)據(jù)的一致性和安全性是有保障的。如果是HMaster宕機(jī), HMaster沒有單點(diǎn)問題, HBase中可以啟動(dòng)多個(gè)HMaster,通過Zookeeper 的 Master Election機(jī)制保證總有一個(gè)Master運(yùn)行。即 ZooKeeper 會(huì)保證總會(huì)有一個(gè) HMaster 在對(duì)外提供服務(wù)。


          5.HBase中compact用途是什么,什么時(shí)候觸發(fā),分為哪兩種?

          用途:合并文件;清除過期,多余的版本;提高讀寫文件的效率;

          觸發(fā):store的storeFile達(dá)到一定閾值后,就會(huì)進(jìn)行compact。

          分類:

          • minor:合并部分文件;不做任何刪除數(shù)據(jù)、多版本數(shù)據(jù)的清理工作;

          • major:對(duì)一個(gè)store下的所有storefile執(zhí)行合并,最終合并成一個(gè)文件,多余版本會(huì)在這時(shí)清理;更新、刪除也在這時(shí)進(jìn)行;


          瀏覽 61
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品18禁| 国产A级毛片久久久久久 | 精品999久久久一级毛片 | a无码视频在线观看 | 无码人妻精品一区二区三千菊电影 |