一、概述

  在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的更多相关文章

  1. Hbase入门(一)——初识Hbase

    本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索.而这种特性使得Hbase对于实时计算体系的事件存储 ...

  2. hbase系列之:独立模式部署hbase

    一.概述 在上一篇博文中,我简要介绍了hbase的部分基础概念,如果想初步了解hbase的理论,可以参看上一篇博文 hbase系列之:初识hbase .本博文主要介绍独立模式下部署hbase及hbas ...

  3. HBase 系列(三)HBase Shell

    HBase 系列(三)HBase Shell ./hbase shell # 进入 hbase 命令行 (1) HBase 命令帮助 help # 查看 HBase 所有的命令 create # 或 ...

  4. HBase 系列(二)安装部署

    HBase 系列(二)安装部署 本节以 Hadoop-2.7.6,HBase-1.4.5 为例安装 HBase 环境.HBase 也有三种模式:本地模式.伪分布模式.分布模式. 一.环境准备 (1) ...

  5. Hbase 系列(一)基本概念

    Hbase 系列(一)基本概念 HBase 是 Apache 旗下一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.利用 HBase 技术可在廉价 PC 服务器上搭建起大规模的存储化集群.使用 H ...

  6. HBase 系列(四)—— HBase 集群环境配置

    一.集群规划 这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 Regin Server.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoo ...

  7. HBase 系列(八)——HBase 协处理器

    一.简述 在使用 HBase 时,如果你的数据量达到了数十亿行或数百万列,此时能否在查询中返回大量数据将受制于网络的带宽,即便网络状况允许,但是客户端的计算处理也未必能够满足要求.在这种情况下,协处理 ...

  8. HBase 系列(十)—— HBase 的 SQL 中间层 Phoenix

    一.Phoenix简介 Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据.在 Phoenix 之前,如果你要访问 HBase,只能 ...

  9. HBase 系列(九)——HBase 容灾与备份

    一.前言 本文主要介绍 Hbase 常用的三种简单的容灾备份方案,即CopyTable.Export/Import.Snapshot.分别介绍如下: 二.CopyTable 2.1 简介 CopyTa ...

  10. HBase 系列(三)—— HBase 基本环境搭建

    一.安装前置条件说明 1.1 JDK版本说明 HBase 需要依赖 JDK 环境,同时 HBase 2.0+ 以上版本不再支持 JDK 1.7 ,需要安装 JDK 1.8+ .JDK 安装方式见本仓库 ...

随机推荐

  1. 学习Web Service、wcf、webapi的区别

    csdn:关于wcf,webservice,webapi或者其他服务或者接口有什么区别. wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们 ...

  2. 索引超出了数组界限。 在 System.Collections.Generic.Dictionary`2.Resize

    博问:Dictionary 超出了数组界限 异常: Exception type: IndexOutOfRangeException Exception message: 索引超出了数组界限. 在 S ...

  3. Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)

    一 基础知识 字节  8位半字  16位字    32位 二 解惑 Code, RO-data,RW-data,ZI-data Code为程序代码部分RO-data 表示 程序定义的常量const t ...

  4. charles抓取移动端app数据

    pc端为mac 移动端为android pc端 1.下载charles并安装 安利一个超好的良心网站(好多好用的软件都可以在上面找到,并且免费): http://xclient.info/search ...

  5. [Cnbeta]龙芯处理器性能怎么样

    龙芯处理器性能怎么样?下一代CPU同频性能可达英特尔90% 在高性能处理器领域,英特尔是天花顶一般的存在(先不算地位特殊的IBM公司),国内发展CPU处理器的公司很多,绝大多数实力跟英特尔相比都差很远 ...

  6. 微信小程序 功能函数 把数字1,2,3,4换成春,夏,秋,冬

    let season =‘1,2,3’; // console.log(season.length) if (season){ if (season.length==1){ seasonChe1=se ...

  7. JS 随机整数

    <script>   function GetRandomNum(Min,Max){   var Range = Max - Min;   var Rand = Math.random() ...

  8. 数据库优化之SQL语句优化-记录

    1. 操作符优化 (a) IN 操作符 从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查 ...

  9. Hadoop2.6 安装布置问题总结(单机、分布式)

    在debian7虚拟机上安装hadoop2.6,期间遇到一些问题在此记录一下. 安装参考: Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 Hadoop集群安 ...

  10. 【转】ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别

    转自:http://blog.csdn.net/fanfanjin/article/details/6676566 在iBATIS中 isNull用于判断参数是否为Null,isNotNull相反 i ...