美文网首页hbase&hadoop
Hbase--基础知识点总结(扫盲篇)

Hbase--基础知识点总结(扫盲篇)

作者: 李小李的路 | 来源:发表于2019-04-26 19:41 被阅读0次

冰冻三尺非一日之寒,学习也是如此!
仅为知识扫盲篇,扫盲篇啊,基础性的知识!

Hbase角色

HMaster

功能:

  • 1-监控RegionServer;
  • 2-处理RegionServer故障转移;
  • 3-处理元数据的变更;
  • 4-处理region的分配和移除;
  • 5-在空闲时间进行数据的负载均衡;
  • 6-通过Zookeeper发布自己的位置给客户端

RegionServer

功能

  • 1-负责存储Hbase的实际数据;
  • 2-处理分配给它的Region
  • 3-刷新缓存到HDFS;
  • 4-维护HLog;
  • 5-执行压缩;
  • 6-负责处理Region分片;

组件

  • 1-Write-Ahead logs
    • Hbase的修改记录,当对Habse读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有跟高的概率引起数据丢失,为了解决这个问题,数据会先写入一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以系统出现故障的时候,数据可以通过这个日志文件重建。
  • 2-HFile
    • 这是再磁盘上保存原始数据的实际的物理文件,是实际的存储文件
  • 3-Store
    • HFile存储再Store中,一个Store对应Hbase表中的一个列族;
  • 4-MemStore
    • 内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存再WAL中之后,RegionServer会在内存中存储键值对;
  • 5-Region
    • Hbase表的分片,Hbase表会很具RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个Region。

Hbase架构

  • 一个RegionServer可以包含多个HRegion,每个RegionServer维护一个HLog,和多个HFiles以及其对应的MemStore。RegionServer运行于DataNode上,数量可以与DataNode数量一致,请参考如下架构图:


    Hbase架构.jpg

Hbase读写流程

Hbase读流程

  • 1-Client访问Zookeeper,从Zookeeper中获取-ROOT-表所在位置,进而找到.META.表所在的位置信息(即找到这个.META.表在那个HRegionServer上保存着)。
  • 2-Client通过第一步中获取的ip访问.META.表所在的HRegionServer,从而读取到.META.,获取.META.表中存放的元数据。
  • 3-Client通过元数据中存储的信息,访问对应的HRegionServer,然后扫描HRegionServer的Memstore和StoreFile来查询数据;
  • 4-最后HRgionServer把查询到的数据响应给Client;

Hbase写数据流程

  • 1-Client首先访问zookeeper,找到-ROOT-表,进而找到.META.表,并获取.META.表信息。
  • 2-确定当前将要写入的数据所对应的RegionServer服务器和Region;
  • 3-Client向该RegionServer服务器发起写入数据请求,然后RegionServer收到请求并响应;
  • 4-Client先把数据写入到HLog,以防止数据丢失;
  • 5-然后将数据写入到Memstore;
  • 6-如果HLog和Memstore均写入成功,则这条数据写入成功。在此过程中,如果Memstore达到阈值,会把Memstore中的数据Flush到StoreFile中;
  • 7-当StoreFile越来越多,会触发Compact合并操作,把过多的StoreFile合并成也给大的StoreFile。当StoreFile越来越多,Region也会越来越大,达到阈值后,会触发Split操作,将Region一份为二;
    因为内存空间是有限的,所以说溢写过程必定伴随着大量的小文件产生。
  • 贴两张Hbase社区的分享文案,可以好好的帮助理解一下


    Hbase写流程.PNG
Region Split过程.PNG

Hbase预分区

  • 每一个region维护着startRow与endRowkey,如果加入的数据符合某个region维护的rowkey范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高Hbase的性能。
  • 1-手动设定预分区
hbase> create 'staff','info','partition1',SPLITS=>['1000','2000','3000','4000']
  • 2-生成16进制序列预分区
create 'staff2','info','partition2',{NUMREGIONS=>15,SPLITALGO=>'HexStringSplit'}
  • 3- 按照文件中设置的规则预分区
    创建splits.txt文件内容如下:
aaaa
bbbb
cccc
dddd

然后执行:

create 'staff3','partition3',SPLITS_FILE=>'splits.txt'
  • 4-使用javaAPI创建预分区
//自定义算法,产生一系列Hash散列值存储在二维数组中
byte[][] splitKeys = 某个散列值函数
//创建HBaseAdmin实例
HBaseAdmin hAdmin = new HBaseAdmin(HBaseConfiguration.create());
//创建HTableDescriptor实例
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
//通过HTableDescriptor实例和散列值二维数组创建带有预分区的HBase表
hAdmin.createTable(tableDesc, splitKeys);

相关文章

  • Hbase--基础知识点总结(扫盲篇)

    冰冻三尺非一日之寒,学习也是如此!仅为知识扫盲篇,扫盲篇啊,基础性的知识! Hbase角色 HMaster 功能:...

  • JVM基础知识系列

    JVM基础系列 JVM知识点扫盲系列(1) JVM知识点扫盲系列(2) JVM内存的那些事 JVM类加载的那些事 ...

  • 计划

    作文:复习高分句型10句,总结公众号的例句5句,一篇真题扫盲及重写 作文是重点 阅读:两篇真题重写及扫盲➕总结,一...

  • 高级面试题

    170+道钉钉前端扫盲知识点 基础知识 基础知识主要包含以下几个方面: 基础:计算机原理、编译原理、数据结构、算法...

  • 停不下来的多线程

    GCD 扫盲篇 Grand Central Dispatch 基础教程Swift:Part 1 & Part2--...

  • 2月22日清单

    我的清单 1.讲完知识点,并把报纸上知识总结 今天的报纸知识点讲完了,并总结了。学生基础弱,只完成了三篇阅读。知识...

  • 技术干货 | CMake编译配置工具,让编译设计工作更快更高效!

    一、背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结。既然选...

  • 阿里P7大牛整理!Android开发岗还不会这些问题,吐血整理

    一、背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结。既然选...

  • 过年期间的计划

    现在每天是这样: 作文:复习高分句型10句,总结公众号的例句5句,一篇真题扫盲及重写 阅读:两篇真题重写及扫盲➕总...

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

网友评论

    本文标题:Hbase--基础知识点总结(扫盲篇)

    本文链接:https://www.haomeiwen.com/subject/dngtnqtx.html