您的位置:首页 > 数据库

《HBase权威指南》读书笔记:第一章 简介

2017-05-29 16:00 218 查看
传统的关系型数据库无法存放海量数据,因此HBase诞生,解决海量数据存取难题。当然除了HBase,还有很多其他类型的数据库解决不同的问题。HBase的诞生参考了谷歌的这两篇论文,值得阅读:

The Google File System

MapReduce: Simplified Data Processing on Large Clusters

HBase应用逻辑的基本概念有:

表:表有表名,其含有多个row

row:由row key和多个column组成。行级别的数据是原子性的。

column:储存任意二进制数据。column可以达到上百万个。数据可以有多个版本,每个版本的数据存在cell中。版本可以设置删除策略,支持数量、过期时间策略。

column family:由多个column组成。column family只能有几十个。

HBase支持的操作有:对数据的CRUD、scan、CAS、计数器、coprocessor,还有建表、删表、增加列族、修改列族、删除列族。

CURD:用row key去增删改查

scan:指定row key的范围,批量取数据

CAS:为确保一致性而提供的操作,check and set,确认版本没变过的情况下写入数据

计数器:支持原子性的计数器操作

coprocessor:协处理器,客户端提交代码在服务端运行,更快的处理数据

HBase运维层面的基本概念有:

master节点:负责协调region在各个节点中的分布,并将信息储存在zookeeper中,一个集群内可以起多个master节点,但同一时间只能有一个master掌握实权,其余都是替补。

region server:负责处理针对region的请求。一个region server内可以包含多个region。通常10~1000个region性能最优。客户端直接与region server相连,请求直接发给它。

region:最小负载单元,每个region包含表名、首行key、末行key。也就是说每个region负责一张表的一部分内容。如果region中数据量过多,则会进行自动拆分,分成两个region,然后迁移到别的节点。

HFile:包含多个块,每个块中储存某个column数据的一部分。文件末尾是块的索引。服务启动时将块索引加载到内存中。HFile储存在HDFS中。

架构参考了LSM树(log-structured sort-and-merge-map)。在HBase中,写入的数据先写到write-ahead log,然后放在内存memstore中,等到内存占用达到阈值,做flush,将memstore中的内容写到HDFS成为HFile。当HFile数量较多时,做compation操作,将小文件合并成大文件。这种架构也被ElasticSearch、Cassandra、InfluxDB采用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息