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

相关文章

来自专栏YG小书屋

hive 插入parquet二级分区表数据倾斜优化

错误: Java Heap Space。或者GC overhead limit exceeded。 原因: Parquet和ORC是列式批处理文件格式。这...

1151
来自专栏数据和云

性能优化:调整 I/O 相关的等待

编辑手记:对Oracle数据库进行调整优化,基本上最终都可以归结到I/O调整上,因此,了解如何来优化Oracle数据库的I/O对于一个DBA来说就显得至关重要。...

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

Elasticsearch 之 数据索引

对于提供全文检索的工具来说,索引时一个关键的过程——只有通过索引操作,才能对数据进行分析存储、创建倒排索引,从而让使用者查询到相关的信息。 本篇就ES的数据...

20310
来自专栏运维技术迷

Linux下删除指定文件之外的其他文件

目录下有好多个文件,且文件名和扩展名都不太一致。我的需求是只想保留yhtz.php这个文件,除此之外的全部删除。 [root@tokyo wwwroot]# c...

3256
来自专栏Laoqi's Linux运维专列

MySQL调优

4139
来自专栏JMCui

Apache solr(二).

上一篇试着进行了solr的安装和配置,以及如何solr的检索,今天试着简单的将solr连接MySQL数据库(才尝试了单表、一对多和多对多的还有待研究) 1、My...

3086
来自专栏杨建荣的学习笔记

MySQL备份恢复第二篇(r5笔记第6天)

MySQL中的数据恢复功能相比Oracle来说还是要单薄一些,而Oracle中的数据恢复相对来说自动化的程度要高一些。不过Mysql的二进制日志提供的信息很丰富...

3485
来自专栏散尽浮华

分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控

Zabbix3.0 Server以后就自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了。 以...

1929
来自专栏我的小碗汤

linux上安装LAMP笔记

B哥最近在参加比赛,需要把一个php项目部署到服务器上,故此在linux上安装LAMP环境,用于部署项目,第一次安装,做点儿笔记记录一下。

1262
来自专栏社区的朋友们

MySQL 性能测试经验

资源调度管理平台的重构:其中的 Resource/Property 数据库设计,在没有更加优化的方案前,打算沿用当前平台的数据库结构;这就需要对当前平台的数据库...

3.2K2

扫码关注云+社区