1 ,hbase 简介,准实时,适用场景 ( region ,store ,storeFile 关系 )

1 ,hbase 简介,准实时,适用场景 ( region ,store ,storeFile 关系 )一 概况 1 百度百科 是什么 HBase 是一个分布式的 面向列的开源数据库 bigtable 该技术来源于 Fay Chang 所撰写的 Google 论文 Bigtable 一个结构化数据的分布式存储系统 依托 hdfs 就像 Bigtable 利用了 Google

大家好,我是讯享网,很高兴认识大家。

一 ,概况 :

1 ,百度百科 :

  1. 是什么 : HBase是一个分布式的、面向列的开源数据库
  2. bigtable :该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。
  3. 依托 hdfs 就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。
  4. 所属单位 : HBase 是 Apache 的 Hadoop 项目的子项目。
  5. 非结构化数据存储 : HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  6. 基于列 : 另一个不同的是 HBase 基于列的而不是基于行的模式。

2 ,天时地利 : 很多组件,都可以被 hbase 使用 :

  1. HBase 位于结构化存储层
  2. Hadoop HDFS 为 HBase 提供了高可靠性的底层存储支持。
  3. Hadoop MapReduce 为 HBase 提供了高性能的计算能力
  4. Zookeeper 为 HBase 提供了稳定服务和 failover 机制。
  5. Pig 和 Hive 还为 HBase 提供了高层语言支持,使得在 HBase 上进行数据统计处理变的非常简单。
  6. Sqoop 则为 HBase 提供了方便的 RDBMS 数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
    在这里插入图片描述
    讯享网

3 ,访问接口 : 怎么操作 hbase

  1. Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
  2. HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
  3. Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问 HBase 表数据
  4. REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
  5. Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计
  6. Hive,当前 Hive 的 Release 版本尚没有加入对 HBase 的支持,但在下一个版本 Hive 0.7.0中将会支持 HBase,可以使用类似 SQL 语言来访问 HBase 。

4 ,表构成 :行键,时间戳,列簇

  1. Row Key: 行键,Table的主键,Table中的记录默认按照Row Key升序排序
  2. Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
  3. Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

5 ,表数据 : Table & Region ( 表和区域 )

  1. 当 Table 随着记录数不断增加而变大后,会逐渐分裂成多份 splits ,成为 regions.
  2. 一个 region 由 [startkey,endkey] 表示.
  3. 不同的 region 会被 Master 分配给相应的 RegionServer 进行管理

6 ,-ROOT- & .META. : 元数据信息 ( 分区 )

  1. HBase 中有两张特殊的 Table,-ROOT- 和 .META.
  2. -ROOT- :记录了 .META. 表的 Region 信息,-ROOT- 只有一个 region
  3. .META. :记录了用户表的 Region 信息,.META. 可以有多个 region
  4. Zookeeper 中记录了-ROOT- 表的 location
  5. 如图 : region 信息的保存 (分区信息 )

在这里插入图片描述

7 ,访问数据的底层实现流程

Client 访问用户数据之前需要首先访问 zookeeper,然后访问 -ROOT- 表,接着访问 .META. 表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过 client 端会做 cache 缓存。

8 ,MapReduce on HBase :

  1. 在 HBase 系统上运行批处理运算,最方便和实用的模型依然是 MapReduce
  2. HBase Table和Region的关系,比较类似HDFS File和Block的关系

二 ,总结 :

1 ,实时 :

hbase 的查询操作 : 准实时 ( 百毫秒 )

2 ,非结构化数据 :

  1. hbase 首先它是个结构化数据存储系统,
  2. 其次才是它还具有强大的非结构化数据的存储能力。

3 ,hbase 特点 :

  1. 海量存储 :
    Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展**息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。
  2. 列式存储 : ( 表结构面向列 )
    这里的列式存储其实说的是列族存储,Hbase 是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。
  3. 极易扩展
    Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
    通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
    备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
  4. 高并发
    由于目前大部分使用Hbase的架构,都是采用的廉价 PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase 的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
  5. 稀疏 ( 没有数据的话,就不存,不占空间,不是 null ,也没有默认值 )
    稀疏主要是针对 Hbase 列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

4 ,hbase 适用场景 :

  1. 数据量很大 ( 千万条数据以上 )。
  2. 准实时。
  3. 期待的效果,达到跟普通关系型数据库一样的速度。
  4. 关系型数据库的极限 ( 500 万行,50 列 )。
  5. hbase 存储的数据 ( 十亿行,百万列 )。

5 ,HBase 架构 :文字介绍

  1. 组成元素 : Client、Zookeeper、Master、HRegionServer、HDFS
    客户端,zk ,主服务器,分片服务器,hdfs
  2. Client :客户端
    访问 Hbase 的接口,另外 Client 还维护了对应的 cache 来加速 Hbase 的访问,比如cache 的.META.元数据的信息。
  3. Zookeeper : 主从节点的管理和协调
    HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:
    通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务
    通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息
    通过Zoopkeeper存储元数据的统一入口地址
  4. Hmaster :主节点
    master节点的主要职责如下:
    为RegionServer分配Region
    维护整个集群的负载均衡
    维护集群的元数据信息
    发现失效的Region,并将失效的Region分配到正常的RegionServer上
    当RegionSever失效的时候,协调对应Hlog的拆分
  5. HregionServer :从节点
    HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
    管理master为其分配Region
    处理来自客户端的读写请求
    负责和底层HDFS的交互,存储数据到HDFS
    负责Region变大以后的拆分
    负责Storefile的合并工作
  6. HDFS :底层存储
    HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
    提供元数据和表数据的底层分布式存储服务
    数据多副本,保证的高可靠和高可用性

6 ,HBase 架构 :架构图

在这里插入图片描述

7 ,HBase 架构 :各个角色介绍

  1. Write-Ahead logs :日志记录
    HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
  2. Region :分片
    Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中,在一个 RegionServer 中可以有多个不同的 region。
  3. Store : 存储
    HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
  4. MemStore : 内存存储
    顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。
  5. HFile
    这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以Hfile的形式存储在HDFS的。

8 ,存储数据的过程 :

  1. table : 一张表
    1 个 table,多个 region ,region 是分布式存储的最小单元。
  2. Region :一个分区
    table 在行的方向上分隔为多个 Region。Region 是 HBase 中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的 Region Server上,但同一个Region是不会拆分到多个 server 上。
    Region 按大小分隔,表中每一行只能属于一个 region 。随着数据不断插入表,region 不断增大,当region 的某个列族达到一个阈值(默认 256M)时就会分成两个新的 region。
  3. store :一个列族
    每一个region有一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面,即为每个ColumnFamily建一个store(即有几个ColumnFamily,也就有几个Store)。一个Store由一个memStore和0或多个StoreFile组成。
  4. memStore :内存存储
    memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值(默认64MB)时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStore 的 flush 操作。
  5. StoreFile :一个文件 ( 一次刷新的文件 )
    memStore 内存中的数据写到文件后就是 StoreFile(即 memstore 的每次 flush 操作都会生成一个新的 StoreFile),StoreFile 底层是以 HFile 的格式保存。
  6. HFile : 文件格式
    HFile 是 HBase 中 KeyValue 数据的存储格式,是 hadoop 的二进制格式文件。一个 StoreFile 对应着一个 HFile。而 HFile 是存储在 HDFS 之上的。HFile 文件格式是基于 Google Bigtable 中的SSTable ,如下图所示:
小讯
上一篇 2025-02-27 17:58
下一篇 2025-04-09 23:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/11787.html