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

溫馨提示×

溫馨提示×

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

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

HBase之MemStore+Flush詳解

發布時間:2020-07-26 20:14:25 來源:網絡 閱讀:2541 作者:KIKI王 欄目:關系型數據庫
  1. MemStore簡介:

              HBase之MemStore+Flush詳解

    上圖為HBase的讀寫過程的大概描述;


    寫請求過程:client---------->WAL(Write Ahead LOG)----------->MemStore-------------> HFile--------->END

    讀請求過程:client---------->MemStore-------->BlockCache------->HFile------------>END


    MemStore在HBase中的位置:

       HBase是由Master和HRegionServer組成,而實際在讀寫的過程中,我們與Master打交道的機會不是很多,主要是HRegionServer,從上圖可以看出每一個HRegionServer由一個HLog和多個Region構成,一個Region中存在多個Store,每一個Strore由一個MemStore和多個StoreFile構成,MemStore為HBase在內存中的一塊區域,StoreFile的底層為HFile,其為HDFS中的文件。

    MemStore在何時起作用:

       寫:當client端發起一個寫操作時,寫操作首先被寫入到WAL中,然后寫入到MemStore中,當達到一定的預設條件之后,MemStore中內容會刷寫到StoreFile中,寫操作完成。

       (那么問題來了

         1.為什么要先寫入到WAL中呢?

           WAL為HDFS中的文件,MemStore為內存中的一塊區域,一提到內存我們就能想到,不安全,上面看到只有在MemStore中數據刷寫到StoreFile中時,數據才會落盤,寫入到磁盤中,所以當我們在由于系統宕機等情況下,MemStore中數據丟失,還未來得及刷寫落盤,HBase會根據存儲在HDFS中的WAL文件恢復數據。

         2.Flush(刷寫)的策略?

           下文會進行詳細講解。

       讀:當client端發起一個讀操作時,HBase會首先在對應Region的MemStore中查找,如果找不到,則會到BlockCache中查找(BlockCache為HBase的一個優化讀的策略,下文會詳解),如果還沒有,則會到StoreFile(HFile)中查找,讀操作完成。


2.Flush簡介

  

  Flush為HBase中的一個重要的操作,我們必須配置一個很好的flush的策略,從而保證HBase集群的穩定。

  Flush為HBase數據落盤的一個操作,Flush后數據才會持久起來,每一次Flush會在Region中產生一個StoreFile并刪除在WAL中的edits。

  Flush為Region級,當一個Region中的一個Store中的MemStore達到預設條件后,一個Region中的所有的Sotre.

  下面為在Flush一個表時的日志:

   

2014-10-18 16:58:28,801 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionServer: Flushing t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7.

2014-10-18 16:58:28,816 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Started memstore flush for t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7., current region memstore size 168

2014-10-18 16:58:29,457 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.DefaultStoreFlusher: Flushed, sequenceid=3, memsize=168, hasBloomFilter=true, into tmp file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03

2014-10-18 16:58:29,733 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionFileSystem: Committing store file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03 as hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03

2014-10-18 16:58:29,838 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HStore: Added hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03, entries=1, sequenceid=3, filesize=1021

2014-10-18 16:58:29,879 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Finished memstore flush of ~168/168, currentsize=0/0 for region t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7. in 1063ms, sequenceid=3, compaction requested=false


可以看出,先將MemStore flush到.tmp下,然后移動到region目錄下對應的columnFamily下。

向AI問一下細節

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

AI

乐都县| 镇康县| 苍山县| 永新县| 九龙城区| 通榆县| 华亭县| 卢龙县| 宁晋县| 寻甸| 剑川县| 泸定县| 固镇县| 黑山县| 吴忠市| 沅江市| 宜兴市| 昌平区| 西畴县| 宿迁市| 望谟县| 准格尔旗| 民乐县| 吉安县| 永顺县| 镇坪县| 苏尼特左旗| 黄龙县| 军事| 铁岭县| 海门市| 桓台县| 丹江口市| 溆浦县| 炎陵县| 平顶山市| 贵阳市| 南丹县| 五河县| 香港| 达拉特旗|