初步掌握HBase

一、HBase概述数据库

  HBase是hadoop生态系统中的重要组成部分,是一个开源的、面向列、适合存储海量非结构化数据或半结构化数据,具有高可靠性、高性能、可灵活扩展伸缩、支持实时数据读写的分布式存储系统数组

  存储在Hbase中的表的特征缓存

  一、大:一个表能够有上亿行,上百万列服务器

  二、任意模式:每行都有一个可排序的主键和任意多的列,列能够根据须要动态的增长,同一张表中的不一样的行,它们的列能够不相同架构

  三、面向列:面向列(簇)的存储和权限控制,列(簇)独立检索负载均衡

  四、稀疏:对于为空(NULL)的列,并不占用存储空间,所以,表能够设计的很是稀疏分布式

  五、多个数据版本:每一个单元中的数据能够有多个数据版本,默认状况下自动分配版本号,版本号是单元格插入时的时间戳oop

  六、惟一数据类型:Hbase中的数据都是字符串类型,没有其它数据类型性能

二、HBase数据模型url

  一、Table

    一、Table中的数据能够很是稀疏

    二、每一个Table中的全部行都是按照row key的字典序排序

  二、Row Key

    一、它是byte array(字节数组)

    二、它是表中每条记录的主键

    三、经过Row Key方便查找每行记录

  三、ColumnFamily

    一、每一个ColumnFamily都有一个名称

    二、它包含一个或者多个列

    三、每一个表能够由多ColumnFamily组成

    四、每一个ColumnFamily存储在HDFS上的一个单独的文件中

    五、Key和版本号在每一个ColumnFamily中都保存有一份

  四、Column

    一、它属于某一个ColumnFamily。好比,FamilyName:columnName

    二、HBase表中的列是动态的列

  五、TimeStamp

    一、每个Row Key能够有多个版本号

    二、版本号能够由用户来提供

  六、Cell

    一、存储具体的byte array

    二、单元内的空值不会被保存

三、HBase物理模型

  一、每一个Table会在行的方向上,分割为多个Region

      clip_image001

  二、Region按照数据大小来分割,每个Table刚开始只有一个region,随着数据的增多,region就会不断的增大,当增大到一个阀值的时候,region就会等分红两个新的region。当Table愈来愈大的时候,region就会愈来愈多

    clip_image002

  三、每一个region是HBase中分布式操做和负载均衡的最小单位,不一样的region可能分布到不一样的regionServer上

    clip_image004

  四、Region虽然是分布式操做的最小单元,但并非存储的最小单元,在region里面,又划分了不少更小的单位进行存储,以下所示

    clip_image006

  一、Region由一个或者多个Store组成,每一个Store保存一个ColumnFamily

  二、每一个Store又由一个memStore和多个storefile组成

  三、memstore存储在内存中,storefile存储的HDFS上

四、HBase基本架构

      clip_image008

  一、Client

    能够有多个Client运行在不一样机器上,Client也会维护了一个缓存,用来加快对HBase的访问速度

  二、Zookeeper

    一、保证在任什么时候候,集群中有且仅有一个master

    二、存储了全部region的寻址入口

    三、实时监控RegionServer的健康情况,并实时的通知给Master

    四、存储的HBase的shecma和table的元数据信息

  三、Master

    一、为RegionServer分配region

    二、负责regionserver的负载均衡

    三、若是发现失效的RegionServer,Master会从新分配它上面的region

    四、管理用户对table的增删改查操做

  四、Region Server

    一、RegionServer的做用就是维护region,处理对这些region的I/O请求

    二、RegionServer也负责切分超过阀值的region

  五、Hbase中的Zookeeper

      clip_image009

  一、Hbase的运行依赖于Zookeeper

  二、Master与RegionServer启动时会向Zookeeper注册,Zookeeper能够监控Master和RegionServer的健康情况

  三、Hbase经过引入Zookeeper解决了Master的单点故障

六、Hbase支持的操做

  一、HBase全部的操做均基于rowkey的操做

  二、HBase支持增删改查和scan

  三、Hbase支持单行操做

    一、Put

    二、Get

    三、Scan

  四、Hbase支持多行操做

    一、Scan

    二、MultiPut

  五、Hbase没有内置的join操做,但能够经过MapReduce来解决

七、Hbase Write-Ahead-Log(预先写日志)

      clip_image011

八、Hbase容错机制

  一、Master容错:

    实际生产环境中,HBase通常配置多个Master,当对外提供服务的Master挂掉以后,Zookeeper会从新选举一个新的Master

    一、数据读取不受影响,由于数据读取过程不须要与Master交互

    二、region切分、负载均衡等没法进行

  二、RegionServer容错:

    一、按期的向Zookeeper提供心跳,若是Zookeeper一段时间没有收到心跳信息,Zookeeper会通知Master,RegionServer挂掉了,Master会将该RegionServer上的region从新分配到其余RegionServer上

    二、失效RegionServer上的预写日志,会由主服务器进行分割,而后分配给对应的RegionServer上

  三、Zookeeper容错:

    Zookeeper能够提供一个可靠的服务,通常咱们配置3个、5个、7个等奇数个实例

九、Hbase中的region定位

      clip_image013

  一、首先要访问Zookeeper,查找到ROOT表的位置

  二、从ROOT表里面获取META表的位置,咱们在对应RegionServer上读取META表

  三、在META表里面定位到咱们要找的region的位置

  四、到RegionServer上来读取对应region上面的数据

十、Hbase与关系型数据库的比较

      clip_image015

 

若是,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
若是,您但愿更容易地发现个人新博客,不妨点击一下左下角的【关注我】。
若是,您对个人博客所讲述的内容有兴趣,请继续关注个人后续博客,我是【刘超★ljc】。

本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。

相关文章
相关标签/搜索