hbase系列之:初识hbase
一、概述
在hadoop生态圈里,hbase可谓是鼎鼎大名。江湖传言,hbase可以实现数十亿行X数百万列的实时查询,可横向扩展存储空间。如果传言为真,那得好好了解了解hbase。本文从概念上介绍hbase,稍微有点抽象,但这是学习hbase必须要了解的基础理论;如果想直接了解hbase的实操内容,可跳过本博文。
二、hbase介绍
先看看hbase官方的介绍:hbase是hadoop数据库,是一个分布式的,可扩展的大数据存储库;当需要对大数据进行随机,实时读/写访问时,可以使用hbase数据库;hbase的目标是在商业硬件集群上托管非常大的表-数十亿行X百万列;hbase是一个开源的、分布式的、版本化的非关系型数据库,模仿Google的bigtable;正如bigtable利用Google文件系统提供分布式数据存储一样,hbase在hadoop和hdfs上提供类似的功能。
通俗来说:
1、Hbase是一个在HDFS(也可以是普通文件系统)上开发的面向列的分布式数据库,如果需要实时地随机访问超大规模数据集,可以使用HBASE。
2、Hbase能够简单的通过增加节点来达到现行扩展。
3、Hbase不是关系型数据库,不支持SQL。
三、hbase的基本概念
1、Hbase表中的单元格(cell)有版本号,默认情况下自动分配版本号,为数据插入Hbase表单元格的时间戳,单元格的内容是未经解释的字节数组。
2、Hbase中的行是根据键(row key)进行排序的。
3、Hbase中只允许主键建立索引,可以通过几种策略来优化其他字段的查询性能。
4、建表时必须先指定列族,表建好之后列族不可增加,列族中的列可以根据实际需要增加。
5、物理上,所有列族成员都在一起存储,由于调优都是居于列族的,所以所有列族成员都应该有相同的访问模式和大小特征。
6、区域:
①、hbase自动把表水平划分成区域,每个区域由它所属的表、所包含的第一行和最后一行(不包括)三个属性来表示;
②、区域是在hbase集群上分布数据的最小单位;
③、一个太大的而无法放在单台服务器上的表会被放到服务器集群上,其中每个节点都负责管理表所有区域的一个
7、加锁:无论设计多少列,hbase对行的更新都是“原子的”。
四、hbase的作用
1、海量数据存储:能够存储百亿行数据和百万列数据。
2、准实时查询:能够在百毫秒内返回查询数据。
五、hbase的特点
1、容量大:Hbase单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数量级都非常具有弹性。(一般关系型数据库行在500万以下,列在30列一下。)
2、面向列:Hbase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。(实时动态增加列;单独对某一列做一些操作)
3、多版本:Hbase每一列的数据存储有多个Version。
4、稀疏性:为空的列并不占用存储空间,表可以设计得非常稀疏。
5、扩展性:底层依赖于hdfs。如果磁盘空间不够时,增加datanode节点或增加datanode节点的存储即可。
6、高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失:Replication机制保证了在集群出现严重问题时,数据不会发生丢失或损坏。而且Hbase底层使用hdfs,hdfs本身也有备份机制。
7、高性能:底层的LSM数据结构和Rowkey有序排列等架构上的独特设计,使得Hbase有非常高的写入性能。region切分、主键索引和缓存机制使得Hbase在海量数据下具备一定的随机读取性,该性能针对Rowkey的查询可以达到毫秒级别。
六、hbase与关系型数据库的简要比较

七、hbase架构
hbase架构图如下图所示:

- Master
Master负责监视集群中的所有RegionServer实例、转移故障RegionServer、划分区域,并且是所有元数据更改的接口。在分布式集群中,Master通常运行在NameNode上运行。集群中可以存在多个Master(multi-Master),但是只有一个Master处于活跃状态(active),其他Master处于备份状态(Backup),如果活跃Master宕机或者发生异常,将从备份Master中选举出新的活跃Master来接管集群。
- hdfs
通常,Hbase使用hdfs来持久化数据。默认情况下,hbase是把数据存储在本地文件系统中,但是,如果要使用Hbase集群,就需要把Hbase的存储位置指向hdfs集群。
- zookeeper
Hbase依赖zookeeper来实现分布式协调。zookeeper管理hbase:meta目录表的位置以及当前集群的主机地址等信息;当客户端要连接到Hbase集群时,需要通过zookeeper来连接hbase集群。
- RegionServer
RegionServer负责服务和管理区域(region),还负责区域的划分并通知Hbase Master有了新的子区域;RegionServer包含多个region,是直接存储数据的地方,在分布式集群中,RegionServer在DataNode上运行。
八、hbase应用场景
hbase可以用在交通、金融、电商、移动等超大规模数据的领域。
九、总结
hbase为亿级数据秒级响应而生,从底层架构到存储模式,专为超大规模数据的存储而设计,但是查询条件不能多样化。在选择hbase作为数据库时,应考虑其利弊,适应用场景慎重选择。
hbase系列之:初识hbase的更多相关文章
- Hbase入门(一)——初识Hbase
本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索.而这种特性使得Hbase对于实时计算体系的事件存储 ...
- hbase系列之:独立模式部署hbase
一.概述 在上一篇博文中,我简要介绍了hbase的部分基础概念,如果想初步了解hbase的理论,可以参看上一篇博文 hbase系列之:初识hbase .本博文主要介绍独立模式下部署hbase及hbas ...
- HBase 系列(三)HBase Shell
HBase 系列(三)HBase Shell ./hbase shell # 进入 hbase 命令行 (1) HBase 命令帮助 help # 查看 HBase 所有的命令 create # 或 ...
- HBase 系列(二)安装部署
HBase 系列(二)安装部署 本节以 Hadoop-2.7.6,HBase-1.4.5 为例安装 HBase 环境.HBase 也有三种模式:本地模式.伪分布模式.分布模式. 一.环境准备 (1) ...
- Hbase 系列(一)基本概念
Hbase 系列(一)基本概念 HBase 是 Apache 旗下一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.利用 HBase 技术可在廉价 PC 服务器上搭建起大规模的存储化集群.使用 H ...
- HBase 系列(四)—— HBase 集群环境配置
一.集群规划 这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 Regin Server.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoo ...
- HBase 系列(八)——HBase 协处理器
一.简述 在使用 HBase 时,如果你的数据量达到了数十亿行或数百万列,此时能否在查询中返回大量数据将受制于网络的带宽,即便网络状况允许,但是客户端的计算处理也未必能够满足要求.在这种情况下,协处理 ...
- HBase 系列(十)—— HBase 的 SQL 中间层 Phoenix
一.Phoenix简介 Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据.在 Phoenix 之前,如果你要访问 HBase,只能 ...
- HBase 系列(九)——HBase 容灾与备份
一.前言 本文主要介绍 Hbase 常用的三种简单的容灾备份方案,即CopyTable.Export/Import.Snapshot.分别介绍如下: 二.CopyTable 2.1 简介 CopyTa ...
- HBase 系列(三)—— HBase 基本环境搭建
一.安装前置条件说明 1.1 JDK版本说明 HBase 需要依赖 JDK 环境,同时 HBase 2.0+ 以上版本不再支持 JDK 1.7 ,需要安装 JDK 1.8+ .JDK 安装方式见本仓库 ...
随机推荐
- 【CS231N】6、神经网络动态部分:损失函数等
一.疑问 二.知识点 1. 损失函数可视化 损失函数一般都是定义在高维度的空间中,这样要将其可视化就很困难.然而办法还是有的,在1个维度或者2个维度的方向上对高维空间进行切片,例如,随机生成一个权 ...
- TCP 连接管理
实验代码和内容:https://github.com/ZCplayground/Understanding-Unix-Linux-Programming/tree/master/11.socket 明 ...
- Oracle中创建自增字段方法
oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 下面给大家讲个例子: 1.在Oracle中创建一个表: .创建一个表 ) prim ...
- 关于react 官方脚手架使用出现的问题
首先按照官网说明,一路的安装下来,很顺利,然后开始运行吧,提示个错误,缺少index.js 文件 原来是默认给出的文件是App.js 如何更改呢 找到react-script模块文件夹config下 ...
- 区别mouseover与mouseenter?
区别mouseover与mouseenter? * mouseover: 在移入子元素时也会触发, 对应mouseout,进入子元素的时候,父元素显示离开状态 * mouseenter: 只在移入当前 ...
- JPEG图像压缩算法流程详解
JPEG图像压缩算法流程详解 JPEG代表Joint Photographic Experts Group(联合图像专家小组).此团队创立于1986年,1992年发布了JPEG的标准而在1994年获得 ...
- ci钩子
钩子 - 扩展框架核心 CodeIgniter 的钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改 核心文件.CodeIgniter 的运行遵循着一个特定的流程,你可以参考这个页面的 应用程 ...
- 计算机网络-将C网192.168.25.0划分四个子网,计算每个子网的有效IP地址范围和对应网络掩码
首先计算子网掩码: 将256/4=64,主机块大小64 2的6次方=64 根据主机数量计算出掩码的最后一个字节为11000000,用十进制表示掩码为255.255.255.192 由于IP地址结尾全为 ...
- UVALive6443_Alien Abduction Again
题意为给你若干个三次函数,以及每一个函数所分布的区间,由于每个函数的所有的系数都是整数,所以最后的函数在整数点处的值也是整数. 现在每次可以插入函数或者询问区间,现在要求每次询问区间后,所有的函数在这 ...
- 字符串使用replaceAll()方法报异常
对字符串使用replaceAll()方法替换 * ? + / | 等字符的时候会报以下异常 Dangling meta character '*' near index 0 这主要是因为这些符号在正则 ...