大資料元件 HBASE

2021-09-25 04:34:41 字數 4398 閱讀 7335

1、hbase是乙個非關係型分布式資料庫(nosql)--bigtable(參考的是谷歌)

2、高可靠(採用主從架構,使用zookeeper管理)、高效能(分布式並行處理)、面向列、可伸縮(可新增子節點)

3、採用hdfs作為檔案儲存系統(也可以採用其它的檔案儲存系統,沒整合mr計算的功能)

4、hbase擅長查詢資料(這裡的查詢是指將指定的資料按資料庫的格式拿出顯示,不包括統計即count,sum這樣的計算操作,hasee是可以做計算的只是不擅長,且需要和mr做整合),隨機讀取速度快。

5、能夠處理結構化和非結構化的資料

hbase建表的時候不需要指定資料型別,也不需要指定欄位名稱

行(row):行由行鍵(rowkey)唯一標識(一行的每乙個列限定符(字段)都有乙個rowkey標識)

列族(column family):行的資料按列分進行切分cf(多列組成乙個cf)

列限定符(column qualifier):列裡面的資料定位通過列限定符(相當於字段)

單元(cell):行鍵、列族、列限制定符一起確定乙個單元(列限定符,value)

時間版本(vesion):單元值有時間版本(如果一張表中有多個列族,每個列族中的版本數可以不一樣),用時間戳來標識,預設只指定乙個

1、客戶端整個集群的入口

2、使用hbase rpc機制與hmaster和hregionserver通訊

3、與hmaster通訊進行管理類的操作

4、與hregionserver通訊進行讀寫類操作

5、包含訪問hbase的介面,並維護cache來加快對hbase的訪問,與hregionsercer互動

region:由表中多行組成(按照rowkey的範圍,startkey和endkey劃分---只記錄startkey)region;每一張表建立的時候只有乙個region,當表中的資料不斷增加到超過某乙個給定的閾值後,開始**,**為多個region;region管理多個store(乙個列族就有乙個store)

-------region**後會由hmaster進行負載均衡。

store:包括記憶體的中memstore和磁碟中的storefile(hfile--hdfs中的儲存檔案)(有多少個列族就有多少個store)

-------在進行寫入操作的時候,hbase先將資料寫入到memstore中,當memstore的資料量某個設定的閾值時,hregionserver會啟動乙個flashcache程序寫入storefile,每次寫入操作都會形成乙個單獨的storefile(hfile)

storefiel:當單獨的storefile的數量增長到一定的閾值後,系統會進行合併,包括版本合併和刪除,從而形成更大的storefile

hregionserver:

1、管理多個region和多個hlog(這邊只是管理,並不是將region中的真實資料儲存在hregionserver中,真實的資料是儲存在hdfs上的,因此當hregionserver掛掉後,只用將這個管理者更換掉就行,並不用去管hdfs上的資料)

2、處理使用者的讀寫請求---hregionsever和region進行互動處理

hmaster:主備模式

1、管理所有的regionserver(新regionserver的註冊、failover(故障處理))

2、新錶建立時的region的分配

3、執行期間的負載均衡保障

4、regionserver  failover(故障)後region接管。

1、zookeeper是乙個分布式應用程式協調服務。

2、hmaster的高可靠(解決hmaster的單點故障問題)

--在hbase中可以建立多個hmastr節點,只有一成為active角色,來管理hbase,當主hmaster(active角色hmaster)​宕掉後,會從備hmaster中選出新的active角色的hmaster​​​​​​繼續管理hbase。

--1、zk提供分布式鎖的服務實現hmaster​​​​​​active角色的建立(當主hmaster宕掉後,所有的其它master都嘗試在zk中寫入乙個對應的節點,該節點只能被乙個master建立成功,建立成功的maser程序就是主master(active角色master))。

--2、事件監聽機制,通過事件監聽機制確定主hmaster是否宕掉,如果宕掉,就會刪除該節點並通知其它備master。

1、定址

client--->zk (得到meta表的元資料)--->regionserver(找到到meta表)--->meta表(獲取寫入資料的region的位址(region的rowkey範圍,region所屬的regionserver))

2、寫入資料

2.1先將寫入得資料進行分組

region分組(將資料按照相同的region進行分組)--->regionserver分組--->hbase自身封裝的rpc框架往多個regionserver傳送請求,並行操作(並行傳送資料,相同的regionserver的資料會一起傳送)

2.2資料到達具體的regionserver下的具體的region,開始寫入資料

先將資料寫入到memstore中(同時寫入到hlog中來保證資料的安全),當memstore的資料量某個設定的閾值時,hregionserver會啟動乙個flashcache程序寫入storefile,每次寫入操作都會形成乙個單獨的storefile(hfile)

3、補充

3.1寫入資料的鎖

鎖概念:hbase不保證原子性(原子性:乙個事務要麼同時成功,要麼同時失敗),但是提供了乙個region行鎖來保證資料的安全性

寫入資料鎖流程:獲取region操作鎖-->獲取行鎖--->寫入memstore--->釋放行鎖--->寫入hlog--->釋放region鎖

3.2產生hfile(storefile)的情況

01、當寫入memstore的資料達到閾值時

02、當寫入memstore的資料沒有達到閾值但是記憶體不夠時

03、當停止hbase時(執行stop-hbase.sh)

04、當memstore掛掉,從hlog中恢復資料的時

3.3關於split

當集群中的region中資料到達一定的閾值,region就會進行**

01、**的region會暫停一些讀寫服務

02、**的形式並不是真**,而是建立乙個新的region

3.4 compaction

01、包括兩大類刪除需要刪除的資料(刪除版本過期的資料、有效期的過期的資料、已經執行delete的資料)和資料整理(刪除資料後hfile的整理合併)

02、minor(小合併):部分hfile,只處理ttl過期的資料,由hbase內部執行

03、major(合併):是將store中所有的hfile進行合併為乙個大的hfiel,然後進行切分為乙個標準的hfile檔案,時間會很長,大合併會執行刪除操作。

1、get與scan的區別

get:獲取一行行中的資料(可以看做特殊的scan)

scan:獲取多行資料

2、scanner介紹

scanner:掃瞄器,分為regionscanner 、storescanner 、memstorescanner和storefilescanner

乙個region-->乙個regionscanner

乙個store-->乙個storescanner  

乙個memstore-->乙個memstorescanner

乙個storefile--->乙個storefilescanner

讀取資料時會分配多個scanner進行迴圈讀取資料,一行(唯一的乙個roukey)中的乙個主族由乙個scanner負責讀取資料,當乙個scanner讀取完資料後由下乙個scanner讀取下一主族的資料,讀取完的scanner會迴圈利用,進入到scanner列表中準備下讀取資料。

所有的scanner查詢的主族中的資料都是並行查詢的,只是讀取資料的時候是序列讀取的;如果所有的資料都讀取完成那麼scanner會關閉。

1、什麼是hbase的熱點問題?

hbase中的讀寫很大一部分都只在乙個hergionserver中,熱點問題產生的原因是由於設計的rowkey不合理

解決方案參考:

大資料儲存HBase

這兩天要寫乙個方案,某單位想建乙個中心資料庫,匯聚各業務系統資料,以及各種網上抓取的預報資料。我設想是用hbase。主要考慮點是 1 開源 2 支援海量資料 該單位的資料量增長按規劃還是很大的,大約每天20gb 關係型資料庫就不考慮了。rdbms本質上是單機系統,拿mysql來說吧,主從複製,讀寫分...

大資料 Hive與HBase

hive hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能。hbase hbase是hadoop的資料庫,乙個分布式 可擴充套件 大資料的儲存。hbase和hive在大資料架構中處在不同位置,hbase主要解決實時資料查詢問題,hiv...

大資料HBase系列之HBase基本操作

hbase version hbase zkcli hbase shell 2.1 建立表 語法 create 表名 列族名 create student info 2.2 顯示所有表 語法 list 或 list 表名 list student 2.3 顯示表描述 語法 describe 表名 d...