HBase简介

实验简介

我们本节课程将要讲述以下内容:

  • HBase的概述及历史
  • HBase的数据模型
  • HBase的系统架构

一、HBase概述

HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务,可以存储海量稀疏的数据,并具备一定的容错性、高可靠性及伸缩性。主要应用场景是实时随机读写超大规模的数据。

HBase在列上实现了BigTable论文提到的压缩算法、内存操作和布隆过滤器。HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以通过REST、Avro或者Thrift的API来访问。

HBase不能取代RDBMS,因为二者的应用场景不同。HBase为了解决海量数据的扩展性,支持简单的增加节点来实现线性扩展,从而在集群上管理海量的非结构化或半结构化的稀疏数据。HBase仅能通过主键(raw key)或主键的range检索数据,支持单行事务。

上图描述Hadoop EcoSystem中的各层系统。其中,HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

二、HBase历史

Apache HBase最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目。下图展示了HBase的发展历程。

三、HBase数据模型

  • 行健(Row Key):表的主键,表中的记录默认按照行健升序排序
  • 时间戳(Timestamp):每次数据操作对应的时间戳,可以看作是数据的版本号
  • 列族(Column Family):表在水平方向有一个或者多个列族组成,一个列族中可以由任意多个列组成,列族支持动态扩展,无需预先定义列的数量以及类型,所有列均以二进制格式存储,用户需要自行进行类型转换。所有的列族成员的前缀是相同的,例如“abc:a1”和“abc:a2”两个列都属于abc这个列族。
  • 表和区域(Table&Region):当表随着记录数不断增加而变大后,会逐渐分裂成多份,成为区域,一个区域是对表的水平划分,不同的区域会被Master分配给相应的RegionServer进行管理
  • 单元格(Cell):表存储数据的单元。由{行健,列(列族:标签),时间戳}唯一确定,其中的数据是没有类型的,以二进制的形式存储。

四、HBase架构

如上图所示,HBase架构中只有一个Master节点,称HMaster,还有多台RegionServer成为HRegionServer,每个RegionServer包含多个Region。

  1. HBase访问接口:Java,REST,Thrift等
  2. Master:集群的管理服务器,为RegionServer分配Region,负责RegionServer的负载均衡,处理schema更新请求
  3. RegionServer:管理HBase的数据存储,维护Region,处理IO请求。
  4. Zookeeper:保证集群的高可用性、存储Region的寻址入口,并实时监控RegionServer的状态,存储HBase的Schema。

可以看到,client访问hbase上数据的过程并不需要Master参与(寻址访问Zookeeper和RegionServer,数据读写访问RegionServer),Master仅仅维护Table和Region的元数据信息,负载很低。

五、HBase访问接口

  1. Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
  2. HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
  3. Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据
  4. REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
  5. Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计
  6. Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase

六、HBase存储格式

HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

  1. HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
  2. HLogFile,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File

七、HBase应用场景

HBase的优势主要在以下几方面:

  1. 海量数据存储
  2. 快速随机访问
  3. 大量写操作的应用

常见的应用场景

  1. 互联网搜索引擎数据存储(BigTable要解决的问题)
  2. 审计日志系统
  3. 实时系统
  4. 消息中心
  5. 内容服务系统

参考文档

时间: 2024-10-13 20:15:14

HBase简介的相关文章

Phoenix(sql on hbase)简介

Phoenix(sql on hbase)简介 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC driver targeting low latency queries over HBase data. Phoenix takes your SQL query, compiles it into a series of HBase scans, and orchestrates the runnin

1.Hbase简介

1. Hbase简介 1.1. 什么是hbase(面向列) HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模 结构化存储集群. HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成 的大型数据. HBASE是Google Bigtable的开源实现,但是也有很多不同之处.比如:Google Bigtable利用GFS作为其文件存储系统, HBASE利用Hadoop

HBase 系列(一)—— HBase 简介

一.Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统. 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化.半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,批量访问和流式访问都做了优化,同时也通过多副本解决了容灾问题. 但是 Hadoop 的缺陷在于它只能执行批处理,并且只能以顺序方式访问数据,这意味着即使是最简单的工作,也必须搜索

Hbase 简介(转)

一. 简介 history started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital HBase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject 2008.10 H

HBase简介(很好的梳理资料)

HBase HBaseHadoop网络应用数据结构NoSQL 一. 简介 history started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital HBase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project and Hba

HBase 简介

本博文的主要内容有: .为什么要引入列族? .COLUMN和COLUMNS的区别 .HBase的索引有哪些? .表.列族.列标识.行键.单元格.版本号.逻辑视图.物理视图.客户端视图    .HBase架构中主要的组件 .HBase具有的特点 和传统数据库不同的是,HBase的表不用定义有哪些列(字段,Column),因为列是可以动态增加和删除的.但HBase表需要定义列族(Column Family).每张表有一个或者多列族,每个列必须且仅属于一个列族.列族主要用来在存储上对相关的列分组,从而

面向列的分布式数据库Hbase简介

Hbase 是一个面向列的分布式数据库.Hbase不是一个关系型数据库,其设计目标是用来解决关系型数据库在海量数据处理中理论和实现的不足和局限.传统的关系型数据库上世纪七八十年代为交易系统建立 ,以满足数据一致性(ACID)为目标,并没有考虑数据规模扩大时的拓展性,和单点系统失效时的可靠性.虽然经过技术的发展,实现了对关系数据库的弥补(并行数据库),但由于理论和实现的约束,拓展从来没超过40个节点的服务器.而Hbase从一开始就为TB和PB级别的海量数据的高速存储而设计,这要求数据能够被分配在数

HBase简介及集群安装

一.Hbase概述 Apache HBase?是Hadoop数据库,是一个分布式,可扩展的大数据存储. 当您需要对大数据进行随机,实时读/写访问时,请使用Apache HBase?.该项目的目标是托 管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上.Apache HBase是一个开源的,分布式 的,版本化的非关系数据库,模仿Google的Bigtable: Chang等人的结构化数据分布式存储系 统.正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HB

Hbase(2)-HBase简介

一. HBase的特点 1. 海量存储 Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据.这与Hbase的极易扩展性息息相关.正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利. 2. 列式存储 这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的.列族下面可以有非常多的列,列族在创建表的时候就必须指定. HBase的面向列存储,有利于分析 MySQL关系型数据库,面向行存储,有利于查询 3. 易扩展 Hbas