HBase
-
NoSql:not only sql,非关系型数据库
-
NoSql是一个通用术语
- 指不遵循传统RDBMS模型的数据库
- 数据是非关系的,且不使用sql作为住哟啊查询语言
- 解决数据库的可伸缩行和可用性问题
- 不针对原子性或一致性问题
-
NoSql和关系型数据库对比
对比 NoSql 关系型数据库 常用数据库 HBase,MongoDB,Redis Oracle,DB2,MySql 存储格式 文档,键值对,图结构 表格式,行和列 存储规范 鼓励冗余 规范性,避免重复 存储扩展 横向扩展,分布式 纵向扩展 查询方式 结构化查询语言sql 非结构化型查询 事务 不支持事务一致性 支持事务 性能 读写性能高 读写性能差 成本 简单易部署,开源,成本低 成本高 -
NoSql的特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
-
NoSql基本概念
- 三大基石:cap,base,最终一致性
- indexing(索引),query(查询)
- MapReduce
- Sharding
-
cap理论:数据库最多支持3个中的2个
- Consistency(一致性)
- 在分布式系统完成某写操作后任何读操作,都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。
- Availability(可用性)
- 一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。
- Partition Tolerance(分区容错性)
- 指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。
- CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的,有违设计的初衷。
- CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。
- AP: 优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。
- Consistency(一致性)
-
BASE
- Basically Avalible(基本可用)
- 保证核心可用
- Soft-state(软状态)
- 状态可以有一段时间不同步
- Eventual Consistency(最终一致性)
- 系统经过一定时间后,数据最终能够达到一致的状态
- 核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性
- Basically Avalible(基本可用)
-
最终一致性
- 最终结果保持一致性,而不是实时一直
- 如账户余额,库存量等数据需要强一致性
- 如catalog等信息不需要强一致性
-
索引和查询
- indexing
- 大多数NoSql是按key进行索引
- 部分NoSql运行二级索引
- HBase使用HDFS,append-only
- 批处理写入Logged
- 重新创建并排序文件
- Query
- 没有专门的查询语言,通常使用脚本语言查询
- 有些开始支持sql查询
- 有些可以使用MapReduce代码查询
- MapReduce
- 不是Hadoop的MapReduce,概念相关
- 可进行数据的处理查询
- Sharding
- 一种分区模式
- 可以复制分片
- 有利于灾难恢复
- indexing
-
NoSql分类
分类 举例 典型应用场景 键值存储数据库 Redis,MemcacheDB,Voldemort 内容缓存等 列存储数据库 Cassandra,HBase 应对分布式存储的海量数据 文档型数据库 CouchDB,MongoDB web应用 图数据库 Neo4j,InfoFrid,Infinite,Graph 社交网络,推荐系统,专注于构建关系图谱 -
HBase概述
- HBase是一个领先的NoSql数据库
- 是一个面向列存储的数据库
- 是一个分布式hash map
- 基于google big table 论文
- 使用HDFS作为存储并利用其可靠性
- HBase特点
- 数据访问速度快,响应时间约为2-20毫秒
- 支持随机读写,每个节点20k-100k+ops/s
- 可扩展性,可扩展到20000+节点
- HBase是一个领先的NoSql数据库
-
HBase应用场景
- 增量数据-时间序列数据
- 高容量,告诉写入
- 信息交换-消息传递
- 高容量,高速读写
- 内容服务-web后端应用程序
- 高容量,高速读写
- 增量数据-时间序列数据
-
HBase物理架构-概述
- HBase采用Master/Slave架构
-
HBase物理架构-HMaster
- HMaster的作用
- 是HBase集群的主节点,可以配置多个,用来实现HA
- 管理分配Region
- 负责RegionServer的负载均衡
- 发现失效的RegionServer并重新分配其上的Region
- HMaster的作用
-
HBase物理架构-RegionServer
- RegionServer负责管理维护Region
-
HBase物理架构-Region和Table
-
HBase逻辑架构-Row
-
RowKey(行键)是唯一的并已排序
-
Schema可以定义合适插入记录
-
每个Row都可以定义自己的列,即使其他Row不适用
- 相关列定义为簇
-
使用唯一时间戳维护多个Row版本
- 在不同版本中值的类型可以不同
-
HBase数据全部以字节存储
-
-
HBase数据管理
-
数据管理目录
- 系统目录表hbase:meta
- 存储元数据等
- HDFS目录中的文件
- Servers上的region实例
- 系统目录表hbase:meta
-
HBase数据在HDFS上
- 可以通过HDFS进行修复File
- 修复路径
- RegionServer>Table>Region>RowKey>列簇
-
-
HBase架构特点
- 强一致性
- 自动扩展
- 当Region变大会自动分割
- 使用HDFS扩展数据并管理空间
- 写恢复
- 使用WAL
- 与Hadoop集成
-
HBase Shell
-
HBase Shell是一种操作HBase的交互模式
-
支持完整的HBase命令集
命令类别 命令 General version, status, whoami, help DDL alter, create, describe, disable, drop, enable, exists, is_disabled, is_enabled, list DML count, delete, deleteall, get, get_counter, incr, put, scan, truncate Tools assign, balance_switch, balancer, close_region, compact, flush, major_compact, move, split, unassign, zk_dump Replication add_peer, disable_peer, enable_peer, remove_peer, start_replication, stop_replication
-
-