hbase学习教程(一):hbase的概述和hbase架构及基本组件

12 篇文章 0 订阅
5 篇文章 0 订阅

一、hbase的概述

概述

这里写图片描述

HBase是一个构建在HDFS上的分布式列存储系统;
HBase是基于Google BigTable模型开发的,典型的key/value系统;
HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;
从逻辑上讲,HBase将数据按照表、行和列进行存储。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
Hbase表的特点
大:一个表可以有数十亿行,上百万列;
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:Hbase中的数据都是字符串,没有类型。

Hbase物理模型
1、Table中所有行都按照row key的字典序排列;
2、Table在行的方向上分割为多个Region;
3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;
4、Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。
这里写图片描述
5、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。
这里写图片描述

二、HBase架构及基本组件

Client
包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息.

HMaster节点用于:
1.管理HRegionServer,实现其负载均衡。
2.管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。
3.实现DDL操作(Data Definition Language,namespace和table的增删改,column familiy的增删改等)。
4.管理namespace和table的元数据(实际存储在HDFS上)。
5.权限控制(ACL)。

HRegionServer节点用于:
1.存放和管理本地HRegion。
2.读写HDFS,管理Table中的数据。
3.Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)

ZooKeeper集群是协调系统,用于:
1.存放整个 HBase集群的元数据以及集群的状态信息。
2.实现HMaster主从节点的failover。

HBase Client通过RPC方式和HMaster、HRegionServer通信;一个HRegionServer可以存放1000个HRegion;底层Table数据存储于HDFS中,而HRegion所处理的数据尽量和数据所在的DataNode在一起,实现数据的本地化;数据本地化并不是总能实现,比如在HRegion移动(如因Split)时,需要等下一次Compact才能继续回到本地化。
这里写图片描述
这个架构图比较清晰的表达了HMaster和NameNode都支持多个热备份,使用ZooKeeper来做协调;ZooKeeper并不是云般神秘,它一般由三台机器组成一个集群,内部使用PAXOS算法支持三台Server中的一台宕机,也有使用五台机器的,此时则可以支持同时两台宕机,既少于半数的宕机,然而随着机器的增加,它的性能也会下降;RegionServer和DataNode一般会放在相同的Server上实现数据的本地化。

HRegion
HBase使用RowKey将表水平切割成多个HRegion,从HMaster的角度,每个HRegion都纪录了它的StartKey和EndKey(第一个HRegion的StartKey为空,最后一个HRegion的EndKey为空),由于RowKey是排序的,因而Client可以通过HMaster快速的定位每个RowKey在哪个HRegion中。HRegion由HMaster分配到相应的HRegionServer中,然后由HRegionServer负责HRegion的启动和管理,和Client的通信,负责数据的读(使用HDFS)。每个HRegionServer可以同时管理1000个左右的HRegion(这个数字怎么来的?没有从代码中看到限制,难道是出于经验?超过1000个会引起性能问题?来回答这个问题:感觉这个1000的数字是从BigTable的论文中来的(5 Implementation节):Each tablet server manages a set of tablets(typically we have somewhere between ten to a thousand tablets per tablet server))。
这里写图片描述

HMaster
HMaster没有单点故障问题,可以启动多个HMaster,通过ZooKeeper的Master Election机制保证同时只有一个HMaster出于Active状态,其他的HMaster则处于热备份状态。一般情况下会启动两个HMaster,非Active的HMaster会定期的和Active HMaster通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个HMaster反而增加了Active HMaster的负担。前文已经介绍过了HMaster的主要用于HRegion的分配和管理,DDL(Data Definition Language,既Table的新建、删除、修改等)的实现等,既它主要有两方面的职责:
1.协调HRegionServer
(1).启动时HRegion的分配,以及负载均衡和修复时HRegion的重新分配。
(2).监控集群中所有HRegionServer的状态(通过Heartbeat和监听ZooKeeper中的状态)。
2.Admin职能
(1).创建、删除、修改Table的定义。
这里写图片描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HBase是一个分布式的、可扩展的、面向列的NoSQL数据库,它基于Hadoop分布式文件系统(HDFS)进行数据存储和处理。以下是HBase架构组件以及运行原理的概述: 1. HBase架构: - Master节点:负责管理和协调整个HBase集群,包括表的创建、Region的分配和负载均衡等任务。 - RegionServer节点:负责存储和管理数据的实际节点,每个RegionServer可以管理多个Region。 - ZooKeeper:HBase使用ZooKeeper来进行分布式协调和元数据的管理。 - HDFS:HBase使用HDFS来存储数据和日志文件。 2. HBase组件: - 表(Table):HBase中的数据以表的形式进行组织,表由多个行和列族构成。 - 行(Row):表中的每一行都有一个唯一的RowKey来标识,行由多个列组成。 - 列族(Column Family):表中的列被组织成列族,每个列族可以包含多个列。 - 列(Column):表中的每个列都由列族和列限定符(Qualifier)组成,用于存储实际的数据。 3. HBase运行原理: - 数据存储:HBase将数据按照RowKey的字典顺序进行分区,每个RegionServer负责管理一些连续的行范围,将数据存储在HDFS上的HFile文件中。 - 写入流程:当客户端进行写入操作时,数据首先会被写入WAL(Write-Ahead Log)文件,然后异步地写入内存中的MemStore。当MemStore达到一定阈值时,数据会被刷写到磁盘上的HFile文件。 - 读取流程:当客户端进行读取操作时,HBase会先从MemStore中查找数据,如果没有找到,则从磁盘上的HFile文件中进行查找。为了加速查询,HBase还使用了Block Cache(缓存)来缓存常用的数据块。 - 负载均衡和自动故障恢复:HBase在Master节点上运行负载均衡算法,通过移动Region来平衡集群的负载。同时,HBase使用ZooKeeper来监控RegionServer的状态,当某个RegionServer宕机时,Master节点会重新分配该Region的副本。 通过以上架构组件,以及基于HDFS的数据存储和协调机制,HBase能够实现高可靠性、高扩展性和高性能的分布式数据存储和查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值