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.mzph.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…