hbase优点与数据检索流程
来源:互联网 发布:求素数的java程序 编辑:程序博客网 时间:2024/05/22 13:17
hbase优点
hbase是一个列式存储的非关系型数据库,依赖于zookeeper。数据存储于hdfs上,主节点是HMaster,从节点是HRegionServer.
hbase与关系型数据库相比较优点如下:1. hbase数据存储于hdfs上,可扩展性强。数据条目数可以存储上一条。2. 通过rowkey检索数据,速度可以准实时,达到秒级别。3. 写数据非常快,只要写在Region的memstore内存中即可,不需要重复IO消耗。4. 每份数据都有多份备份,保证数据安全性。5. 从成本上来说关系型数据库要用到商用小型机,价格要几百万非常昂贵。但是hdfs只需要普通的商用server,只要几万一台。
hbase数据模型
region介绍
每个表刚开始只有一个region,region的strartRowKey和endRowKey都是空的。当region的大小超过一定的阀值后,就会按照key的中间值分裂成两个region,老的region下线。比如中间值是111000,则新的2个region如下:
null
region1
111000
region2
null
rowkey按照大小排序,新的rowkey会按照大小插入对应的region
数据检索的三种方式
1)get rowkey2)scan range --> 最多的3)scan
hbase数据检索流程
hbase架构图
客户端对数据的读和写首先连接zookeeper,在zookeeper中找到meta-region-server节点,meta表被哪个RegionServer管理。meta表只有一个region,客户端通过表+rowkey在meta表中找这个表的rowkey被哪个RegionServer管理。meta表保存了对应的主机端口,找到后执行相应的操作。
list_namespace_tables 'hbase'
查看hbase命名空间下的表
scan 'hbase:meta'
查看meta表信息
hbase数据存储
客户端通过zookeeper找到相应的RegionServer后找到对应的region。
HMaster连接zookeeper,知道哪些RegionServer是活着的
在
get /hbase/rs
zNode节点中,一个RegionServer有一个目录[主机,端口,启动时间]
一张表有1个或多个region,region有几个列簇就有几个store。每个store中有一个memstore和0个或多个storefile。storefile是存在hdfs上的二进制文件,读数据先到memory中读,没有在去storefile中读在写数据的时候先往HLog写一份,在往memstore中写一份。当memory达到一定大小后,flush到storefile里面去。
注意:
- 这样做的目的是为了当memstore节点挂掉后,重新启动可以通过HLog恢复
- 当storefile超出一定大小后会分裂成两个storefile
3.只有当多个storefile合并时,原本删除的数据才会真正的删除,之前只是cell打一个标签不让其显示优化:
- 将具备共同IO特性的column放在一个列簇中,提高读取速度
- 一个regionserver管理多个region,每个region都有一个memstore所以regionserver内存可以设置大一点。
老版本是一个regionserver一个HLOG,而新版本可以设置一个region一个HLog。老版本对数据恢复需要分割日志,而新版本可以直接对region的日志做数据还原。但是需要消耗更多的IO,因为要同时打开多个HLog。
数据检索总结
client写入-》存入MemStore,一直到MenStore满-》Flush成一个StoreFile,直至增长到一定阀值-》触发合并操作-》多个storeFile合并后,逐步形成越来越大的storefile-》单个storeFile大小超过一定阀值后,触发split操作,把当前region 分成2个region,region下线。新split出的2个孩子region会被HMaster分配 到相应的HRegionServer上,使得原先的region的压力分流道2个region上
注意:
hbase只是增加数据,所有的更新和删除操作,都是在文件合并阶段做的。所以用户写操作只需要进入内存即可立即返回,从而保证I/0高性能
hbase架构
client端
- 整个HBase集群访问的入口
- 使用HBase采用Rpc机制与HMaster与HMaster和HRegionServer进行通信
- 与HMaster进行通信进行管理类操作
- 与HRegionServer进行数据读写类操作
- 包含访问HBase的接口,并维护cache来加快对HBase的访问
HMaster
Client访问hbase上数据的过程并不需要master参与(寻址访问Zookeeper和HRegion Server)数据读写访问HRegion Server,HMaster仅仅维护table和Region的元数据信息,负载很低
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行主要负责Table和Region的管理工作 管理用户对table的增删查改操作
在HBase的conf目录下创建backup-masters文件,在里面添加其他主机名称。
保存后执行hbase-deamons.sh start master-backup
管理HRegionServer的负载均衡,调整Region分布 Region Split后,负责新Region的分布
- 在HRegionServer停机后,负责失效HRegionServer上Region迁移工作
HRegionServer
- 维护HRegion,处理对这些HRegion的IO请求,向HDFS文件系统中读写数据;
- 负责切分在运行过程中变得过大的HRegion
zookeeper
- 保证任何时候,集群只有一个HMaster
- 存储所有HRegion的寻址入口
- 实时监控HRegionServer的上线和下线功能,并实时通知给HMaster
- 存储HBase的schema和table元数据
- zookeeper Quorum存储-ROOT-(新版本是meta表)地址、HMaster地址
hbase管理zookeeper实力,但是在生产环境中要禁用
注意:hbase-env.xml中,找到
export HBase_managers_zk
设置为false
- hbase优点与数据检索流程
- HBase数据检索流程与数据存储
- Hbase数据存储图解与数据检索流程
- HBase读与写数据流程
- HBase读写数据流程
- 数据存储与检索
- HBase数据读取流程解析
- HBase数据读取流程解析
- PHP数据存储与检索
- Hbase数据批量入库实战流程
- HBase - 数据写入流程解析
- HBase数据的读写流程总结
- HBase学习之数据读取流程详解
- HBase学习之数据读取流程详解
- HBase原理-数据读取流程解析
- HBase - 数据写入流程解析
- HBase - 数据写入流程解析
- HBase原理-数据读取流程解析
- SAP升级项目终于立项了,如何着手准备?
- hdu 2007 平方和与立方和
- 自学Unity之做一个MOBA游戏1——Terrain(地形)
- Oracle 11g RAC更改归档到ASM
- 杭电ACM 1020 Encoding java解析
- hbase优点与数据检索流程
- 江苏电信落地新网络NFV
- ActionBarSherlock使用教程(转)
- SSM框架——使用MyBatis Generator自动创建代码
- zynq移植RT2870调试记录
- [Linux] Sed命令笔记
- 如何简单创建json数据
- Developing iOS 8 Apps with Swift 学习笔记
- 每日一个OpenGL API (二)