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 条评论
登录 后参与评论

相关文章

来自专栏加米谷大数据

ZooKeeper在Hadoop中的应用

1662
来自专栏大数据和云计算技术

HDFS学习:HDFS机架感知与副本放置策略

洋哥YARN和HDFS实践系列大作,这是第三篇,前面两篇分别是: Yarn【label-based scheduling】实战总结(二) Yarn【label-...

46710
来自专栏CSDN技术头条

Spark Streaming vs. Kafka Stream 哪个更适合你?

译者注:本文介绍了两大常用的流式处理框架,Spark Streaming和Kafka Stream,并对他们各自的特点做了详细说明,以帮助读者在不同的场景下对框...

3226
来自专栏Java工程师日常干货

RocketMQ实战(一)What is RocketMQ?初步理解Producer/Consumer Group install RocketMQ

阿里巴巴有2大核心的分布式技术,一个是OceanBase,另一个就是RocketMQ。在实际项目中已经领教过RocketMQ的强大,本人计划写一个RocketM...

763
来自专栏mantou大数据

Kafka基础入门

1. Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统...

3254
来自专栏叁金大数据

HDFS你一定要知道,要考的

前面我们分析存储方案的发展的时候有提到分布式文件存储的出现是为了解决存储的三大问题:可扩展性,高吞吐量,高可靠性

671
来自专栏IT技术精选文摘

Kafka剖析系列之高可用(上)

Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供...

1906
来自专栏xingoo, 一个梦想做发明家的程序员

Zookeeper学习笔记——2 Shell和Java API的使用

ZooKeeper的使用一般都接触不到,因为平时工作甚少直接使用ZK。但是通过手动操作一下ZK,还是能对其中的门道了解各一二。 shell 常用命令 he...

2675
来自专栏数据科学与人工智能

【Hadoop研究】Hadoop分布式文件系统HDFS的工作原理详述

Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐...

2947
来自专栏AILearning

Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN

集群模式概述 该文档给出了 Spark 如何在集群上运行、使之更容易来理解所涉及到的组件的简短概述。通过阅读 应用提交指南 来学习关于在集群上启动应用。 ...

1665

扫码关注云+社区