目录

  • 1 课程资料
    • 1.1 课程标准
    • 1.2 教学日历
    • 1.3 教案
  • 2 大数据时代
    • 2.1 大数据概述
    • 2.2 大数据的4V特征和关键技术
    • 2.3 大数据与云计算、物联网的关系
    • 2.4 直播录屏
    • 2.5 章节测试
  • 3 大数据处理架构Hadoop
    • 3.1 平台搭建(VM+UbuntuKylin16.04+Hadoop伪分布式+Hbase伪分布式)
    • 3.2 Hadoop简介
    • 3.3 Hadoop的版本
    • 3.4 Hadoop项目结构
    • 3.5 Hadoop安装与配置
    • 3.6 Hadoop伪分布式集群搭建
    • 3.7 章节测试
  • 4 分布式文件系统HDFS简介
    • 4.1 分布式文件系统HDFS简介
      • 4.1.1 HDFS的基本操作实验
    • 4.2 HDFS的基本概念
    • 4.3 HDFS的体系结构
    • 4.4 HDFS的存储策略
    • 4.5 HDFS的数据读写过程
      • 4.5.1 第一关:HDFS Java API编程 ——文件读写
    • 4.6 第2关:HDFS-JAVA接口之上传文件
    • 4.7 章节测试
  • 5 分布式数据HBASE
    • 5.1 HBASE简介
    • 5.2 HBASE数据模型
    • 5.3 HBASE的实现原理
    • 5.4 HBASE运行机制
    • 5.5 HBASE的应用方案。
    • 5.6 章节测试
    • 5.7 Hbase数据库的安装
  • 6 MapReduce概述
    • 6.1 分布式并行编程方式
    • 6.2 MapReduce模型
    • 6.3 MapReduce体系结构
    • 6.4 MapReduce的工作流程
    • 6.5 shuffle操作的过程原理
    • 6.6 章节测试
  • 7 Spark简介
    • 7.1 ​ Spark简介
    • 7.2 Spark与Hadoop的对比
    • 7.3 Spark运行架构基本概念和架构设计
    • 7.4 Spark运行基本流程
    • 7.5 RDD设计与运行原理
    • 7.6 Spark应用实例
    • 7.7 章节测试
  • 8 流计算
    • 8.1 流计算概念及框架
    • 8.2 流计算处理流程及应用
    • 8.3 章节测试
  • 9 大数据的应用
    • 9.1 大数据的应用领域
    • 9.2 大数据助力精准防疫
    • 9.3 章节测试
  • 10 拓展阅读
    • 10.1 区块链
    • 10.2 COVID-19疫情的数据科学实践之Python疫情数据爬取
    • 10.3 大数据技术工具
      • 10.3.1 交通大数据案例
  • 11 主题讨论
    • 11.1 主题讨论
HBASE的实现原理

接下来我们介绍第3节内容,HBase的实现原理,主要内容包括HBase的功能组件、表和Region以及Region的定位。


先来看第1个主要内容,HBase的功能组件。Hbase的三个主要的功能组件分别是库函数和一个master的主服务器,另外一个是多个Region的服务器。Master主要是负责管理HBase表的分区信息,同时呢,它也要维护Region服务器里面的列表,还要负责分配Region,以及多个Region之间的负载均衡问题。Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。一个大的表会被它分成很多个region,就是分区的意思啊,region那这个region呢,就是由这个region服务器来负责具体的维护和管理,那我们客户端在访问数据的时候,也都是直接和这个region服务器进行数据的存取,所以我们说,客户端并不会直接从这个master上面去存取数据啊,一般都是获得整个它的region的位置信息,以后呢直接跑去和相应的region服务器去打交道,去那里去存数据去取数据,而且这是一个非常关键的地方,也是我们说HBase设计比较突出的优点地方,什么呢,就说客户端它并不直接依赖于master去获得这个位置信息,我们的客户端要想取数据,可以不通过master就可以获得相关的数据的,具体的存储的这个类似信息,然后呢,直接跑到数据所存的地方去把数据取出来,那它是通过谁呢?后面我们会讲的,通过Zookeeper来获得Region位置信息来获得更清晰的,后面我们会通过一个叫三级选址来告诉大家,他是怎么获得具体数据的存储位置的。


对于Hbase当中的表的存储会被分成多个region,它是按照行键字典的顺序来进行排列的。在一开始的时候只有一个表只会存在一个region中,由于数据在不断的增长,这个region就会越来越大,会超过region的大小范围,从而region就会开始拆分,一个变成二个,当数据量还在变大时,这个拆分会继续,但是这个操作速度非常快,只是改一下指向信息就可以了,在读取数据时还是读的原存储文件。后面后台会运行一个合并过程,把你拆分的项目数据要进行重新的这种相关的操作,最终会把它写到一个新的文件当中去,写完以后他才会把最新的认证的信息告诉你,后面来的应用都会去读取这个新的文件,所以要知道就是他虽然有拆分,但是拆分速度是非常快的。


每个Region默认大小是100MB到200MB,在2006年以前是这样的硬件配置。现在对于每个Region最好的大小建议可以达到1GB-2GB。不同的Region可以分布在不同的Region服务器上,但是同一个region是不会被分配到多个region服务器上的,而一个region服务器也可存储10-1000个region。


Region:就是要查找的数据所在的Region.META.表:是一张元数据表,记录了用户表的Region信息以及RegionServer的服务器地址,.META.可以有多个regoin。.META.表中的一行记录就是一个Region,记录了该Region的起始行、结束行和该Region的连接信息。-ROOT-:是一张存储.META.表的表,记录了.META.表的Region信息,-ROOT-只有一个region Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过client端会做cache缓存。Hbase的三层结构的步骤:(1)用户通过查找zk(zookeeper)的/hbase/root-region-server节点来知道-ROOT-表在什么RegionServer上。(2)访问-ROOT-表,查看需要的数据在哪个.META.表上,这个.META.表在什么RegionServer上。(3)访问.META.表查看查询的行健在什么Region范围里面。(4)连接具体的数据所在的RegionServer,这回就真的开始用Scan来遍历row了。


HBase的三层结构中每个层次的作用如下表所示,第一层Zookeeper文件主要记录了-ROOT-表的位置信息,第二层-ROOT-表主要记录了.META.表的Region位置信息-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据,第三层.META.表记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息。


为了加快访问速度,.META.表的全部Region都会被保存在内存中

假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为128MB,那么,上面的三层结构可以保存的用户数据表的Region数目的计算方法是:

(-ROOT-表能够寻址的.META.表的Region个数)×(每个.META.表的 Region可以寻址的用户数据表的Region个数)

一个-ROOT-表最多只能有一个Region,也就是最多只能有128MB,按照每行(一个映射条目)占用1KB内存计算,128MB空间可以容纳128MB/1KB=217行,也就是说,一个-ROOT-表可以寻址217个.META.表的Region。

同理,每个.META.表的 Region可以寻址的用户数据表的Region个数是128MB/1KB=217。

最终,三层结构可以保存的Region数目是(128MB/1KB) × (128MB/1KB) = 234个Region。


客户端访问数据时的“三级寻址”,寻址过程客户端只需要询问Zookeeper服务器,不需要连接Master服务器。