《HBase A NoSQL database》笔记
《HBase: A NoSQL database》笔记
简介
HBase 是一种 NoSQL 数据库,它是Java版本的 Google’s Big Table 实现,它原本是 Hadoop 的子项目,现在已独立出来,并成为 apache 的顶级项目。
HBase 的设计目标是用于存储大规模数据集。HBase 是列式数据库,与传统行式数据库相比,其非常适合用于存储稀疏性的数据。
HBase 是基于 HDFS 实现的。
HBase 和历史
HBase 关键特性:
- 水平扩展
- 分区容错性
- 支持并行处理
- 支持 HDFS 和 MapReduce
- 近实时查询
- 适用于存储大规模数据集
- 适用于存储稀疏型数据(宽表)
- 表的动态负载均衡
- 对于大规模的查询,支持块缓存和布隆过滤器
HBase 发展历史
2007 - Mike Cafarella 发布 BigTable 的开源实现——HBase
2008 ~ 2010 - HBase 成为 Apache 顶级项目。
HBase 数据结构和架构
HBase 表可以用于 MapReduce 任务的输入、输出对象。
HBase 由行、列族、列、时间戳组成。
HBase 表会被分成多个分区,每个分区会定义起始key、结束key。它们被存于 HDFS 文件中。
HBase 的架构通常为一个 master server,多个 region server,以及 ZooKeeper 集群。
- master server
- 在 ZooKeeper 的帮助下,为分区分配 region server,控制 region server 的负载均衡。
- 负责 schema 的变更
- 管理和监控 Hadoop 集群
- region server
- region server 负责处理来自客户端的 CRUD 操作
- region server 包括内存存储和 HFile
- region server 运行在 HDFS 的数据节点上
- region server 有四个核心组件:Block cache(读缓存)、MemStore(写缓存)、WAL、HFile(存储行数据,键值对结构)
- Zookeeper
- 当 region server 宕机并重新工作时,HBase 会使用 ZooKeeper 作为协调工具,对其进行恢复
- Zookeeper 是客户端和 master server 的中心,它维护着 master server 和 region server 注册的元数据信息。例如:有多少有效的 region server;任意 region server 持有哪些 data node
- ZooKeeper 可以用于追踪服务器错误
HBase 和大数据
HBase 相比于其他 NoSQL,最显著的优势在于,它属于 Hadoop 生态体系中的重要一环,被广泛用于大数据领域。但是,近些年,有 MongoDB、Cassandra 等一些数据库挑战着其地位。
HBase 的应用
Facebook 的消息平台使用 HBase 存储数据,每月产生约 13.5 亿条信息。
HBase 还被用于存储各种海量操作数据。
HBase 的挑战和限制
HBase 采用主从架构,一旦 master server 不可用,需要很长时间才能恢复。
HBase 不支持二级索引。