• Hbase学习笔记


    • Hbase是什么

    HBase是Apache Hadoop中的一个子项目。

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

    Hbase依托于Hadoop的HDFS作为最基本存储基础单元,Hbase内部管理的文件全部存储在HDFS中。

    • Hbase中的基本概念

    Table:一个表可以有数十亿行,上百万列,每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列。

    RowKey:行键,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。

    Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成。

    Column:列,属于某一个Column Family,familyName:columnName,每条记录可动态添加。

    Version Number:类型为Long,默认值是系统时间戳,可由用户自定义。

    Value(Cell):值,所有Value均以二进制格式存储,用户需要自行进行类型转换。

    •  Hbase中数据的存储 

      在HBase中创建的一张表可以分布在多个Hregion,也就说一张表可以被拆分成多块,每一块称我们呼为一个Hregion。每个表开始只有一个Hregion,随着数据增多,Hregion不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion,之后会有越来越多的Hregion。每个Hregion会保 存一个表里面某段连续的数据,用户创建的那个大表中的每个Hregion块是由Hregion服务器提供维护,访问Hregion块是要通过 Hregion服务器,而一个Hregion块对应一个Hregion服务器,一张完整的表可以保存在多个Hregion 上。HRegion Server 与Region的对应关系是一对多的关系。每一个HRegion在物理上会被分为三个部分:Hmemcache(缓存)、Hlog(日志)、HStore(持久层)。

    HRegionServer、HRegion、Hmemcache、Hlog、HStore之间的关系,如图所示:

    HBase表中的数据与HRegionServer的分布关系,如图所示:

      HBase读数据:HBase读取数据优先读取HMemcache中的内容,如果未取到再去读取Hstore中的数据,提高数据读取的性能。

      HBase写数据:HBase写入数据会写到HMemcache和Hlog中,HMemcache建立缓存,Hlog同步Hmemcache和Hstore的事务日志,发起Flush Cache时,数据持久化到Hstore中,并清空HMemecache。

    •  Hbase架构及基本组件

    Master

    • 为Region server分配region
    • 负责Region server的负载均衡
    • 发现失效的Region server并重新分配其上的region
    • 管理用户对table的增删改查操作

    HRegionServer

    • HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
    • HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。

    Zookeeper

    • 通过选举,保证任何时候,集群中只有一个Master,Master与HRegionServer 启动时会向ZooKeeper注册
    • 存贮所有Region的寻址入口
    • 实时监控HRegionServer的上线和下线信息。并实时通知给Master
    • 存储HBase的schema和table元数据
    • 默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper
    • Zookeeper的引入使得Master不再是单点故障

     

    • Hbase容错性

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

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

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

    参考:

    http://blog.csdn.net/frankiewang008/article/details/41965543

    http://blog.csdn.net/woshiwanxin102213/article/details/17584043

  • 相关阅读:
    [BOST] 博赞有机的学习技巧
    [BOST] 你的大脑比你想象的更优秀
    Markdown学习笔记
    nodejs原生态模块,写个聊天室
    【2】自定义WindowsForm分页控件使用【共两篇】
    【1】自定义WindowsForm分页控件使用【共两篇】
    《Log4net写出适合自己的日志类》第三篇【终】【怎样让它适合你自己需求】
    《Log4net写出适合自己的日志类》第二篇【没有理论的实践是盲目】
    《Log4net写出适合自己的日志类》第一篇【上来就是干,先实践后理论】
    记忆留住深刻过往,博客写出平淡事迹【博客首篇】
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6203203.html
Copyright © 2020-2023  润新知