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

posted @ 2019-05-22 19:54  番薯大大  阅读(179)  评论(0编辑  收藏  举报