Hadoop基础教程-第10章 HBase:Hadoop数据库(10.2 HBase基本概念、框架)(草稿)

第10章 HBase:Hadoop数据库

10.2 HBase基本概念、框架

本节内容,大多是从网络上汇总而来,并做了一定总结修改。

10.2.1 HBase的特点

  • 大:一个表可以有上亿行,上百万列。
  • 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
  • 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  • 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
  • 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
  • 数据类型单一:HBase中的数据都是字符串,没有类型。

10.2.2 HBase基本概念

  • RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要
  • Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
  • Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
  • Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
  • Value(Cell):Byte array

10.2.3 HBase架构组成

由图可知HBase建立在Hadoop之上,HBase底层使用的是Hadoop的HDFS。准确的说HBase建立在HDFS之前,并不依赖于Hadoop。 HBase包含3个重要组件:Zookeeper、HMaster和HRegionServer。 (1)Zookeeper 为整个HBase集群提供协助服务,包括:

     1)存放整个 HBase集群的元数据以及集群的状态信息。
     2)实现HMaster主从节点的failover。

ZooKeeper为HBase集群提供协调服务,它管理着HMaster和HRegionServer的状态(available/alive等),并且会在它们宕机时通知给HMaster,从而HMaster可以实现HMaster之间的failover,或对宕机的HRegionServer中的HRegion集合的修复(将它们分配给其他的HRegionServer)。ZooKeeper集群本身使用一致性协议(PAXOS协议)保证每个节点状态的一致性。 (2)HMaster 主要用于监控和操作集群中的所有HRegionServer。HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master在运行 主要负责Table和Region的管理工作:

    1)管理用户对表的增删改查操作
    2)管理HRegionServer的负载均衡,调整Region分布
    3)Region Split后,负责新Region的分布
    4)在HRegionServer停机后,负责失效HRegionServer上Region迁移

(3)HRegionServer HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据。

    1)存放和管理本地HRegion。
    2)读写HDFS,管理Table中的数据。
    3)Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)。

10.2.4 物理存储

每个column family存储在HDFS上的一个单独文件中,空值不会被保存。 Key 和 Version number在每个 column family中均有一份; HBase 为每个值维护了多级索引,即:<key, column family, column name, timestamp> 物理存储: (1)Table中所有行都按照row key的字典序排列; (2)Table在行的方向上分割为多个Region; (3)Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region; (4)Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构沉思录

MySQL在并发场景下的优化手段

对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为...

852
来自专栏owent

关于BUS通信系统的一些思考(二)

虽然我很不愿意再设计一套BUS系统,但是现有的一些确实都没有特别符合我的口味的。所以还是尝试设计一个出来。

813
来自专栏龙首琴剑庐

数据库的事务作用及隔离级别

1、事务是什么? 实际的SQL执行过程中,有时候我们生产过程需要保证某些SQL要么一起并顺序执行成功,要么一起失败回滚,不做任何操作。那么就有了事务的概念。事务...

2766
来自专栏Java面试通关手册

Mysql锁机制简单了解一下

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_G...

15011
来自专栏鸿的学习笔记

闲话聊聊事务处理(上)

如前面的一些文章写的,数据系统不可能保证是完全的可靠的,我们会遇上各种各样的问题,比如数据库或者应用突然崩溃,网络连接断了,并发读和并发写,诸如此类...

772
来自专栏编码前线

设计模式之Facade模式

  为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

1143
来自专栏java技术学习之道

面试必看!2018年4月份阿里最新的java程序员面试题目

2684
来自专栏Spark学习技巧

Kafka源码系列之Broker的IO服务及业务处理

Kafka源码系列之Broker的IO服务及业务处理 一,kafka角色 Kafka源码系列主要是以kafka 0.8.2.2源码为例。以看spark等源码的经...

24010
来自专栏人云亦云

Storm参数配置及代码优化

3595
来自专栏https://www.cnblogs.com/L

HBase篇--初始Hbase

1.HBase,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。 2.利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapRe...

892

扫码关注云+社区