HBASE基础
1.介绍
- 一种分布式Hadoop数据库
- 支持随机访问和数据检索
- 不适合实时处理,适合海量数据
2.背景
- 关系型数据库(RMDBS):MySQL,Oracle
- 非关系型数据库(nosql):no only sql
- bigtable—>hbase
- gfs—>hfs
3.使用场景
3.1 互联网搜索:bigtable
- bigtable/hbase专门用于搜索引擎的数据存储
- 建立索引的含义:爬虫行为不断,加快检索数据速度
3.1.1 bigdata发明的原因
- 抓取增量数据
- 内容服务
- 信息的交换
4 hbase安装
4.1 步骤
5.hbase 特性
5.1 特性
- 表模型和关系型数据库表模型不同
- 表没有固定的字段定义
- 表中每行存储的数据都是键值对
- 表中有列簇的划分,用户可以指定将那些键值划分到列簇
- hbase的表存在物理存储上,是按照列簇来划分的,不同列簇的数据一定存储在不同的文件中
- 每一行都有一个固定的行键,每一行的行键在表中不能重复
- hbase中的数据,包含行键、键值。。。都是byte类型,本身不负责维护数据类型
- 对事务支持很差
和nosql和RMDBS的区别:
HBAse | RMDBS | |
---|---|---|
数据类型 | 只有字符串 | 丰富的数据类型 |
数据类型 | ||
数据类型 | ||
数据类型 |
hbase表模型
一个表(表名)
rowkey,行键不重复
多个colum family
cell 对应一个kv
存储多个历史版本
数据如果太大,会被横向切分成脱肛额region(用rowkey范围标识),不同region的数据存储在不同的文件中
hbase会对插入的数据按顺序存储:首先按照行键排序;同一行礼的kv会按照列簇排序,再按照kv排序
5.2 工作机制
- client:客户端,访问hbase的主键都可以是客户端。sh/py等文件都可以。
- ZK:一个集群。
监控master。保证一个集群中有且仅有一台hmaster是存活的,为了高可用
存储所有region的寻址入口。
实时监控region server的状态。感知regionserver的上下限,实时通知hmaster.还会存储hbase的部分元数据。
- hmaste:
整个hbase主机。为regionmaster分配region。负责regionserver的负载均衡。
负责region的重新分配。
hdfs的垃圾回收
schema的更新请求
- regionserver
维护master分配给他的region
负责处理client对region的读写请求并和HDFS进行交互
负责具体的关于region的切分
- hlog
会对HBASE所有操作进行记录,当有插入操作,先将操作写入到日志,然后再写源数据库
- region
表的一部分
hbase分布式存储和负载均衡的最小单元
- store
列簇
- memorystore
内存缓冲区。专门用于将数据批量刷新到HDFS中。默认为128M(内存缓冲区)
- hfile/storefile
hbase中的文件都会以hfile的形式存储到HDFS中。