欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Hbase數(shù)據(jù)存儲原理與讀寫詳解-創(chuàng)新互聯(lián)

1、HBase的數(shù)據(jù)存儲原理

Hbase數(shù)據(jù)存儲原理與讀寫詳解

平原ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
  • 一個HRegionServer會負責管理很多個region
  • 一個*region包含很多個store
    • 一個列族就劃分成一個store**
    • 如果一個表中只有1個列族,那么每一個region中只有一個store
    • 如果一個表中有N個列族,那么每一個region中有N個store
  • 一個store里面只有一個memstore
    • memstore是一塊內(nèi)存區(qū)域,寫入的數(shù)據(jù)會先寫入memstore進行緩沖,然后再把數(shù)據(jù)刷到磁盤
  • 一個store里面有很多個StoreFile, 最后數(shù)據(jù)是以很多個HFile這種數(shù)據(jù)結構的文件保存在HDFS上

    • StoreFile是HFile的抽象對象,如果說到StoreFile就等于HFile
    • 每次memstore刷寫數(shù)據(jù)到磁盤,就生成對應的一個新的HFile文件出來
      Hbase數(shù)據(jù)存儲原理與讀寫詳解

      2、HBase數(shù)據(jù)讀流程

      Hbase數(shù)據(jù)存儲原理與讀寫詳解
      說明:HBase集群,只有一張meta表,此表只有一個region,該region數(shù)據(jù)保存在一個HRegionServer上

  • 1、客戶端首先與zk進行連接;從zk找到meta表的region位置,即meta表的數(shù)據(jù)存儲在某一HRegionServer上;客戶端與此HRegionServer建立連接,然后讀取meta表中的數(shù)據(jù);meta表中存儲了所有用戶表的region信息,我們可以通過scan 'hbase:meta'來查看meta表信息
  • 2、根據(jù)要查詢的namespace、表名和rowkey信息。找到寫入數(shù)據(jù)對應的region信息
  • 3、找到這個region對應的regionServer,然后發(fā)送請求
  • 4、查找并定位到對應的region
  • 5、先從memstore查找數(shù)據(jù),如果沒有,再從BlockCache上讀取
    • HBase上Regionserver的內(nèi)存分為兩個部分
    • 一部分作為Memstore,主要用來寫;
    • 另外一部分作為BlockCache,主要用于讀數(shù)據(jù);
  • 6、如果BlockCache中也沒有找到,再到StoreFile上進行讀取
    • 從storeFile中讀取到數(shù)據(jù)之后,不是直接把結果數(shù)據(jù)返回給客戶端,而是把數(shù)據(jù)先寫入到BlockCache中,目的是為了加快后續(xù)的查詢;然后在返回結果給客戶端。

3. HBase寫數(shù)據(jù)流程

Hbase數(shù)據(jù)存儲原理與讀寫詳解

  • 1、客戶端首先從zk找到meta表的region位置,然后讀取meta表中的數(shù)據(jù),meta表中存儲了用戶表的region信息

  • 2、根據(jù)namespace、表名和rowkey信息。找到寫入數(shù)據(jù)對應的region信息

  • 3、找到這個region對應的regionServer,然后發(fā)送請求

  • 4、把數(shù)據(jù)分別寫到HLog(write ahead log)和memstore各一份

  • 5、memstore達到閾值后把數(shù)據(jù)刷到磁盤,生成storeFile文件

  • 6、刪除HLog中的歷史數(shù)據(jù)
補充:
HLog(write ahead log):
    也稱為WAL意為Write ahead log,類似mysql中的binlog,用來做災難恢復時用,HLog記錄數(shù)據(jù)的所有變更,一旦數(shù)據(jù)修改,就可以從log中進行恢復。

4、HBase的flush機制

4.1、flush觸發(fā)條件

4.1.1、memstore級別限制

  • 當Region中任意一個MemStore的大小達到了上限(hbase.hregion.memstore.flush.size,默認128MB),會觸發(fā)Memstore刷新。
<property>
    <name>hbase.hregion.memstore.flush.size</name>
    <value>134217728</value>
</property>

4.1.2 、region級別限制

  • 當Region中所有Memstore的大小總和達到了上限(hbase.hregion.memstore.block.multiplier hbase.hregion.memstore.flush.size,默認 2 128M = 256M),會觸發(fā)memstore刷新。
<property>
    <name>hbase.hregion.memstore.flush.size</name>
    <value>134217728</value>
</property>
<property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>2</value>
</property>   

4.1.3、Region Server級別限制

  • 當一個Region Server中所有Memstore的大小總和超過低水位閾值hbase.regionserver.global.memstore.size.lower.limit*hbase.regionserver.global.memstore.size(前者默認值0.95),RegionServer開始強制flush;
  • 先Flush Memstore大的Region,再執(zhí)行次大的,依次執(zhí)行;
  • 如寫入速度大于flush寫出的速度,導致總MemStore大小超過高水位閾值hbase.regionserver.global.memstore.size(默認為JVM內(nèi)存的40%),此時RegionServer會阻塞更新并強制執(zhí)行flush,直到總MemStore大小低于低水位閾值
<property>
    <name>hbase.regionserver.global.memstore.size.lower.limit</name>
    <value>0.95</value>
</property>
<property>
    <name>hbase.regionserver.global.memstore.size</name>
    <value>0.4</value>
</property>

4.1.4、HLog數(shù)量上限

  • 當一個Region Server中HLog數(shù)量達到上限(可通過參數(shù)hbase.regionserver.maxlogs配置)時,系統(tǒng)會選取最早的一個 HLog對應的一個或多個Region進行flush

4.1.5、定期刷新Memstore

  • 默認周期為1小時,確保Memstore不會長時間沒有持久化。為避免所有的MemStore在同一時間都進行flush導致的問題,定期的flush操作有20000左右的隨機延時。

4.1.6、手動flush

  • 用戶可以通過shell命令flush ‘tablename’或者flush ‘region name’分別對一個表或者一個Region進行flush。

4.2、flush的流程

  • 為了減少flush過程對讀寫的影響,將整個flush過程分為三個階段:

    • prepare階段:遍歷當前Region中所有的Memstore,將Memstore中當前數(shù)據(jù)集CellSkipListSet做一個快照snapshot;然后再新建一個CellSkipListSet。后期寫入的數(shù)據(jù)都會寫入新的CellSkipListSet中。prepare階段需要加一把updateLock對寫請求阻塞,結束之后會釋放該鎖。因為此階段沒有任何費時操作,因此持鎖時間很短。

    • flush階段:遍歷所有Memstore,將prepare階段生成的snapshot持久化為臨時文件,臨時文件會統(tǒng)一放到目錄.tmp下。這個過程因為涉及到磁盤IO操作,因此相對比較耗時。
    • commit階段:遍歷所有Memstore,將flush階段生成的臨時文件移到指定的ColumnFamily目錄下,針對HFile生成對應的storefile和Reader,把storefile添加到HStore的storefiles列表中,最后再清空prepare階段生成的snapshot。

5、Compact合并機制

  • hbase為了==防止小文件過多==,以保證查詢效率,hbase需要在必要的時候?qū)⑦@些小的store file合并成相對較大的store file,這個過程就稱之為compaction。

  • 在hbase中主要存在兩種類型的compaction合并
    • ==minor compaction 小合并==
    • ==major compaction 大合并==
4.3.1 minor compaction 小合并
  • 在將Store中多個HFile合并為一個HFile

    在這個過程中會選取一些小的、相鄰的StoreFile將他們合并成一個更大的StoreFile,對于超過了TTL的數(shù)據(jù)、更新的數(shù)據(jù)、刪除的數(shù)據(jù)僅僅只是做了標記。并沒有進行物理刪除,一次Minor Compaction的結果是更少并且更大的StoreFile。這種合并的觸發(fā)頻率很高。

  • minor compaction觸發(fā)條件由以下幾個參數(shù)共同決定:
<!--表示至少需要三個滿足條件的store file時,minor compaction才會啟動-->
<property>
    <name>hbase.hstore.compactionThreshold</name>
    <value>3</value>
</property>

<!--表示一次minor compaction中最多選取10個store file-->
<property>
    <name>hbase.hstore.compaction.max</name>
    <value>10</value>
</property>

<!--默認值為128m,
表示文件大小小于該值的store file 一定會加入到minor compaction的store file中
-->
<property>
    <name>hbase.hstore.compaction.min.size</name>
    <value>134217728</value>
</property>

<!--默認值為LONG.MAX_VALUE,
表示文件大小大于該值的store file 一定會被minor compaction排除-->
<property>
    <name>hbase.hstore.compaction.max.size</name>
    <value>9223372036854775807</value>
</property>
4.3.2 major compaction 大合并
  • 合并Store中所有的HFile為一個HFile

    將所有的StoreFile合并成一個StoreFile,這個過程還會清理三類無意義數(shù)據(jù):被刪除的數(shù)據(jù)、TTL過期數(shù)據(jù)、版本號超過設定版本號的數(shù)據(jù)。合并頻率比較低,默認7天執(zhí)行一次,并且性能消耗非常大,建議生產(chǎn)關閉(設置為0),在應用空閑時間手動觸發(fā)。一般可以是手動控制進行合并,防止出現(xiàn)在業(yè)務高峰期。

  • major compaction觸發(fā)時間條件

    <!--默認值為7天進行一次大合并,-->
    <property>
    <name>hbase.hregion.majorcompaction</name>
    <value>604800000</value>
    </property>
  • 手動觸發(fā)

    ##使用major_compact命令
    major_compact tableName

    <property>
    <name>hbase.hregion.majorcompaction</name>
    <value>604800000</value>
    </property>

  • 手動觸發(fā)

    ##使用major_compact命令
    major_compact tableName

標題名稱:Hbase數(shù)據(jù)存儲原理與讀寫詳解-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article14/dohcge.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司靜態(tài)網(wǎng)站、微信小程序虛擬主機、微信公眾號、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
国产三级自拍视频在线观看网站| 国内精品一区二区欧美| 国产一区黄片视频在线观看| 日韩x级av免费在线观看| 国产三级在线观看视频| 一区二区三区深夜福利| 清纯少妇激情四射网站| 午夜视频在线观看区一| 91在线国产手机视频| 国产精品久久一区二区三区蜜桃| 国产视频一区二区三区网| 欧美一区二区专区在线| 久久成人免费在线电影| 亚洲无人区码一码二码三码| 亚洲精品第一国产综合| 国产做a爰片久久91| 亚洲欧美日韩国产精品专区| 欧美日韩国产亚洲免费| 国产老熟女高潮精品视频网站免费| 久久96国产精品久久秘臀| 夫妻性生活黄色录像视频| 日本国产精品久久一线| 久久午夜视频在线观看| 精品一区二区视频在线观看网站| 日韩美少妇大胆一区二区| 欧美三级视频一区二区三区| 2020中文字字幕在线不卡| 99热精品免费在线观看| 97精品免费视频观看| 野花日本免费高清完整| 四虎官网免费在线观看| 91女厕偷拍女厕偷拍| 欧美一区二区三区日韩精品 | 未满十八禁止下载软件| 久久亚洲一本综合久久| 国产精品久久一区二区三区蜜桃| 国产精品日韩欧美久久久| 国产在线乱码一区二区| 欧美 成人一区二区三区| 欧美亚洲另类麻豆综合在线| 日韩精品在线观看视频一区二区三区|