专栏首页积累沉淀Hbase原理、基本概念、基本架构

Hbase原理、基本概念、基本架构

Hbase原理、基本概念、基本架构

概述

HBase是一个构建在HDFS上的分布式列存储系统;

HBase是基于Google BigTable模型开发的,典型的key/value系统;

HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;

从逻辑上讲,HBase将数据按照表、行和列进行存储。

与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

Hbase表的特点

大:一个表可以有数十亿行,上百万列;

无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

面向列:面向列(族)的存储和权限控制,列(族)独立检索;

稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;

数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

数据类型单一:Hbase中的数据都是字符串,没有类型。

Hbase数据模型

Hbase逻辑视图

注意上图中的英文说明

Hbase基本概念

RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。 Column Family:列族,拥有一个名称(string),包含一个或者多个相关列 Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加 Version Number:类型为Long,默认值是系统时间戳,可由用户自定义 Value(Cell):Byte array

Hbase物理模型

每个column family存储在HDFS上的一个单独文件中,空值不会被保存。

Key 和 Version number在每个 column family中均有一份;

HBase 为每个值维护了多级索引,即:<key, column family, column name, timestamp>

物理存储: 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架构及基本组件

Hbase基本组件说明:

Client 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息 Master 为Region server分配region 负责Region server的负载均衡 发现失效的Region server并重新分配其上的region 管理用户对table的增删改查操作 Region Server Regionserver维护region,处理对这些region的IO请求 Regionserver负责切分在运行过程中变得过大的region Zookeeper作用 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册 存贮所有Region的寻址入口 实时监控Region server的上线和下线信息。并实时通知给Master 存储HBase的schema和table元数据 默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper Zookeeper的引入使得Master不再是单点故障

Write-Ahead-Log(WAL)

该机制用于数据的容错和恢复:

每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复

HBase容错性

Master容错:Zookeeper重新选择一个新的Master

无Master过程中,数据读取仍照常进行;

无master过程中,region切分、负载均衡等无法进行;

RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳,Master将该RegionServer上的Region重新分配到其他RegionServer上,失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer

Zookeeper容错:Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例

Region定位流程:

寻找RegionServer

ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表

-ROOT-

表包含.META.表所在的region列表,该表只会有一个Region;

Zookeeper中记录了-ROOT-表的location。

.META.

表包含所有的用户空间region列表,以及RegionServer的服务器地址。

Hbase使用场景

storing large amounts  of data(100s of TBs) need high write throughput need efficient random access(key lookups) within large data sets need to scale gracefully with data for structured and semi-structured data don't need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)

大数据量存储,大数据量高并发操作

需要对数据随机读写操作

读写访问均是非常简单的操作

Hbase与HDFS对比

两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;

HDFS适合批处理场景

不支持数据随机查找

不适合增量数据处理

不支持数据更新

参考文档:

1、http://www.alidata.org/archives/1509(存储模型比较详细)

2、http://www.searchtb.com/2011/01/understanding-hbase.html(技术框架以及存储模型)

3、http://wenku.baidu.com/view/b46eadd228ea81c758f578f4.html(读和写的流程比较详细)

转载自http://blog.csdn.net/woshiwanxin102213/article/details/17584043

参考http://dongxicheng.org/

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:http://blog.csdn.net/tanggao1314/article复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • hbase数据原理及基本架构

    hbase是apache hadoop生态系统中的重要一员,主要用于海量结构化数据存储

    用户1217611
  • 【DB】HBase的基本概念

    一 Hbase是个啥东东? 在说Hase是个啥家伙之前,首先我们来看看两个概念。面向行存储和面向列存储。面向行存储。我相信大伙儿应该都清楚,我们熟悉的RD...

    全栈程序员站长
  • Hbase原理与架构

    我们都知道Hbase是一个构建在HDFS上的分布式列存储系统。Hbase主要用于海量数据的结构化存储。

    Tim在路上
  • hbase基本概念和hbase shell常用命令用法

    HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是Google Bigt...

    闵开慧
  • glusterfs架构和基本概念

    用户4700054
  • HBase原理(一):架构理解

    Apache HBase 是基于 Hadoop 构建的一个分布式的、可伸缩的海量数据存储系统。常被用来存放一些海量的(通常在TB级别以上)、结构比较简单的数据,...

    create17
  • 微服务架构 基本概念概述

    首先看看什么是单体架构 一个工程对应一个归档包(war),这个war包 包含了该工程的所有功 能。我们成为这种应用为单体应用,也就是我们常说的单体架构(一个 w...

    大龄老码农-昊然
  • 云原生架构实战-基本概念

    Applications adopting the principles of Microservices packaged as Containers or...

    JavaEdge
  • HDFS|基本概念和读写原理

    01 — HDFS设计目的 A distributed file system that provides high-throughput access to ...

    double
  • Kerberos基本概念及原理汇总

    强大的身份验证和建立用户身份是Hadoop安全访问的基础。用户需要能够可靠地“识别”自己,然后在整个Hadoop集群中传播该身份。完成此操作后,这些用户可以访问...

    create17
  • Nginx-基本概念和原理

    Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上...

    唔仄lo咚锵
  • 权限系统的基本概念和架构

    权限系统是我们在系统设计和应用中一种非常常见的系统。一般来说权限系统的功能分为认证和授权两种。认证就非常简单的,验证完用户名密码就算认证成功,而授权里面的套路就...

    程序那些事
  • Elasticsearch的基本概念及架构剖析

    Elaticsearch,简称为ES, ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理...

    五分钟学大数据
  • Flume入门 | 基本概念及架构说明

    今天,给大家分享一下Flume的基础知识。本篇文章主要是对Flume的基本概念及架构进行一些说明。

    create17
  • Quartz学习笔记(一)基本概念及原理

    Quartz Scheduler 开源框架 Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 java 实现。该项目于...

    小柒2012
  • 人脸支付技术原理和基本概念介绍

    从2015年,马云在德国展示人脸支付技术以来,经过几年发展,人脸支付已经开始走向商用。近日,支付宝蜻蜓、微信青蛙以及人行牵头银联和各商业银行推进落地的刷脸支付系...

    金融民工小曾
  • Apache Hudi 架构设计和基本概念

    Apache Hudi是一个Data Lakes的开源方案,Hudi是Hadoop Updates and Incrementals的简写,它是由Uber开发并...

    王知无-import_bigdata
  • 反应式架构(1):基本概念介绍 顶

           淘宝从2018年开始对整体架构进行反应式升级, 取得了非常好的成绩。其中『猜你喜欢』应用上限 QPS 提升了 96%,同时机器数量缩减了一半;另一...

    joymufeng
  • k8s 架构、基本概念及命令

    API server: 是k8s 集群的前端接口,各种客户端工具以及k8s的其他组件 可以通过它管理k8s集群的各种资源。它提供了HTTP/HTTPS RES...

    小手冰凉

扫码关注腾讯云开发者

领取腾讯云代金券