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.mzph.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;今天小编就给大家介绍…