中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase體系結構是怎么樣的

發布時間:2021-12-08 14:15:58 來源:億速云 閱讀:192 作者:小新 欄目:云計算

這篇文章給大家分享的是有關HBase體系結構是怎么樣的的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

     HBase是Apache hadoop集群中常用的非關系型數據,它是一種開源的、分布式的、多版本、面向列存儲的數據庫。

     它的源碼在 https://github.com/apache/hbase 上,妥妥的開源啊。。。

     分布式是因為它的數據最后存儲在HDFS上,所以它繼承了hadoop分布式的優良傳統(不知道能否這么理解)。

    多版本就不多介紹了,版本更新快唄。。。

     面向列的存儲是它與傳統關系型數據庫最大的區別之一,它是根據rowKey、columnfamily、quaifer、timestamp(如果你有多版本的話)得到你最后的value值。。這個咱們以后再介紹,今天主要想寫的是hbase的體系結構。

  HBase體系結構是怎么樣的

  hbase的服務器體系結構也是主從服務器架構,分為HBase Master server和HRegionServers。

  HBase Master server :主服務器,主要負責管理HRegionServers,個人理解:只是關于HRegionServer的決策權都是由它完成的。

具體的功能有:

    1.用戶對Table的增、刪、改、查。

    2。HRegionServer的負載均衡,調整HRegion的分布,像一個HRegionserver掛了,master會將掛了的HRegionserver上面的HRegion重新拿到,標上未分配,然后再分配一個活的HRegionServer,當然,它也得先詢問下這個HRegionServer要不要了。。

    3.在HRegion分裂后,負責新的HRegion的分配。 默認的HRegion的大小為64M,當超過這個大小的時候,它會自動分裂成兩個,并且這個拆分速度很快,因為它在拆分的時候先會創建兩個HRegion,而這兩個HRegion先會保存對原HRegion的引用,當這兩個新的HRegion數據拆分完成后,再將此引用去掉,并刪除原HRegion。現在拆分完了,但是HRegion不是拆分完了就沒事干了,它得找個HRegionServer管理啊,so,又得HBase Master Server分配了,同上~~

   4.HRegionServer停機后,負責失效的HRegionServer上的HRegion分配。服務掛了,但是HRegion沒掛啊,HRegion可以說是一個存儲文件夾,一個服務掛了,找頭(hbase master server)再找一個唄,然后繼續做著保存或查詢時被提取數據的工作。

    HRegionServer的構成:

    HRegionServer包含了一個HLog部分和HRegion部分(多個HRegion)。。

  ps:這地方可能有些異議,因為網上一些圖片顯示的都是HRegion里才包含HLog,網上的資料比較老,所以這里我參考《hadoop實戰》中的資料,它的版本是0.92,可能與現在的0.96版本還算比較接近的。。

    HLog部分保存著用戶操作hbase的日志(不排除也包含master管理hregion的操作,明天看一下),用戶的操作都會先記錄到HLog中,然后再保存到HRegion中。  

    而HRegion其實就是存儲的實際數據了。它包含了多個HStore。

    HStore:每一個列族都會形成一個HStore,它又由MemStore和多個HFile組成。

    MemStore駐留在內存中,當數據保存時,數據會先存儲到MemStore中,然后根據用戶設定的顯式刷寫或隱式刷寫模式,將數據再保存到HFile中。默認的存儲模式是隱式存儲。這個以后寫client api的時候再介紹。。當然,這地方還有個注意的地方,當數據保存到MemStore,最后卻沒有保存到HFile中時,死機了。。HLog的作用來了,用戶操作的指令保存在HLog中,它會將指令執行,再將重新保存到MemStore中,這樣就可以完成后面的操作了。。

    HFile負責的是實際數據的存儲了,它是HBase中的最小單位了。它也可以進行拆分,也就是所謂的分區,讓數據更加分散,讀取數據的時候更加效率。

    昨天未寫完的部分今天補上。。

    HBase的兩個主要結構介紹完了,那么咱們現在就開始介紹一下它的存儲流程和讀取的流程。。

HBase體系結構是怎么樣的

將它作為一個流程圖可能不太合適。。不過它里面所需要的東西基本都包含了。。

先說下Zookeeper的作用:

  1. 存儲了Root表的地址和HMaster的地址。存儲ROOT的地址可以更快的查詢到哪張表有數據,提高運算效率。存儲HMaster地址是為了確定有哪些HMaster。

  2. 管理著MHaster。當HMaster失效時,它可以找到另一個HMaster,避免HMaster單點故障。

ROOT與.META與Region的結構是一樣的,都是以鍵值對的形式保存數據。。

ROOT里面存儲了對應的.META地址和開始結束信息(像1-5,說明ROOT里面存儲了5個.META的地址信息)。

.META里面同樣存儲了對應的HRegion地址和開始結束信息。

好了,現在開始通過從客戶端讀取信息的角度開始分析了:

  1. client要讀取信息,先查詢下client 端的cache中是否存在數據,如果存在,剛直接返回數據。如果不存在,則進入到zookeeper,查找到里面的相應數據存在的Root表中的地址。

  2. 通過數據存在ROOT表中地址找到.META,最終找到HRegion。找到HRegion后,它會先訪問MemStore中是否存在數據,如果存在,則直接讀取。如果沒有,就再到HFile中查找數據,并將數據放到MemStore。

  3. 最后數據返回到客戶端顯示。。

存儲數據流程:

    由于Hbase中默認的刷寫方式是隱式刷寫,所以你在put()數據時,它會自動保存到HRegion上,但當你批量處理數據時,它會將數據先保存到client端的cache中。當你關閉隱式刷寫時,你put()的數據則會保存到client cache中,直到你調用刷寫命令時,才會保存到HRegion中。具體的命令等明天我去公司的時候貼上來。。在家沒環境。。

    在HRegion部分的存儲:要寫入的數據會先寫到HMemcache 和Hlog 中,HMemcache 建立緩存,Hlog 同步Hmemcache和Hstore 的事務日志,發起Flush Cache 時,數據持久化到Hstore 中,并清空HMemecache。

此處需要關注:

HBase 寫數據,首先寫入Memcache,并計入Log中,最后寫入HStore中,如果在寫入HStore是發生系統異常,就可以從Log中恢復數據,重新寫 入HStore中。

感謝各位的閱讀!關于“HBase體系結構是怎么樣的”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博乐市| 阳山县| 新沂市| 东至县| 扬州市| 刚察县| 竹溪县| 墨玉县| 商水县| 堆龙德庆县| 安庆市| 扶风县| 体育| 即墨市| 华蓥市| 客服| 图木舒克市| 古蔺县| 灵川县| 定日县| 兴仁县| 郴州市| 曲松县| 宜宾县| 泸溪县| 全南县| 丰台区| 都匀市| 扶余县| 济南市| 密云县| 龙里县| 顺昌县| 色达县| 方正县| 尼玛县| 昌图县| 咸阳市| 景宁| 五河县| 柳江县|