hbase hmaster一會就沒了_淺析HBase

一、HBase簡介

1、Apache HBase?是Hadoop數據庫,是一個分布式,可擴展的大數據存儲。

2、當您需要對大數據進行隨機,實時讀/寫訪問時,請使用Apache HBase?。 該項目的目標是托管非常大的表( 數十億的行*百萬的列 ) 在商品硬件集群上。 Apache HBase是一個開源的,分布式的,版本化的非關系數據庫

3、利用Hadoop HDS 作為其文件存儲系統,利用Hadoop MapReduce來處理HBASE中的海量數據,利用ZOOKEEPER作為其分布式協同服務

4、主要用來存儲非結構化和半結構化的松散數據

二、HBASE數據模型

1、Rowkey

rowkey類似于關系型數據庫的主鍵,是一行記錄的唯一標識。

rowkey是按照字典序自動排序的

rowkey只能存儲64K的字節數據

2、Column Family列族 (CF)

HBase表中的每個列都歸屬于某個列族,列族必須作為表模式(schema)定義的一部分預先給出。如 create ‘test’, ‘course’;

列名以列族作為前綴,每個“列族”都可以有多個列成員(column);如course:math, course:english, 新的列族成員(列)可以隨后按需、動態加入;

權限控制、存儲以及調優都是在列族層面進行的;

HBase把同一列族里面的數據存儲在同一目錄下,由幾個文件保存。

3、Timestamp時間戳

在HBase一份數據有多個版本,根據唯一的時間戳來區分每個版本之間的差異,不同版本的數據按照時間倒序排序,最新的數據版本排在最前面。

時間戳的類型是64位整形

時間戳可以在數據寫入時由HBase自動賦值也可以人員手動指定

4、cell單元格

cell單元格是由行和列的交叉坐標決定的

cell單元格是由版本的

cell單元格中的內容: 由{row keycolumn( =<family> +<qualifier>)version} 唯一確定的單元

cell中存儲的數據是沒有類型的,全部由字節數組組成,也就是說HBASE中的數據是沒有類型的,全都是字節數組

三、HBase的預寫日志(WAL)

因為HBase是實時讀寫的數據庫,所以我們在操作數據的時候,會把數據先放在內存中,當內存中的數據達到一定量的時候才會落盤。但數據放在內存中是有一定的風險的,比如掉電之后,內存中的數據就會丟失。為了防止這種情況,HBase中加入了WAL(write ahead log)預寫日志機制,每個數據的寫入操作(PUT/DELETE)執行前,必須先通過WAL記賬。先將數據寫入Hlog文件,如果寫入失敗,則寫入操作失敗。Hlog位于RegionServer中,每個RegionServer維護一個Hlog。

WAL的作用是災難恢復,一旦服務器崩潰,或者數據被誤刪,則通過log日志重放,可以恢復事故數據。

WAL如此重要,所以默認是開啟的

四。HBase架構

b60e3a587f218fb3106a4ba27603da1c.png

HBase架構的角色:

1、client

包含HBase的接口并維護cache來加快對hbase的訪問

2、zookeeper

保證任何時候,集群中只有一個活躍的HMaster

存儲所有的Region的尋址入口

實時監控所有HRegionServer的上下線消息,并通知HMaster

3、HMaster

HMaster是沒有單點故障的,因為集群中可以有多個HMaster,但是通過zookeeper的分布式協同服務保障有且只有一個活躍的HMaster對外提供服務。

HMaster負責為RegionServer分配region。

負責RegionServer的負載均衡。

發現失效的RegionServer并重新分配其上的region。

管理用戶對table的增刪改操作。

4、HRegionServer

RegionServer維護Region,處理對這些Region的I/O請求。

RegionServer負責切分在運行過程中逐漸變得過大的region。

HRegionServer中的組件

1、region

HBase自動把表水平劃分成多個區域(region),每個region會保存一個表里面某段連續的數據。也就是說一個大表被切成很多小份,每個小份是一個region。

每個表一開始只有一個region,隨著數據的不斷插入,region不斷增大。當region增大到某個閾值的時候,region就會等分為兩個新的region(裂變)。

當table中的行不斷增多,就會有越來越多的region。這樣,一張完整的表就被 保存在多個RegionServer上。

region是HBase中分布式存儲和負載均衡的最小單元。最小單元就表示不同的region可以分布在不同的HRegionServer上。

2、store

一個region有多個store組成,每個store對應一個CF(列族)。

store中包含位于內存中的memstore和位于磁盤的storefile。

3、memstore與storefile

每當進行寫操作時,寫操作會先進入memstore,當memstore中的數據到達某個閾值,HRegionServer會啟動flashcache進程將數據寫到storefile,每次寫入形成一個單獨的storefile。

當storefile文件數量達到一定閾值后,系統會進行合并,在合并過程中會進行版本合并和刪除工作,形成各大的storefile。

當一個region所有的storefile的大小和數量達到一定的閾值后,會把當前的region分割為兩個,并有HMaster分配到不同的RegionServer服務器,實現負載均衡。

storefile以Hfile的格式存儲在HDFS上。

客戶端檢索數據,先到memstore中找,找不到再到blockcache,再找不到去storefile

五、HBase的讀寫流程(0.98以后版本)

寫請求

客戶端在進行寫請求的時候。首先會訪問zookeeper,因為zookeeper中存儲著HBase元數據(meta)所在節點的信息(HBase的元數據在某個RegionServer中存儲,但是存儲元數據的RegionServer的信息保存在zookeeper中)。客戶端拿到元數據所在節點后訪問相應節點的RegionServer拿到元數據。最后根據元數據找到要操作的region。但是,找到region后不是先往memstore中寫。而是要先寫入WAL(預寫日志)的hlog中(寫入hlog成功后,會有一個異步側線程sync(),這個線程會實時檢測hlog中有沒有數據,如果有,直接落盤),只有往hlog中寫入成功了,才能接著往memstore中寫。

當memstore中的數據到達某個閾值,HRegionServer會啟動flashcache進程將數據寫到storefile,每次寫入形成一個單獨的storefile。

當storefile文件數量達到一定閾值后,系統會進行合并,在合并的時候會對數據排序,同時在合并過程中會進行版本合并和刪除工作,形成各大的storefile。

合并的方式有兩種,分別是minor和major。minor默認是3~10個storefile進行合并。major則是將當前目錄下的所有的storefile合并。注意:在文件合并的時候是不提供服務的。

因為minor是3~10個文件進行合并,所以占用資源少,速度快。所以我們一般使用minor。而major因為熟讀慢,所以我們一般不用,用也是手動進行。

當一個region所有的storefile的大小和數量達到一定的閾值后,會把當前的region分割為兩個,并有HMaster分配到不同的RegionServer服務器,實現負載均衡。

讀請求

客戶端在進行讀請求的時候。尋找region的過程幾乎與寫請求相同。首先在zookeeper中找元數據在哪個RegionServer中存儲,然后找到RegionServer拿到元數據,然后根據元數據找相應的region。

在region中尋找數據的過程如下:首先,會在region的memstore中尋找,如果被查找的記錄是剛剛通過寫請求寫入的,還沒被寫入storefile,那么查找成功。如果沒有找到,則到blockcache(讀緩存)中找,找到返回。找不到會繼續深入到storefile中查找,注意:如果是在storefile中找到的,并不會立即返回,而是要先將數據寫入blockcache中(方便下次查找),寫入成功后返回數據。

但是,這樣存在一個問題,那就是隨著讀請求的增多,blockcache會不斷變大。為了防止這種情況,系統采用最近最少使用算法(LRU)來維護blockcache。

blockcache位于RegionServer中,一個RegionServer維護一個blockcache。

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

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

相關文章

【Android工具】DES終結者加密時報——AES加密演算法

轉載請注明出處&#xff1a;http://blog.csdn.net/zhaokaiqiang1992在前面的兩篇文章中。我們介紹了DES算法&#xff0c;3DES算法以及他們的Android程序實現&#xff0c;并研究了怎樣才干實現不同平臺下加密算法的一致性。只是話說起來&#xff0c;DES算法是在1976年被美國的國…

MATLAB 迭代法解方程

MATLAB 迭代法解方程 1、代碼如下&#xff1a; %%牛頓迭代法解方程 function xnewton_interation(fun,dfun,x0,EPS) %簡單牛頓迭代法%fun即迭代函數&#xff0c;dfun即迭代函數的一階導數&#xff0c;x0為迭代初值&#xff0c;EPS為精度x1x0-fun(x0)/dfun(x0); %牛頓迭代公…

【12期 3月期刊 自薦】

12期的小伙伴看過來~因為網易博客的網絡問題。我們把負責收集自薦的博客寫到了CSDN里&#xff0c;希望大家在此篇博客的評論里&#xff0c;積極自薦自己的博客。 為了提高大家的積極性&#xff0c;我們評選優秀博客的方法升級為大家自薦博客&#xff0c;博客委員會當月負責人進…

超微服務器電源短接啟動圖解_教你一招,讓你的電腦啟動速度秒殺別人

win10快速啟動其實是電腦的一種休眠模式&#xff0c;它將電腦中的一些本該關閉的文件保存到hiberfil.sys的磁盤文件中&#xff0c;這樣打開電腦時就達到了快速開機的目的。接下來&#xff0c;我就將win10設置快速啟動的方法分享給你們win10系統功能非常強大&#xff0c;最讓大家…

MATLAB 求離散信號卷積

MATLAB 求離散信號卷積 代碼如下&#xff1a; function [C,Ck] dt_convolution_advance(A,B,Ak,Bk) % dt_convolution_advance 計算離散信號卷積 % A 輸入信號 % B 輸入信號 % Ak 輸入信號A下標 % Bk 輸入信號B下標 % C 輸出信號 % Ck 輸出信號C下標 % 計算輸入信號A&…

Oracle data type number

Oracle numberNUMBER [ (p [, s]) ]Number having precision p and scale s. Theprecision p can range from 1 to 38. The scale s can range from -84 to 127. Bothprecision and scale are in decimal digits. A NUMBER value requires from 1 to 22bytes.scale是可選的。SQ…

發布 項目_第十八期科創基金項目發布會圓滿結束

第十八期科創基金項目發布會圓滿結束賀電&#xff01;賀電!電子信息工程學院發來賀電&#xff1a;第十八屆科創基金項目發布會圓滿結束啦&#xff01;感謝導師們的支持、現場同學的熱情參與和科協朋友后勤服務&#xff01;NUAA即使是寒冷的冬天也無法阻擋同學們對科創的熱情,那…

Visual Studio .NET、.NET Framework和C#之間的聯系

Visual Studio .NET是一種集成開發環境&#xff08;IDE&#xff09;&#xff0c;它包含3種高級程序設計語言&#xff0c;C#就是其中的一種&#xff1b;Visual Studio .NET之所以能把這三種語言有機結合起來并具有與平臺無關的特性&#xff0c;其原因在于.NET Framework提供了公…

Fisher線性判別算法原理及實現 MATLAB

Fisher線性判別算法原理及實現 MATLAB 一、Fisher判別器原理 二、代碼實現 clc; close all; clear; %% 生成數據 rng(2020); %指定一個種子 mu1 [0 3]; sigma1 [0.5 0; 0 0.5]; data1 mvnrnd(mu1,sigma1,300); %生成一個300*2的矩陣&#xff0c;每一列的數據分別以0&…

大話設計模式之外觀模式

年年作品展&#xff0c;歲歲不相同&#xff0c;鵝黃新綠漣漪泛起思想的火花卻不盡相同。十期的作品展&#xff0c;從13年3月20號開始到完美落幕&#xff0c;時至今日&#xff0c;她已經在我的記憶中成為過去。這朵小小的浪花激起的漣漪漸漸褪去&#xff0c;或許已沒有或許&…

rdp協議打開 windows_CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復

原標題&#xff1a;CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復2019年8月14日&#xff0c;微軟發布更新了windows的系統補丁&#xff0c;代號&#xff1a;CVE-2019-1181&#xff0c;CVE-2019-1182補丁針對與windows遠程桌面遠程代碼執行漏洞進行了全面的修復&#xff0c;根…

HK算法原理及MATLAB實現

HK算法原理及MATLAB實現 一、編程原理 說明&#xff1a; 1、綠色框圖中&#xff0c;當alpha取為最優權向量時&#xff0c;會使 取為最小值。arg的意思是當后面那個函數滿足時&#xff0c;取出它的自變量的值。 2、注意后面那個式子是對b求偏導 3、e(t)大于0時&#xff0c;下…

軟件工程的實踐項目的自我目標

對實踐項目完成后學習到的能力的預期 1.要學會java的相關知識&#xff0c;并能利用java做一個項目&#xff0c;能知道做一個項目的基本流程。可以先是一個小項目&#xff0c;之后再根據自身情況進行嘗試。 2.學會團隊協作&#xff0c;之前的數據庫實踐大多是一個人完成的&#…

《數據驅動安全:數據安全分析、可視化和儀表盤》一1.2.4 統計學

本節書摘來異步社區《數據驅動安全&#xff1a;數據安全分析、可視化和儀表盤》一書中的第1章 &#xff0c;第1.2.4節&#xff0c;[美]杰雅克布&#xff08;Jay Jacobs&#xff09;鮑布魯迪斯&#xff08;Bob Rudis&#xff09; 著 薛杰 王占一 張卓 胡開勇 蔣夢飏 趙爽 …

python列反過來_xlwings 教程:使用Python更快速地處理Excel

Excel在當今商業中的使用非常普遍。在Dataquest&#xff0c;出于很多原因&#xff0c;我們通常推薦使用代碼處理數據&#xff0c;并且我們的許多數據科學課程的目標是教授數據分析和數據科學的高效編碼。但是&#xff0c;無論您多么喜歡使用Python&#xff0c;在一天結束時&…

多類線性分類器算法原理及代碼實現 MATLAB

多類線性分類器算法原理及代碼實現 MATLAB 一、算法原理 下面舉例說明為何藍圈部分在case2中是確定的而在case1中不確定&#xff1a; 二、代碼實現 1、HK函數 function [] HK(w1_data,w2_data) %w1_data為第一類數據集 w2_data為第二類數據集 %此函數的作用為用HK算法對輸…

(轉) C#如何使用異步編程

怎么使用異步&#xff0c;就是用委托進行處理&#xff0c;如果委托對象在調用列表中只有一個方法&#xff0c;它就可以異步執行這個方法。委托類有兩個方法&#xff0c;叫做BeginInvoke和EndInvoke&#xff0c;它們是用來異步執行使用。 異步有三種模式 等待模式&#xff0c;在…

javascript 的 ~ 操作符作用

2019獨角獸企業重金招聘Python工程師標準>>> "~" operator in javascript. For anyone else who also didnt know what it does: it converts -1 to 0&#xff0c;可以節省用來比較-1的情況&#xff0c;如 if (~event.origin.indexOf(http://yoursite.com…

駐定相位原理(POSP)以及線性調頻信號的頻譜

最近看論文遇到了駐定相位原理&#xff0c;問老師直接給了我一本書讓我看&#xff0c;看半天只有一段…不是這個方向的&#xff0c;半路出家做畢業設計需要用到這個定理&#xff0c;有錯誤的話請不吝賜教。 一、駐定相位原理 在數字信號處理中&#xff0c;經常需要將一個時域…

vue怎么合并兩個視頻_【軟件分享】視頻分割合并軟件哪款好用呢?怎么剪切合并視頻?...

現在有很多小伙伴都喜歡喜歡自己拍視頻上傳到各大視頻平臺&#xff0c;有時候會遇到關于視頻剪輯方面的難題&#xff0c;比如說&#xff0c;視頻怎么剪切&#xff1f;怎么將兩段小視頻合并成一個呢&#xff1f;這些都是一些比較常常遇到的問題&#xff0c;今天小編就給大家介紹…