zoukankan      html  css  js  c++  java
  • 初步掌握HBase

    1、HBase概述

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

      存储在Hbase中的表的特征

      1、大:一个表可以有上亿行,上百万列

      2、任意模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中的不同的行,它们的列可以不相同

      3、面向列:面向列(簇)的存储和权限控制,列(簇)独立检索

      4、稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏

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

      6、唯一数据类型:Hbase中的数据都是字符串类型,没有其它数据类型

    2、HBase数据模型

      1、Table

        1、Table中的数据可以非常稀疏

        2、每个Table中的所有行都是按照row key的字典序排序

      2、Row Key

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

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

        3、通过Row Key方便查找每行记录

      3、ColumnFamily

        1、每个ColumnFamily都有一个名称

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

        3、每个表可以由多ColumnFamily组成

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

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

      4、Column

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

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

      5、TimeStamp

        1、每一个Row Key可以有多个版本号

        2、版本号可以由用户来提供

      6、Cell

        1、存储具体的byte array

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

    3、HBase物理模型

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

          clip_image001

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

        clip_image002

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

        clip_image004

      4、Region虽然是分布式操作的最小单元,但并不是存储的最小单元,在region里面,又划分了很多更小的单位进行存储,如下所示

        clip_image006

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

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

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

    4、HBase基本架构

          clip_image008

      1、Client

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

      2、Zookeeper

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

        2、存储了所有region的寻址入口

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

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

      3、Master

        1、为RegionServer分配region

        2、负责regionserver的负载均衡

        3、如果发现失效的RegionServer,Master会重新分配它上面的region

        4、管理用户对table的增删改查操作

      4、Region Server

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

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

      5、Hbase中的Zookeeper

          clip_image009

      1、Hbase的运行依赖于Zookeeper

      2、Master与RegionServer启动时会向Zookeeper注册,Zookeeper可以监控Master和RegionServer的健康状况

      3、Hbase通过引入Zookeeper解决了Master的单点故障

    6、Hbase支持的操作

      1、HBase所有的操作均基于rowkey的操作

      2、HBase支持增删改查和scan

      3、Hbase支持单行操作

        1、Put

        2、Get

        3、Scan

      4、Hbase支持多行操作

        1、Scan

        2、MultiPut

      5、Hbase没有内置的join操作,但可以通过MapReduce来解决

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

          clip_image011

    8、Hbase容错机制

      1、Master容错:

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

        1、数据读取不受影响,因为数据读取过程不需要与Master交互

        2、region切分、负载均衡等无法进行

      2、RegionServer容错:

        1、定期的向Zookeeper提供心跳,如果Zookeeper一段时间没有收到心跳信息,Zookeeper会通知Master,RegionServer挂掉了,Master会将该RegionServer上的region重新分配到其他RegionServer上

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

      3、Zookeeper容错:

        Zookeeper可以提供一个可靠的服务,一般我们配置3个、5个、7个等奇数个实例

    9、Hbase中的region定位

          clip_image013

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

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

      3、在META表里面定位到我们要找的region的位置

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

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

          clip_image015

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

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

  • 相关阅读:
    20145328 《信息安全系统设计基础》第6周学习总结
    20145328 《信息安全系统设计基础》第5周学习总结
    2017-2018-2 《网络对抗技术》 20155322 第二周 Exp1 PC平台逆向破解(5)M
    2017-2018-1 《信息安全系统设计基础》 20155322 十六周 课上实践
    2017-2018-1 《信息安全系统设计基础》 20155322 十六周 课下实践
    20155322 2017-2018-1《信息安全系统设计基础》课程总结
    20155322 2017-2018-1《信息安全系统设计基础》第十四周学习总结
    20155322 2017-2018-1 《信息安全系统设计基础》 第十三周学习总结
    20155322 2017-2018-1《信息安全系统设计基础》实验五-通信协议设计
    20155322 2017-2018-1《信息安全系统设计基础》实验四-外设驱动程序设计
  • 原文地址:https://www.cnblogs.com/codeOfLife/p/5602786.html
Copyright © 2011-2022 走看看