HBase简介(一)

17 篇文章 0 订阅
16 篇文章 1 订阅
HBase属于列式非关系型娄据库(NoSQL),在介绍HBse则先了解NoSQL。
 
 
一、关于NoSQL
 
什么是NoSQL?
NoSQL(Not Only SQL),它是一个通用的述语,也就是非关系型数据库,它并不是以sql作为它的主要访问语言。
现在有比较多的NoSQL数据库,BerkeleyDB是一个本地NoSQL数据库;HBase是一个分布式数据库(从技术上说它是一个数据存储而不是数据库)
 
NoSQL产生的主要背景
随着互联网的发展,传统的关系型数据库在应付超大规模和高并发的系统上已经“力不从心”,而非关系型数据库则在这一方面有优势。
 
NoSQL数据库的分类
  1. 键值(Key-Value)存储数据库
        它是以键值对的格式进行存储的,类似于Java中的Map,在数据库中有一个特定的key键和键所指向的value值。
        优势:简单且易于部署,可以把程序中的数据直接映射到数据库中,使得程序中的数据和数据库中的数据存储方式很相近。如:Redis
  1. 列存储数据库
        传统的关系型数据库是按行进行存储的,而列数据库则是每一列单独存储。
        优势:仅仅查询所需要的列,可以大大提高查询的速度。如:HBase
  1. 文档型数据库
        这种类型数据库与键值存储类似,这个类型的数据模型是把内容按照某些特定的格式进行存储(如:JSON格式)。如:MongoDB
  1. 图形数据库
        它与关系型数据库和列式数据库不同,它是基于灵活的图型模型,并且可以扩展到多个服务器上
 
NoSQL数据库的应用
主要应用于如下场景:
  1. 数据量大、数据模型比较简单
  2. 对数据库的性能要求比较高,需要节省开发及维护成本
  3. 不需要高度的数据一致性
  4. 对于给定的吸,比较容易映射复杂值的环境,数据之间关系性不强
 
关系型数据库与非关系型数据库的区别
 
对比项
关系型数据库
非关系型数据库
成本
相对非关系型数据库可能存在软件购买费用
易于部署
基本是开源软件
查询速度
查询速度慢(存储于硬盘中)
查询速度快(存储于缓存中)
数据格式
基础类型
key-value形式、文档形式、图形形式……
可以存储基础类型、对象、集合……
扩展性
有类似join这样的多表查询机制限制,扩展难
扩展相对容易
 
二、HBse简单介绍
       HDFS是大型数据集分析处理的文件系统,具有高延迟的特点,它倾向于读取整个数据集而不是指定的某个记录,因而在处理低延的用户请求时,HBase则为更好的选择,它可以实现某条数据的快速定位,提供实时的读写功能。
 
HBase:HadoopDataBase,一个基于HDFS和Zookeeper的列式数据库。是一个高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库。
HBase利用HDFS作为它的文件存储系统;利用基于YARN的MapReduce处理HBase的海量数据;利用Zookeeper作为其分布式协同服务。
它主要用来存储非结构化和半结构化的松散数据
注意:并不是所有的情况都适用于HBase。
  1. 当数据量达到数亿或数十亿则是一个好的选择,原因是当数据量不大时,所有的数据可能在HBase的单个节点上,而其它的集群则可能处于空闲的状态。
  2. HBase并没有RDBMS所提供的索引、事务、高级查询语言等功能,不可以把RDBMS构建的应用直接移植到HBase上
 
HBase的数据模型
HBase的数据模型主要包含:行键、列族、时间戳、单元格、HLog(WAL log)
  1. 行键(Row Key)
        行键是一个字节数组,任何的字符串都可以作为行键,注意:行键只可以存储64KB的字节数据。要对表进行访问,需要通过行键进行。
  1. 列族/列标签
        HBase中的每个列都是归属于某个列族的,列表则以列族作为前缀,每个列族都可以有多个列成员,通过列标签来表示,新的列族成员可以动态增加。HBase中会把同一列族里面的数据存储在同一目录下,在几个文件中保存。
  1. 时间戳
        HBase中的每个cell存储单元,会以同一份数据存储多个版本,HBase引入时间戳区分每个版本之间的差异,时间戳的类型是64位整数,不同版本的数据根据时间戳倒序排序。时间戳可以在HBase写入数据时自己动赋值也可以由客户指定显示赋值。
  1. 单元格
        它的内容是没有解析的字节数组。由行和列坐标交叉决定,同时单元格是有版本的,数据没有数据类型的都是由二进制字节码形式存储。
 
HBase体系架构及组件
 
如下图为HBase的体系架构图
 
 
  1. Zookeeper
        这个组件主要用来存储HBase的Schema和Table元数据,它可以保障在任何时间,集群中只有一个Master。同时来存储所有Region的寻址入口,进行实时监控RegionServer的上线和下线信息,并且实时通知HMaster
  1. HMaster
        它类似于HDFS中的NameNode,它的主要作用是为RegionServer分配Region,同时负责RegionServer的负载均衡。它也会管理用户对Table的增、删、改操作
  1. ​HRegionServer
        它类似于HDFS中的DataNode,它负责维护Region,处理对Region的I/O请求。同时会负责切分在运行过程中变得过大的Region
  1. ​Client
        它包含了访问HBase的接口,同时维护Cache来加快对HBase的访问性能。
  1. ​Region
        Region是HBase中分布式存储和负载均衡的最小单元。HBase会自动把表水平切分为多个区域,也就是多个Region,每一个Region会保存一个表里某段连续的数据。每个表一开始只有一个Region,当数据越来越多从而达到一个阀值的时候,这个Region会等分成两个Region(这个过程也称为裂变)
  1. ​MemStore和StoreFile
        一个Region会由多个Store组成,一个Store包含内存中的MemStore和磁盘StoreFile
 
HBase的执行原理
从上面的图可以看到,一个Table包含了多个Region,每一个Region又包含了多个Store,同时每个Store又由一个MemStore和0至多个StoreFile组成。
StoreFile是以HFile的格式保存在HDFS上的
写入操作的执行
  1. 把数据写入到MemStore中
  2. 当MemStroe中的数据达到一定的阀值时,HRegionServer启动FlashCache进程写入StoreFile,每次写入会形成一个单独的StoreFile
  3. 当StoreFile文件数量达到一定阀值时,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的StoreFile
  4. 当一个Region中所有的StoreFile大小之和超过一定阀值时,会把当前的Region分割为两个,并由HMaster分配到相应的RegionServer服务器上,以实现负载均衡
查找数据
        会先从MemStroe中查找,如果从MemStore中找不到数据,会再从StoreFile上查找
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值