Hbase的简单原理

 
 
 
 
 
 
 
1、整体来讲,HBase运行在hadoop之上,除了hbase部分数据存储在自己的内存中,其他的数据都存储在磁盘上(hdfs上);
2、从HBase自身的角度讲有四个重要的组件:
        ①.客户端client,通过客户端可以访问Hbase,进行数据读写
        ②.zookeeper是一个非常核心的组件,存储了hbase一些重要的数据和信息。同时协调HBase中只存一个可用的HMaster.
        ③.HMaster负责HRegionServer的负载均衡
        ④.HRegionServer负责存储实际的数据,并处理client端的读写请求。每个HRegionServer管理若干个Region,每个Region存储多个Store,每个Store对应一个column family,每个column family对应一个MemStore和多个StoreFile,StoreFile的格式是一个HFile,HFile是一个非常核心的存储格式(和word一样是存储格式),所有的StoreFile里面的文件都是以HFile的格式存储在hdfs上。
3、Client不会直接跟HMaster直接进行交互,它是与zookeeper来交互的,比如当client要读写数据的时候,首先会拿到数据的位置,然后找到对应的HRegionServer来存储数据,如果HMaster挂掉以后,仍然可以存储数据,HMaster挂掉以后,系统对外仍然是可用的,只是一些数据的维护操作无法进行,比如当一个HRegion 足够大时,无法进行数据的迁移工作,并不影响client的读写操作,
 
hbase写数据过程
        客户端写入数据时,首先请求zookeeper定位,该将数据写到哪个RegionServer上,RegionServer上有四个组件,HLog,MemStore,StoreFile,HFile,当写数据时,先将数据写到写入到HLog(HLog只能从底部增加,不能修改),然后再讲数据写到MemStore(内存)当中,反馈给client 写已成功。
        每当内存中的数据达到128M的时候,就会触发一个合并数据刷新到硬盘的操作,也就是当MemStore的数据达到128M的时候,会将数据 刷新到StoreFile,然后将数据写到HFile,然后通过HDFS的api将数据写到hadoop集群上,然后删除内存中和Hlog中的数据。对应的hdfs的文件还归此Hregion所有。
        当hdfs上的文件块,达到4块的时候,HMaster将所有数据进行合并,将数据的增删改的操作进行处理,当数据合并以后,新文件(此处命名A文件)小于阈值,然后将新文件存储到hdfs上,当继续对此数据进行操作,会生成新的文件块,当与A文件合并超过阈值,的时候,会进行 拆分,HMaster将拆分的数据分给不同的HRegionServer管理,然后修改META表的信息数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值