HBase體系結構

HBase ?HBase是Apache Hadoop的數據庫,基于HDFS文件系統

random,realtime read/write access to Big Data

開源、分布式、可擴展、面向列

larger tables--billions of rows X millions of columns

不支持表鏈接操作

不支持事務處理


HBase存儲的數據從邏輯上來看就像一張很大的表,其數據列可以根據需要動態增加。

每個單元(cell,由行和列所確定的位置)中的數據根據時間戳可以有不同版本。

在HBase之上還可以使用MapReduce計算模型來處理大規模數據。


HBase實際是map

(row key, column family: qulifier, timestamp) --> content

查詢時,指定:表名-->行鍵-->列族:列名-->版本號


將big table分不同的region存儲,RegionSever和DataNode在一臺主機上。

HMaster為RegionServer的主節點,不存儲表的數據,負責:

1、RegionServer狀態管理;

2、RegionServer負載均衡。


尋址機制:HMaster不參與

兩張特殊的表:

-ROOT-:記錄.META的Region信息,只有一個。位置去zookeeper查(/hbase/ROOT;//對應值為一臺主機)

.META.:記錄用戶表的Region信息,多個


查詢時,會將路徑緩存。


海量數據的秒級簡單查詢

每個列族一個文件

按行鍵拆分成一個個的region

region存儲在region server中

可以啟動多個HMaster,通過ZooKeeper的Master Election機制保證總有一個Master運行

ZooKeeper存儲Region的尋址入口,監控Region Server的狀態,存儲Hbase的schema


表名+開始/結束行鍵來標記每一個Region

每一個Region保存一個表里面某段連續的數據,從開始主鍵到結束主鍵



數據的存儲:

HRegionServer包括兩大部分:HLOG部分和HRegion部分。

HLOG用于存儲日志,采用先寫日志的方式(Write-ahead log)。

HRegion部分包含很多Region,存儲實際數據。

每一個Region由很多Store組成,每個Store存儲的是一個列族(ColumnFamily)的數據。

每一個Store包含一塊駐留內存的MemStore和多個StoreFile。

數據首先更新到MemStore中,達到域值之后再更新到對應的StoreFile中。

StoreFile是HBase的最小單元,負責實際數據的存儲。

HBase把同一列族里面的數據存儲在同一個目錄下


HBase不涉及數據的直接刪除和更新操作,所有數據通過追加方式進行更新。

數據的刪除和更新在HBase合并(compact)的時候進行。

當Store中StoreFile的數量超過設定域值時將觸發合并操作,將多個StoreFile文件合并成一個StoreFIle。



數據的更新:

更新數據時,數據被分配到對應的HRegionServer,首先進行HLOG日志登記。

在操作寫入HLOG之后,commit()調用才會將其返回給客戶端。

HLOG用于故障恢復,若一臺HRegionServer發生故障,其所維護的Regions將被重新分配到新的機器上。

這是HLOG會安裝Region進行劃分,新的機器在加載Region時通過HLOG對數據進行恢復。



Region的分裂:

當Region超過域值時,HRegionServer調用HRegion.closeAndSplit()將其拆分成兩個,

并且報告給HMaster,讓其決定由哪臺HRegionServer來存放新的Region。

這個拆分過程十分迅速,兩個新的HRegionServer最初只保留原來HRegionFile文件的引用。

這是舊的HRegionServer處于停止服務的狀態,當新的HRegion拆分完成并且把引用刪除后,舊的HRegion才會刪除



Region的合并:

兩個Region可以通過調用HRegionServer.closeAndMerger()合并成一個新的Region。

當前版本下,執行此操作需要兩臺HRegionServer停機。


HMaster:

1、管理用戶對Table的增刪改查操作;

2、管理HRegionServer的負載均衡;

3、在HRegion分裂后,負責新HRegion的分配;

4、在HRegionServer停機后,負責HRegions的遷移。


ROOT表和META表:

一個HRegion的鍵:表名+開始主鍵+唯一ID(tablename+startkey+regionId),通過這個標識區分不同的Region。

此為元數據,META。

元數據本身也被存放在HRegion里,稱包含元數據的表為META Table,里面存儲的是Region標識符和服務器的映射

META Table的Regions存儲在ROOT Table中。

元數據表和根數據表的每一行都包含一個列族(info列族):

info:regioninfo //HRegion標識符

info:server //服務器地址

info:startcode //在HRegion服務器啟動時傳給主服務器,讓主服務器確定這個HRegion服務器的信息沒有更改


HBase啟動時,HMaster先掃描根數據表,因為這個表只有一個Region,所以這個Region的名字是被寫死的。

有時需要把根數據表分配到一個HRegionServer中。

當根數據表被分配好后,HMaster掃描根數據表,獲得元數據表的名字和位置,然后把元數據表分配到不同的HRegionServer中。

最后掃描元數據表,獲得所有Region區域的信息,把它們分配給不同的HRegion服務器。


客戶端緩存已知的ROOT表和META表,從而提高訪問效率。


ZooKeeper的作用:

1、存儲ROOT表和META表的位置;

2、監控集群狀態;

3、保證在同一時刻只有一個HMaster。


HBase特點:

1、數據類型只有簡單的字符串類型

2、數據操作只有很簡單的插入、查詢、刪除、清空等操作,沒有復雜的表與表之間的關系

3、基于列存儲,每個列族由幾個文件保存,不同列族文件是分離的

4、數據維護保存多個版本

5、可伸縮性





本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387395.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《屬性數據分析引論》 部分課后習題R語言實踐(第三章、第四章)

目錄 前言 第三章 廣義線性模型 習題3.18 a小題 b小題 c小題 d小題 習題3.19 a小題 b小題 c小題 第四章 Logistic回歸 習題4.1 a小題 b小題 c小題 d小題 e小題 習題4.2 a小題 b小題 c小題 d小題 小結 前言 習題選自高等教育出版社譯制,Alan A…

Linux下SVN搭建

在Linux系統中搭建svn服務所需要用到的軟件叫做subversion,可以通過yum來進行安裝,如圖 安裝好軟件后第一件事就是創建一個倉庫目錄 [rootserver1 ~]# mkdir /svn 使用svn自帶命令建立倉庫 [rootserver1 ~]# svnadmin create /svn 進入該倉庫&#xff0c…

HBase模式設計

HBase的使用是為了解決或優化某一問題 恰當的設計模式可以使其具有HBase本身所不具有的功能,并且使其執行效率得到成百上千倍的提高 在進行HBase數據庫模式設計的時候,不當的設置可能對系統的性能產生不良的影響 需要注意: 1、列族的數量及…

C++STL特殊容器priority_queue

在了解priority_queue&#xff08;優先隊列&#xff09;前&#xff0c;可以先去瞅瞅queue&#xff0c;下面是傳送門啦>——< 傳送門 priority_queue的基本性能 class priority_queue<>實現出一個queue&#xff0c;只不過其中的元素依照優先級被讀取。priority_queu…

可用于多元正態的參數估計 及 均值向量和協差陣檢驗 的R語言函數總結

一、多元正態的參數估計 1.1 樣本均值 在R語言中&#xff0c;均值通常用函數mean()得到&#xff0c;但是mean()只能計算一維變量的樣本均值&#xff0c;在面對多元隨機變量的樣本時&#xff0c;假設我們以數據框的形式保存樣本&#xff0c;我們有以下方法可以得到樣本均值&…

30秒的PHP代碼片段-MATH

本文來自GitHub開源項目 點我跳轉 30秒的PHP代碼片段 精選的有用PHP片段集合&#xff0c;您可以在30秒或更短的時間內理解這些片段。數學函數 average 返回兩個或多個數字的平均值。 function average(...$items) { $count count($items); return $count 0 ? 0 : array_sum(…

Hive簡介

Hive最初是應Facebook每天產生的海量新興社會網絡數據進行管理和機器學習的需求而產生和發展的 是建立在Hadoop上的數據倉庫基礎架構 作為Hadoop的一個數據倉庫工具&#xff0c;Hive可以將結構化的數據文件映射為一張數據庫表&#xff0c;并提供簡單的SQL查詢功能 Hive作為數…

可用于 線性判別、聚類分析 的R語言函數總結

一、判別分析 判別分析是一種分類技術&#xff0c;其通過一個已知類別的“訓練樣本”來建立判別準則&#xff0c;并通過預測變量來為未知類別的數據進行分類。根據判別的模型分為線性判別和非線性判別&#xff0c;線性判別中根據判別準則又分為Fisher判別&#xff0c;Bayes判別…

Linux 環境下搭建 Jenkins(Hudson)平臺

安裝jenkins&#xff1a;安裝 jenkins 有兩種方式&#xff1a;安裝方式一&#xff1a; [java] view plaincopysudo java -jar jenkins.war –httpPort18080 –ajp13Port18009 但是很多時候我們是使用SSH方式到目標機器上的&#xff0c;放我們關閉SSH連接時&#xff0c;這個命…

Android APK 打包過程 MD

Markdown版本筆記我的GitHub首頁我的博客我的微信我的郵箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.comAndroid APK 打包流程 MD 目錄 目錄APK 的打包流程整體流程資源的編譯和打包資源ID資源索引概況具體打包過程aapt階段aidl階段Java Compiler階段dex階段a…

可用于 主成分分析、R型因子分析、簡單相應分析 的R語言函數總結

一、主成分分析 主成分分析是多元統計分析的一種常用的降維方法&#xff0c;它以盡量少的信息損失&#xff0c;最大程度將變量個數減少&#xff0c;且彼此間互不相關。提取出來的新變量成為主成分&#xff0c;主成分是原始變量的線性組合。 1.1 KMO檢驗和Bartlett球形檢驗 在…

[國家集訓隊]墨墨的等式

Description 墨墨突然對等式很感興趣&#xff0c;他正在研究a1x1a2y2…anxnB存在非負整數解的條件&#xff0c;他要求你編寫一個程序&#xff0c;給定N、{an}、以及B的取值范圍&#xff0c;求出有多少B可以使等式存在非負整數解。 Input 輸入的第一行包含3個正整數&#xff0c;…

Storm簡介

Storm是實時流式數據處理框架&#xff0c;支持多種編程語言 應用案例&#xff1a; realtime analytics online machine learning continuous computation distributed RPC ETL 性能&#xff1a;a million tuples per second per node 可擴展、高容錯 結合消息隊列和數據庫…

持續集成之Jenkins安裝部署

安裝JDKJenkins是Java編寫的&#xff0c;所以需要先安裝JDK&#xff0c;這里采用yum安裝&#xff0c;如果對版本有需求&#xff0c;可以直接在Oracle官網下載JDK。 [rootlinux-node1 ~]# yum install -y java-1.8.0 安裝Jekins [rootlinux-node1 ~]# cd /etc/yum.repos.d/ […

2019/2/18 Python今日收獲

Python day15——032&#xff0c;033異常處理&#xff1a;你不可能總是對的 1. Python標準異常總結AssertionError斷言語句&#xff08;assert&#xff09;失敗AttributeError嘗試訪問未知的對象屬性EOFError用戶輸入文件末尾標志EOF&#xff08;Ctrld&#xff09;FloatingPoin…

Shell01

shell是一個命令解釋器&#xff0c;是操作系統的最外層。 把用戶的輸入解釋給操作系統&#xff0c;將操作系統的輸入結果返回給用戶。 硬件-->kernel-->shell-->外圍應用程序 shell腳本&#xff1a;將命令或語句寫入文件&#xff0c;進行操作系統管理。 shell腳本…

jenkins svn tomcat ant自動部署

Jenkins Jenkins是基于Java開發的一種持續集成工具&#xff0c;用于監控持續重復的工作&#xff0c;功能包括&#xff1a; 1、持續的軟件版本發布/測試項目。 2、監控外部調用執行的工作。 跟其他持續集成相比&#xff0c;它的主要優點有&#xff1a; 開源&#xff0c;即免…

Shell02

局部變量 1、普通字符串變量 變量名value 變量名value #單引號中不進行變量解析&#xff0c;原樣輸出&#xff0c;應用不多 變量名"value" #雙引號會解析變量 例&#xff1a; a1123 a2234 a3"345" echo "a1$a1" echo "a2$a2&quo…

553 mail from must equal authorized user解決方法

在配置發送郵件通知&#xff0c;驗證其正確性時&#xff0c;出現"553 mail from must equal authorized user"提示的錯誤&#xff1b; 原因在于沒有在"系統管理&#xff08;Manage Jenkins&#xff09;"的"系統設置&#xff08;Configure system&…

3.1 讀入一個參數

已知正方形的邊長&#xff0c;求出其面積。 輸入樣例&#xff1a; 1 2 3 4 輸出樣例&#xff1a; 1 4 9 16 #include<iostream> #include<fstream> using namespace std;int main() {ifstream cin("test.txt");//向OJ提交時&#xff0c;注釋此句i…