亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Hbase中對數據如何實現增刪改查

發布時間:2021-12-09 10:12:51 來源:億速云 閱讀:853 作者:小新 欄目:大數據

小編給大家分享一下Hbase中對數據如何實現增刪改查,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Hbase寫插入數據流程:

Hbase中對數據如何實現增刪改查

1、大體部分

如果將一張表看成是一個區域(region)的話,即每張表一開始只有一個region。往數據表中不斷的插入數據,隨著數據不斷插入表,region不斷增大,當增大到某個閥值的時候(百萬千萬級別),hbase會自動對表進行水平分成多個區域(區域大小一定但是行數不一定相同),每個區域都稱為一個region,每個region會保存一個表里面的某段連續的數據。當表中的行數不斷增多,就會有越來越多的region。即一個regionserver中的region過多,這時候master就會將一部分region分配到其他的regionserver中,實現master負載均衡的功能。

2、縮小到每一個region

一個region由多個store組成,一個store對應一個CF(列族);一個store包含了memstore和storefile(HFlie)。數據先寫入內存中的memetore,memstore是內存中的緩存區,同時還會將 數據順序寫入到位于硬盤中的Hlog文件中,該文件不僅僅是一個日志文件,同時還記錄了操作的數據信息,當機器從宕機狀態下恢復到正常運行狀態,Hlog文件就會被讀進內存實現數據恢復。當memstore中的數據達到某個閥值的時候,regionserver會啟動一個flashcache的進程將數據從memestore刷入storeflie,每次寫入形成單獨的一個storefile(Hfile)。

Hbase讀取數據流程:

Hbase中對數據如何實現增刪改查

1、存儲分布

表中的數據被切分到集群中,若要查詢數據需要知道該數據在第幾行以及被分到哪一臺regionserver中。然而master只負責負載均衡以及故障轉移,這時候需要構建一個類似記錄存儲路徑的信息,這部分就由zookeeper來完成。

當表中的數據多達上千萬甚至上億行時,被切分的數據會被保存到一張叫META的表中,它也是hbase結構中的一張表。該張表可簡單的認為為兩列,行數不確定。META表中的每一行的行鍵保存描述某個region的存儲的行數,對應的第二列保存  該region被分配到的regionserver的ip地址。由此META表中的行數遠比一張完整表的行數要少的多,但是依然保存了全部的數據信息。

雖然META表的行數已經大大減少,但是可能隨著數據的不斷插入,行數可能會依然很大。這時候需要將META表中的數據需要再進行一次類似的操作。因為META表同樣是hbase結構中的一張表,同樣會被切分。META表被切分的“region”就會保存到一張與META表結構類似的名為-ROOT-的表中,該張表只有一個region,永遠不會被切分成多個region,zookeeper記錄了-ROOT-表的位置。-ROOT-表中的行鍵描述了META表被切分的多個region的存儲信息,即-ROOT-表中的一行對應META表中的一個region,對應的列同樣是記錄保存該信息的節點ip。這樣一來-ROOT-表中的一條數據就可能對應著真實的上萬或上百萬的數據。

2、讀取定位

通過zookeeper里的文件得到-ROOT-表的位置。通過-ROOT-表查找META表的第一個表中相應的region的位置。META表中的每一個region在-ROOT-表中都是一行記錄。通過META表找到所要的用戶表region的位置。用戶表中的每個region在META表中都是一行記錄。由于-ROOT-表永遠不會被分隔為多個region,保證了最多需要三次跳轉,就能定位到任意的region。

3、數據交互

定位到region,開始先從Memstore查數據,若找不到再和與Memstore處于同一內存空間的BlockCache中查數據若Memstore和BlockCache這兩塊內存都沒有要查找的數據,則需要從硬盤的HFile中獲取。把讀到的結果放入BlockCache。由于BlockCache采用的是LRU策略,因此BlockCache達到上限后,會啟動淘汰機制,淘汰掉最老的一批數據。因此BlockCache中存儲的是一些頻繁被查詢的數據。

Hbase修改數據的流程:

1、時間戳

HBase 中通過 Row 和 Columns 確定的一個存儲單元稱為 Cell。每個 Cell 都保存著同一份數據的多個版本。 版本通過時間戳來索引,時間戳的類型是 64 位整型。時間戳可以由HBase(在數據寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統時間。

2、修改數據

當對數據進行修改,修改的數據會將當前的數據覆蓋,由hbase在寫入數據時自動賦予修改數據后的時間戳,每個 Cell 中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。保證每次獲取的數據時最新修改后的數據。

Hbase刪除數據的流程:

1、執行delete操作并不是把數據真的刪除了,而是添加了一個標記,代表此數據被刪除掉,直到hbase執行大合并,才會真的從hfile中刪除數據

2、大合并和小合并

這里需要回到寫入數據到stofile說起,當storefile的文件數量增長到一定閥值后,系統會進行合并,在合并過程中會進行版本合并和刪除工作,形成更大的stofile,這就是小合并。大合并則是指將一個列族的所有stoefile合并成一個文件。

看完了這篇文章,相信你對“Hbase中對數據如何實現增刪改查”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

同江市| 鄯善县| 佛坪县| 特克斯县| 黑山县| 阳曲县| 莎车县| 宜宾县| 蒙自县| 东平县| 焉耆| 财经| 新宁县| 抚顺市| 盘锦市| 闽侯县| 平江县| 梓潼县| 甘德县| 江城| 共和县| 凤山县| 衡阳县| 临武县| 资阳市| 崇州市| 汉川市| 孝感市| 西青区| 米易县| 营口市| 东乡族自治县| 元阳县| 徐州市| 千阳县| 普宁市| 鄂州市| 玉树县| 兰考县| 云南省| 涞水县|