HBase学习记录
来源:互联网 发布:sai mac版安装包 编辑:程序博客网 时间:2024/06/16 13:25
最近对于HBase的学习,先是对于之前学习的Hadoop相关内容的复习,再是对于HBase相关架构,特性的学习,最后是根据需求,使用SimpleHBase进行的开发任务实践,大概完成了对于消费记录的HBase,MySQL双写存储。
hadoop生态圈:
- Pig:一种操作hadoop的轻量级脚本语言,用来快速轻松的处理巨大的数据。
- Hive:满足了数据仓库的需求,适用于离线的进行数据处理与分析工作。
- HBase:作为面向列的数据库运行在HDFS之上,提供随即读写功能。
ZooKeeper:分布式服务框架,提供了分布式环境下的数据一致性服务
HDFS:分布式文件系统,适合运行在通用硬件上的分布式文件系统
两者具体结合到HBase中,记录相关内容,介绍
HBase:
由图,HBase中的存储包括HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、HLog等,HBase中的每张表都通过行键按照一定的范围被分割成多个子表(HRegion),当一个HRegion超过一定大小,会根据规定的规则进行分割,这个过程由HRegionServer管理,而HRegion的分配由HMaster管理。
HMaster的作用:
为Region server分配region
负责Region server的负载均衡
发现失效的Region server并重新分配其上的region
HDFS上的垃圾文件回收
处理schema更新请求
(PS:个人觉得,对应的为HDFS中的NameNode,NameNode维护的是所有文件的命名空间,EditLog,FsImage等信息,对于文件管理。同样负责对于DataNode上的数据分配,负载均衡,备份管理等)HRegionServer:
维护master分配给他的region,处理对这些region的io请求
负责切分正在运行过程中变的过大的region
一个HRegionServer会有多个HRegion和一个HLog
(PS:对应的应是HDFS中的DataNode,负责具体数据的存储)HRegion:Region是HBase中分布式存储和负载均衡的最小单元,同一个Region是不会拆分到多个server上。
Regin所对应的是列族,每一个列都必然属于某一个列族。
随着数据不断插入表,region不断增大,当region的某个列族达到一个阈值(默认256M)时就会分成两个新的region。Store:对表的每个列族创建一个Store实例,每个Store都会有一个MemStore和0个或多个StoreFile与之对应,每个StoreFile都会对应一个HDFS中的存储单位HFile, HFile就是实际的存储文件。
MemStore:存放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值(默认64MB)时,memStore会被flush到文件,即生成一个快照。
StoreFile:memStore内存中的数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存。
(此处与HBase的索引算法LSM相关,原理为把一棵大树拆分成N棵小树,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成一棵大树,以优化读性能。小树对应为MemStore,达到一定大小至可flush的树为StoreFile,实际上将增删改操作都转化了这种一定时间后Impact的操作)HLog:Hadoop Sequence File,录了写入数据的归属信息,除了table和region名字外,还同时包括sequence number和timestamp。
用来做灾难恢复使用,HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复。
SimpleHBase:是Java和HBase之间的轻量级中间件。
(SimpleHBase是偏向于HBase设计的ORM框架,较好的保留了HBase的特性,灵活性较强,但具有学习成本的问题。相对偏向SQL设计ORM框架Phoenix,可以如同使用SQL一般使用HBase,但是相对存在灵活性上的缺陷)
主要包含以下功能:
- 数据类型映射:Java类型和HBase的bytes之间的数据转换。
- 简单操作封装:封装了HBase的put,get,scan等操作为简单的Java操作方式。
- HBase query封装:封装了HBase的filter,可以使用SQL-like的方式操作HBase。
- 动态query封装:类似于mybatis,可以使用xml配置动态语句查询hbase。
insert,update支持: 建立在HBase的checkAndPut之上。 - HBase多版本支持:提供接口可以对HBase多版本数据进行查询,映射。
- HBase原生接口支持。
- HTablePool管理。
- HBase学习记录
- hbase学习记录之scan
- hadoop学习记录(三)HBase基本概念
- HBase记录
- HBase记录
- Hbase学习全程记录——在Ubuntu中安装HBase(修改)
- Hbase学习全程记录——hbase表的创建,存储,读取,删除
- Hbase学习全程记录——使用Eclipse构建HBase开发环境
- [HBase学习]HBase安装
- hbase 交流记录
- hbase 索引记录
- hbase问题记录
- hbase安装记录
- Hbase 错误ERROR记录
- hbase问题记录
- hbase问题记录
- hbase 问题记录
- hbase使用记录
- 百练 6252:带通配符的字符串匹配
- Python机器学习算法——决策树
- 7月工作小结
- JavaScript---继承之原型链
- python 不同OS上的路径转换
- HBase学习记录
- Configuration--settings(三-4)
- 关于微信小程序下拉刷新组件加载图片(三个小点)不显示的问题
- Django 进行数据库操作(1)
- 线程概念,状态及状态之间的关系,实现多线程方法,实现同步线程的方式
- Java.9.Programming
- 使用shell脚本实现希尔排序
- [HDU1241] C
- ViewPager滑动效果