大数据:HBase(1)

到目前为止,我们介绍了HDFS、MR、YARN等内容,这套东西,与印象中的“数据库”大相径庭,对于有关系型数据库知识背景的初学者来说,HDFS + MR的处理方式颇为原始,更像是一个数据存储系统,而不是数据库系统。不过,本次介绍的HBase,则是Hadoop生态中真正的数据库产品。

在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙: 740041381,即可免费领取套系统的大数据学习教程

概要介绍

  • 分布式

HBase同大部分的分布式系统一样,支持“分片”(Sharding),数据自动进行分片,以跨节点分布存储。同时,HBase底层基于HDFS,后者本身自带分布式属性。

 

  • 非关系型

不同于传统的关系型数据库如MySQL、Oracle等,后者总是预定义好数据模型,包括表、列、列类型,而作为NoSQL数据库的HBase采用更为灵活的数据模型,也并不支持使用SQL语句进行交互。

 

  • 灵活的数据模型

HBase中存储的基本单位也叫“表”(table),一张表由一或多个“列族”(column family),列族包含若干“列”,不过,其中需要预定义的只有表和列族,而列是不需要预先定义,可以随时按需求创建。另外,HBase也没有数据类型,所有数据都最终存储为字节数组,这也增加了灵活度。

 

  • 可扩展性

HBase中数据分片称为“region”,当一个region中的数据太大,HBase会按一定规则拆分成两个region,有了这一分片机制,方便HBase进行扩展。

  

架构

还是那个熟悉的味道,典型的分布式Master/Slave架构。

HBase采用Master/Slave架构搭建集群,由以下类型节点组成:HMaster节点、HRegionServer节点、ZooKeeper集群。而在底层,它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等

 

  • HMaster

  1. 管理HRegionServer,实现其负载均衡。

  2. 管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。

  3. 实现DDL操作(Data Definition Language,namespace和table的增删改,column familiy的增删改等)。

  4. 管理namespace和table的元数据(实际存储在HDFS上)。

  5. 权限控制(ACL)。

 

  • HRegionServer

  1. 存放和管理本地HRegion。

  2. 读写HDFS,管理Table中的数据。

  3. Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)。

  在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙: 740041381,即可免费领取套系统的大数据学习教程

  • ZooKeeper集群

  1. 存放整个 HBase集群的元数据以及集群的状态信息。

  2. 实现HMaster主从节点的failover。

 

读写流程

  • 读流程(简要)

  1. 从ZooKeeper(/hbase/meta-region-server)中获取hbase:meta表的位置(HRegionServer的位置),缓存该位置信息。

  2. 从hbase:meta中查询你所查的table及你所查的RowKye所在的HRegionServer,缓存该位置信息。

  3. 从上一步查询到的HRegionServer中读取Row。

 

  • 写流程(简要)

  1. 当客户端发起一个Put请求时,首先它从hbase:meta表中查出该Put数据最终需要去的HRegionServer。

  2. 客户端将Put请求发送给相应的HRegionServer,在HRegionServer中它首先会将该Put操作写入WAL日志文件中,并返回通知客户端。

 

今天先介绍到这里,下一节将主要介绍HBase中的数据存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值