一、概述

  在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. 推荐一个Markdown数学公式编辑器——Haroopad & Mathjax

    要在Markdown里插入数学公式,如果没有好用的的引擎or编辑器,那么只能插入图片了,十分麻烦.这里推荐一个十分强大的数学公式引擎--Mathjax. 配置 有道云笔记目前不支持浏览MathJax公 ...

  2. jieba库的应用

    #!/usr/bin/python# -*- coding:utf-8 -*- import imp,sys imp.reload(sys)from matplotlib.font_manager i ...

  3. CodeM Qualifying Match Q1

    问题描述: 具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小.两段等长音频的 difference 定义为: difference = ...

  4. bash简介1

    bash脚本语言文件格式 第一行#!/bin/bash :定义bash脚本解释器 注释信息:# 代码注释: 缩进,适度添加空白行 bash中的变量介绍: 局部变量  本地变量   环境变量  位置参数 ...

  5. sqlserver 修改表字段长度

    ALTER TABLE Table1 ALTER COLUMN column1 VARCHAR(255)

  6. shutdown&&isTerminated

    shutdownvoid shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务.若已经关闭,则调用没有其他作用.抛出:SecurityException - 如果安全管理器存在并且 ...

  7. [转帖学习] 使用阿里云证书 升级https

    nodejs从http升级到https(阿里云证书的使用)  https://home.cnblogs.com/u/lhyxq/   改天买一个域名自己试试. 升级原因 1.各大搜索引擎中,https ...

  8. 微信小程序组件 自定义弹出框

    <!-- 点击立即抢拼弹出框 --> <view class='add-rob' bindtap="setModalStatus" data-status=&qu ...

  9. 再看select语句

    select语句是整个sql中输出的最后一条语句,这条语句是在最后输出的结果集合上做计算, 这些计算都包括啥东西呢?对每个结果集合做插值计算,在做完group by和where子句之后,那么就是一个一 ...

  10. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css

    今天想在后台封装一下bootstraptree这个插件,引入jquery.js bootstrap.js bootstrap.css bootstrap-tree.js后,我在页面查看脚本错误就连最简 ...