HBase簡介及HBase Shell操作

2021-10-12 13:23:01 字數 2276 閱讀 6077

二、hbase shell操作

hbase的安裝可以參照:

hbase偽分布式搭建

hbase是乙個高可靠性、高效能、面向列、可伸縮的nosql分布式資料儲存系統,利用hbase可實現對大型資料的實時、隨機的讀寫訪問。

hbase 依賴於 hdfs 做底層的資料儲存、依賴於 mapreduce做資料計算、依賴於 zookeeper 做服務協調

hbase 架構如圖所示:

從上圖中能看出 hbase 是由 client、zookeeper、hmaster、hregionserver、hdfs 等幾個元件組成,元件的相關功能:

hbase 是稀疏的,稀疏主要是針對 hbase 列的靈活性,在列族中,你可以指定任意多的列,在列資料為空的情況下,不會占用儲存空間的。hbase 底層儲存的資料是 key-value 格式的資料。hbase 邏輯上也可以看成乙個二維**,可以新增行,可以動態新增列。

無論寫資料還是讀資料,客戶端都需要對特定的region進行定位。hbase有兩張元資料表-root-和.meta. ,其中-root-的位址儲存在zookeeper中,hbase採用三層查詢架構,如下圖所示:

元資料表-root-和.meta. 都是hbase中的表。-root-表的region被設定為永不拆分,因此意味著只有乙個region,-root-表儲存了.meta.的region資訊,而.meta.中儲存了使用者表的region資訊。假設使用者需要得到tablea中的row1的region資訊,首先通過查詢zookeeper(第一次查詢)中的資訊,得到-root-的region位址資訊。根據第一次查詢的資訊可以定位到.meta.表,再根據表名查詢.meta.得到該錶的region資訊所在的位置,第二次查詢可以理解為查詢到tablea在regionserver m1上的region .meta.,1上。有了這些資訊,使用者第三次查詢.meta.表則可以直接得到tablea的row1的region資訊,第三次查詢在圖上可以理解為row1在regionserver u1上的region tablea,125…5345.rt3…3ws上。這樣使用者就可以直接訪問該位址來獲取相應的資料。

如上圖所示,即為hbase寫資料的流程,其中對region的定位進行了簡單概括,不在過多贅述。當定位到寫入的regionserver後(假設為regionserver2),客戶端將寫資料請求傳送到regionserver2,在對資料進行寫入時,會首先將改動記錄寫入預寫日誌(wal),寫入的檔案以hlog形式儲存在hdfs中,然後才會將資料寫到memstore,向memstore寫完後就會向客戶端響應寫成功,儲存在memstore中的資料到達某個閾值,hbase將會把緩衝區內容刷寫到磁碟,成為hfile。寫到磁碟以後,相應內容的預寫日誌即可丟棄。memstore中的資料是已經排序完成的,因此hfile也是有序的。

ps:hdfs中的檔案是不能修改的,因此想要刪除某個鍵值時,hbase提供的方案是在該鍵值上新增乙個刪除標記,對某個鍵值進行刪除後,當進行讀取時檢索到了該資料也不會返回客戶端。

隨著memstore資料落盤,hbase中可能會存在很多小檔案(預設大小為128m),這是就需要合併(compact),將小的hfile合併為大的hfile。合併的方式有兩種 minor合併 和 major合併

對region的定位進行了簡單概括,找到資料所在的regionserver後,首先從 memstore 找資料,如果沒有,再到 blockcache 裡面讀; 如果blockcache 還沒有,再到 storefile 上讀; 如果是從 storefile 裡面讀取的資料,不是直接返回給客戶端,而是先寫入blockcache,再返回給客戶端。

create 'customer',,

put 'customer'

,'zhangsan'

,'order:price'

,'100.00'

put 'customer'

,'zhangsan'

,'order:date'

,'2020-08-19'

HBase簡介及應用

一 關鍵字 分布式儲存系統 開源 基於列模式 適合非結構化 二 特性 海量儲存,資料可達pb級別 列式儲存,一種nosql資料庫 極易擴充套件,分布式資料庫 高併發,多個pc同時處理 稀疏,指hbase列的靈活性,可以指定任意多的列 三 什麼適合用hbase?hbase不適合解決所有的問題 資料庫量...

HBase簡介及使用

由google發表的關於bigtable的 啟發,使得hbase成為了基於hdfs開發的 面向列的 可伸縮的 開源的分布式資料庫,並且它提供了隨機實時讀寫功能。hbase作為hadoop生態系統中的結構化儲存工具,hdfs為它提供了高可靠性的底層儲存支援,hadoop mapreduce為它提供了高...

HBASE簡介及部分操作例項

一 hbase簡介 hbase是乙個分布式的 面向列的開源資料庫,其名字 於hadoop資料庫 hadoop database hbase不同於一般的關聯式資料庫,它是乙個適合於非結構化資料儲存的資料庫,隸屬於apache的hadoop專案。二 hbase相關概念 表 table hbbase同樣是...