Hbas是一个在HDFS上实现的面向列的分布式数据库,非常适合实时地随机读/写超大规模数据集
行,列族,列,主键
Hbase中的行类似于数据库中的行,表中的行根据行的键值(也就是表的主键)进行排序,排序根据字节序进行,所有对表的访问都要通过表的主键
行中的列分成”列族”,所有的列族成员有相同的前缀.如company:name,company:address都是列族company的成员,Hbase中为了方便,使用冒号(:)来分隔列族和列族修饰符.一个表的列族必须作为表模式定义的一部分预先给出,但是新的列族成员可以随后按需加入.例如,目标表中有了列族company,那么客户端可以在更新时提供新的列company:logo,服务端会存储它的值.物理上,所有的列族成员都一起存储在文件系统中,所以说,Hbase是一个面向列族的存储器.由于调优和存储都是在列族这个层次上进行的,所以最好使所有的列族成员都有相同的”访问模式”和大小特征.
简而言之,Hbase表和数据库表类似,行是排序的,只要列族预先定义存在, 客户端随时可以把列添加到列族中去.
区域
Hbase把表水平划成区域,每个区域由表中行的子集构成.一开始,一个表只有一个区域,但是随着表的区域开始变大,,等到开始超过设定的大小阙值,便会在某行的边界上分成两个大小基本相同的新分区.在第一次划分之后,所有加载的数据都放在原始分区所在的那台服务器上,随着表的变大,区域的个数开始增加,有些区域也会被放到集群上的其他节点上.区域是Hbase集群上分布数据的最小单位,每个节点都负责管理表中区域的一个子集,在线的所有区域按次序排列就构成了表的所有内容.
锁
无论对行进行访问的事务涉及多少列,对行的更新都是”原子”的,这使得Hbase锁模型能够尽量简单
Hbase实现
Hbase由一个Master节点负责协调管理一个或多个RegionServer从属机.Master负责启动,把区域分配给注册的RegionServer,恢复RegionServer的故障. Master负载很轻. RegionServer负责零个或多个区域的管理以及响应客户端的读写请求, RegionServer还负责区域的划分,并通知Master有了新的子区域Hbase依赖于Zookeeper.如果区域的分配过程中有服务器崩溃,就通过Zookeeper来协调,分配,在Zookeeper分配事务状态有助于在恢复时可以从崩溃遗留的状态开始继续分配.在启动一个客户端到集群上的连接时,客户端必须至少拿到集群所传递的Zookeeper整体的位置.这样,客户端才能访问Zookeeper的层次,了解集群的属性,如服务器的位置.
运行中Hbase
Hbase中保留着-ROOT-和.META.的特殊目录,它们维护着当前集群上所有区域的列表,状态,位置.ROOT表维护着Meta表的信息,Meta表维护着用户表的信息, Meta表中的项使用区域名作为主键,区域名由所属的表名,区域的起始行,创建的时间戳进行哈希后的结果组成.区域变化时,即分裂,禁用/启用.删除,为负载均衡重新部署机器或由于Regionserver崩溃而重新部署区域时,目录表都会相应进行更新,这样,集群上所以区域的信息都能保持是最新的.
客户端的每一个行操作都要访问三次远程节点:
1. 从Zookeeper获取Master的位置
2. 从Master获取.Meta.表的信息
3. 根据.Meta.表的信息,获取region位置信息
为了减少访问远程节点,Hbase客户端会缓存它们遍历ROOT表时获取的信息和Meta表位置以及用户空间的区域的开始行和结束行,这样不用访问Meta表也能得知区域存放的位置.当客户端碰到错误时会再去查看Meta获取区域的新位置,如果.Meta也移动了,就去查询ROOT表
分享到:
相关推荐
在本文中,我们将详细讲解Hbase的安装过程以及基本操作,特别针对在Linux环境下使用清华大学镜像进行下载的情况。Hbase是一个分布式的、面向列的数据库,常用于大数据存储,是Apache Hadoop生态系统的一部分。以下是...
本文详细介绍了 HBase 的安装流程、基本概念以及如何与 Hadoop 生态系统中的其他组件集成。HBase 作为大数据领域的重要组成部分,为大规模数据的存储和检索提供了强大的支持。通过对 HBase 的深入了解,可以更好地...
- **第3章:分布式HBase、HDFS和MapReduce**:深入探讨HBase如何与HDFS交互,以及如何利用MapReduce进行数据分析。此外,还会介绍HBase的分布式特性,包括数据分片、负载均衡和故障恢复机制。 - **第二部分:高级...
在深入探讨HBase 1.0.3的Part2之前,我们先回顾一下HBase的基本概念。HBase,作为Apache Hadoop生态系统中的一个分布式列式数据库,提供实时读写、强一致性的存储服务。它基于Google的Bigtable设计,适用于海量数据...
HBase支持通过非Java语言的JVM交互、REST、Thrift以及C/C++ Apache HBase Client等多种方式与外部程序进行交互。 ### 性能调优 性能调优包括操作系统、网络、Java、HBase配置、ZooKeeper、Schema设计等方面的优化...
2. **HBase基本概念**: - **Region**:HBase的数据存储单元,一个Region包含一个或多个表的行。 - **RegionServer**:运行在Hadoop集群节点上,负责管理分配给它的所有Region。 - **Master**:HBase主服务器,...
Thrift的IDL(Interface Description Language)文件定义了与Hbase交互的协议,包括表的操作、行键、列族、列限定符等概念。 2. **C#环境准备** 在C#环境中,我们需要安装Thrift的C#绑定库,并使用Thrift编译器将...
HBase的数据模型章节讨论了HBase的数据组织方式,包括概念视图和物理视图。这一部分强调了HBase的三大核心组件:命名空间(Namespace)、表(Table)和列族(ColumnFamily)。它会详细解释HBase中的行(Row)、...
- **客户端**:介绍客户端与 HBase 之间的交互过程。 - **客户端请求过滤器**:解释客户端请求是如何被过滤和处理的。 - **Master**:说明 Master 在 HBase 架构中的角色和职责。 - **RegionServer**:描述 ...
1. **HBase概述**:介绍HBase的基本概念,如其分布式存储模型、表格结构、行键与列族等。 2. **架构详解**:详述HRegionServer、Master节点、Zookeeper的角色及其交互机制。 3. **数据模型**:讲解HBase如何通过Key-...
行**:详细解释了HBase中的行键概念及如何使用行键进行数据访问。 - **24. 列族**:解释了列族的概念,以及为什么它是HBase设计中的一个重要组成部分。 - **25. 单元格**:介绍单元格是HBase中最基本的数据单位。 -...
文档中提供了如何使用Ruby进行HBase Shell脚本编程,以及如何在非交互模式下运行Shell,如何在脚本中使用Shell等等。 ### 数据模型 HBase的数据模型部分是理解HBase特性的核心,它定义了如何组织数据,以及如何...
1. **HBase基础**:书中首先介绍了HBase的基本概念,包括其架构、表模型、行键、列族、时间戳等核心元素。理解这些基础知识是进一步学习HBase的关键。 2. **HBase安装与配置**:书中详细阐述了HBase的安装过程,...
#### 一、HBase简介与基本概念 - **HBase**:HBase是一种分布式、版本化的列式存储系统,基于Google Bigtable论文中的概念开发,作为Apache Hadoop生态系统的一部分。它利用Hadoop HDFS作为其文件系统,并依赖于...
3. **列族数据库HBase概念与基本原理**:理解HBase的行、列族、时间戳和Key-Value存储模式,以及HBase的读写流程。 4. **Sqoop工具的使用**:学习使用Sqoop进行数据导入导出,包括连接数据库、定义导入导出参数、...
- HBase的升级过程需谨慎,每个版本间可能有不兼容的改动,升级时要遵循官方提供的指南。 4. **HBase Shell** - **使用脚本**: HBase Shell是基于JRuby的命令行工具,允许执行HBase操作。 - **Shell技巧**: 学习...
入门部分介绍了HBase的基本概念,包括它的分布式特性以及与Hadoop和ZooKeeper的关系。快速开始章节则为初学者提供了快速搭建和使用HBase环境的指导。 配置章节详细讲解了HBase运行的先决条件,如硬件和软件需求,...
Region是HBase的基本存储单元,负责一部分行键范围内的所有数据。当表中的数据增长时,Region会自动分裂以保持性能。此外,每个Region都有一个唯一的Region Server负责其服务,确保数据读写操作的高并发处理。 ...
本书首先会介绍HBase的基本概念,包括其设计哲学、架构以及与传统关系型数据库的区别。HBase的核心理念是提供高并发、低延迟的数据访问,这得益于它的分布式特性。书中可能会详细解析HBase的表、行、列族、时间戳等...