Hbase
1.大数据存储中,数据基础结构各层中常遇到的问题:
消化层ingestion layer(kafka): 高吞吐量,简单的处理逻辑,不能长期存储数据
存储层storage layer:高可靠性,高防灾性,能处理大量数据,处理多种格式数据
2.存储层的OLTP和OLAP:
OLTP:online transaction processing 完成业务需要的数据
OLAP:online analytical processing 分析类型的数据
3.数据存储过程中的问题:
访问量上升,读的速度变慢 ---可以读写分离来解决,master写,所有node可以读
读写分离后度的速度仍然很慢 ---可以增加caching,缓存之前用户读取的数据到内存中,不需要每次读db
存储数据达到物理机上限---数据切割partition,每个partition都可以读写分离,加caching,诞生nosql数据库
4.传统数据库和nosql比较:
集中式 分布式
中到高可用性 高可用性
中速度处理数据 高速度处理数据
严谨的数据结构 数据结构可以严谨(hbase)也可以自定义
可以做复杂数据嵌套处理 只能做简单处理
5.hbase分布式存储数据库---主从结构
hmaster:
- 同一时间只一个活跃的hmaster,可以有hmaster备份,管理多个region server
- 跑在hdfs namenode上
- 监测所有region server状态
- 处理所有原数据的更改,增删改hbase表,不处理原数据本事
- 分配region
- 保持负载均衡
region server:
- 跑在datanode上
- 处理所有IO(读写)请求
- 一个region server大概可以处理1000region
regions:
- 是hbase tables 水平分隔得到region 一个region大概1G
zookeeper:
- 协调cluster(集群) hmaster选举
- 节点的注册
- client每次读写先联系zookeeper,因为zookeeper存储了meta的位置(meta是一个小的表,记录了所有region的信息,meta存在region server上)
- 缓存后到的请求
6.buffer和cache的特点
共性: 都属于内存,数据都是临时的,一旦关机数据都会丢失。
差异:
A.buffer是要写入数据;cache是已读取数据。
B.buffer数据丢失会影响数据完整性,源数据不受影响;cache数据丢失不会影响数据完整性,但会影响性能。
C.一般来说cache越大,性能越好,超过一定程度,导致命中率太低之后才会越大性能越低。buffer来说,空间越大性能影响不大,够用就行。cache过小,或者没有cache,不影响程序逻辑(高并发cache过小或者丢失导致系统忙死除外)。buffer过小有时候会影响程序逻辑,如导致网络丢包。
D.cache可以做到应用透明,编写应用的可以不用管是否有cache,可以在应用做好之后再上cache。当然开发者显式使用cache也行。buffer需要编写应用的人设计,是程序的一部分。
7.hbase 数据模型
- row
- column family
- column
8.data partition
9.hbase特点
- 强一致性,所有读者都看到一样的值
- hbase基于hdfs,会用regions自动分隔数据
- 内置恢复-WAL 是hadoop生态中存储的角色
8.缺点
数据不够大时反而影响性能,最少5个region server
机制比较繁琐,不适合OLTP
WAL replay slow