HBase是一样栽”NoSQL”数据库。HBase是一律种植”NoSQL”数据库。

参考 
http://hbase.apache.org/book.html\#\_architecture

参考 
http://hbase.apache.org/book.html\#\_architecture

Architecture

Architecture

65. Overview

65. Overview

65.1. NoSQL?

HBase是千篇一律种植”NoSQL”数据库。“NoSQL”一般指的是非曲直关系项目数据库,我们解,关系项目数据库支持SQL,也就是说HBase不支持SQL。非关系型数据库来许多种,BerkeleyDB是同样栽本地非关系型数据库,然而,HBase是分布式数据库。从技术上来讲,HBase更像是“Data
Store”,而无是“Data
Base”,因为她缺少许多关系项目数据库的性状,比如:列类型、辅助索引、触发器、查询语言等等。(PS:意思是,从技术之角度说,HBase更像一个数码存储,而未像数据库)

HBase集群扩展通过多RegionServer来实现。如果一个集群从10恢弘及20个RegionServer,那么,不仅仅是储存容量增加一倍,连处理能力吗会增加一倍。对于涉及项目数据库而言,也得以就此scale做到这样,但是得指出的凡,这需要特地之硬件和存储设备。HBase特性如下:

  • 强一致性读写:HBase不是一个“最终一致性”的多少存储。这让其再次可高快的聚众任务。
  • 活动分区:HBase的表通过region被分布于集聚众多被,而region是电动拆分并还分布数据行的。
  • 自动RegionServer容灾
  • Hadoop/HDFS集成:HBase支持HDFS作为其的分布式文件系统
  • MapReduce:HBase支持通过MapReduce基于HBase作为数据源的汪洋底并行处理
  • Java Client API:HBase支持通过Java
    API编程的计来拜访
  • Thrift/REST
    API:HBase也支持Thrift和REST这样的非Java的客户端
  • Block Cache and Bloom Filters
  • Operational
    Management:HBase提供web界面

65.1. NoSQL?

HBase是同一种植”NoSQL”数据库。“NoSQL”一般指的是非曲直关系项目数据库,我们领略,关系项目数据库支持SQL,也就是说HBase不支持SQL。非关系型数据库有成千上万种,BerkeleyDB是同等栽本地非关系型数据库,然而,HBase是分布式数据库。从技术上来讲,HBase更像是“Data
Store”,而不是“Data
Base”,因为她缺少许多干项目数据库的表征,比如:列类型、辅助索引、触发器、查询语言等等。(PS:意思是,从技术之角度说,HBase更像一个数目存储,而非像数据库)

HBase集群扩展通过多RegionServer来实现。如果一个集群从10扩展及20单RegionServer,那么,不仅仅是储存容量增加一倍,连处理能力为会见增加一倍。对于涉及项目数据库而言,也得以就此scale做到这样,但是要指出的凡,这要特地之硬件和存储设备。HBase特性如下:

  • 大一致性读写:HBase不是一个“最终一致性”的多少存储。这使其还合乎高快的集结任务。
  • 活动分区:HBase的表通过region被分布于集聚众多被,而region是电动拆分并更分布数据行的。
  • 自动RegionServer容灾
  • Hadoop/HDFS集成:HBase支持HDFS作为其的分布式文件系统
  • MapReduce:HBase支持通过MapReduce基于HBase作为数据源的汪洋底并行处理
  • Java Client API:HBase支持通过Java
    API编程的艺术来拜访
  • Thrift/REST
    API:HBase也支持Thrift和REST这样的非Java的客户端
  • Block Cache and Bloom Filters
  • Operational
    Management:HBase提供web界面

65.2. When Should I Use HBase?

连无是享有的问题且可用HBase

率先、确保您产生足够的数目。如果你发出大宗的数码实施,那么HBase是一个不错的抉择。如果您不过发生数千或者百万之多寡,那么下传统的涉项目数据库可能再次好,因为实在你的这些多少也许只有待一个要简单只节点就会处理得完,这样的话集众多中之其它的节点就高居空闲状态。

老二、确保您无需要因此到干项目数据库的风味(比如:固定类型的排列、辅助索引、事务、查询语言等等)。基于关系项目数据库构建的使用不可知经过简单的改观JDBC驱动来传到HBase中。从RDBMS到HBase是一心相反的蝇头仿设计。

其三、确保您出足够的硬件。因为当DataNode数量仅次于5底上HDFS将不能够正常工作了。

65.2. When Should I Use HBase?

并无是所有的问题还严丝合缝用HBase

先是、确保您出足的数额。如果你发大宗的多少实施,那么HBase是一个对的选取。如果你偏偏发数千要百万底数据,那么用传统的关联项目数据库可能再度好,因为实际你的这些数量可能只是待一个要简单只节点就会处理得收,这样的话集众多被的旁的节点就处在空闲状态。

亚、确保您无需为此到事关项目数据库的特色(比如:固定类型的排列、辅助索引、事务、查询语言等等)。基于关系项目数据库构建的利用不能够经过简单的更改JDBC驱动来传至HBase中。从RDBMS到HBase是了相反的点滴模仿设计。

老三、确保您产生足够的硬件。因为当DataNode数量仅次于5的时HDFS将非克健康干活了。

65.3. What Is The Difference Between HBase and Hadoop/HDFS?

HDFS是一个分布式的文件系统,适合储存大文件,但她不能够提供高速的个性化的当文书中检索。HBase是构建于HDFS基础之上的,并且它支持针对大表的遭遇之笔录进行高效搜索和创新。HBase内部拿数据存放于HDFS中为索引的“StoreFiles”上坐供应高速搜索。

65.3. What Is The Difference Between HBase and Hadoop/HDFS?

HDFS是一个分布式的文件系统,适合储存大文件,但她不克提供高效的个性化的以文书中检索。HBase是构建于HDFS基础之上的,并且它支持对大表的受之笔录进行快捷搜索和创新。HBase内部将数据存放于HDFS中受索引的“StoreFiles”上坐供应高速搜索。

69. Master

HMaster是Master Server的一个落实。Master
Server负责监视集众多被持有的RegionServer实例,并且她也是独具元数据变动的一个对外接口。在分布式集众多中,典型的Master运行在NameNode那台机器及。

69. Master

HMaster是Master Server的一个落实。Master
Server负责监视集众多被拥有的RegionServer实例,并且她吧是兼具元数据变动的一个对外接口。在分布式集众多中,典型的Master运行在NameNode那台机器上。

69.3. Interface

HMasterInterface接口是操作元数据的要接口,提供以下操作:

  • Table (createTable, modifyTable,
    removeTable, enable, disable)
  • ColumnFamily (addColumn, modifyColumn,
    removeColumn)
  • Region (move, assign, unassign)

  • RegionServer


HRegionServer是RegionServer的实现,它承担服务并管理regions。在分布式集众多被,一个RegionServer通常运行于一个DataNode上。

69.3. Interface

HMasterInterface接口是操作元数据的重中之重接口,提供以下操作:

  • Table (createTable, modifyTable,
    removeTable, enable, disable)
  • ColumnFamily (addColumn, modifyColumn,
    removeColumn)
  • Region (move, assign, unassign)

  • RegionServer


HRegionServer是RegionServer的落实,它承担服务并管制regions。在分布式集众多被,一个RegionServer通常运行于一个DataNode上。

70.1. Interface

HRegionRegionInterface既涵盖数据的操作也暗含region维护的操作

  • Data (get, put, delete, next,
    etc.)
  • Region (splitRegion, compactRegion,
    etc.)

70.1. Interface

HRegionRegionInterface既涵盖数据的操作也含有region维护的操作

  • Data (get, put, delete, next,
    etc.)
  • Region (splitRegion, compactRegion,
    etc.)

70.5. RegionServer Splitting Implementation

region
server处理写请求,它们叫累积在内存中一个深受memstore的地方。一旦memstore文件满了,内容将受描写及磁盘上作为store
file。这个事件称为memstore flush。随着store
file的穿梭积聚,RegionServer将合并它们成为雅文件,以缩减store
file的多少。在历次刷新或者联合之后,region中多少的数据会来变更。RegionServer根据切分策略来查看是否region太特别了或当叫切分。

逻辑上,region切分的操作非常简单。找一个得体的岗位,将region中之数据切分成稀单新的region。然而,这个处理的进程并无略。当切分发生的时刻,数据并无是立为再次写到之心创建的丫头region上。

 

 

70.5. RegionServer Splitting Implementation

region
server处理写请求,它们吃累积在内存中一个深受memstore的地方。一旦memstore文件满了,内容以给写到磁盘上作store
file。这个波称为memstore flush。随着store
file的络绎不绝积聚,RegionServer将合它们变成特别文件,以减掉store
file的数量。在每次刷新或者联合后,region中数的数目会产生转移。RegionServer根据切分策略来查看是否region太好了或者应当吃切分。

逻辑上,region切分的操作非常简单。找一个适用的职位,将region中的数目切分成稀个新的region。然而,这个处理的历程并无略。当切分发生的时候,数据并无是立即为再次写及这中心创建的闺女region上。

 

 

71. Regions

图片 1

71. Regions

图片 2

73. HDFS

图片 3

73. HDFS

图片 4

Data Model

每当HBase中,数据给积存于表中,有行和排。这些术语和关联项目数码产生有层,当然就不是一个老大好的类比,但是它们对我们寻思HBase的意味一个多维的map很有赞助。

Table

  由多尽组成

Row

  HBase中之行由一个row
key和一个还是多单列成。Rows在存储的时段照row
key的字典序存储。正因为如此,row
key的规划虽显得异常关键。基于这一点,相关连的执行相互之间有附近。通常,row
key是一个网站的域名。如果你的row
key是域名,你应该因为倒置的措施囤它们(比如:org.apache.www,org.apache.mail,org.apache.jira等等)。这样的话,所有的apache域名在表中凡近乎的岗位,而休是被域名之第一有分离。

Column

  HBase中之列由一个列簇和一个列修饰符组成,它们之间为此冒号分隔(:)

Column Family

  列簇由同样层层之排和它们的值组成,这是因性考虑的。每一个列簇都起同一密密麻麻的存储属性,比如:是否它的值当被缓存到内存中,它们的数怎样吃削减,它们的row
key怎样被编码,等等。表中的诸一行都发生相同之列簇,即使一个加以的行在给定的列簇上并未存储任何数据。

Column Qualifier

  一个列修饰符被填补加到列簇中为吃指定的数码有提供索引。假设,给一定的列簇是content,那么,一个列修饰符可能是content:html,其它的还来或是content:pdf。虽然,列簇在说明创建的下即便稳了,但是列修饰符是休确定的,而且不同的实行或发生梗塞之列修饰符。

Cell

图片 5

Timestamp

  一个timestamp被形容于每个value的一旁,它是一个value的版修饰符。默认的,timestamp代表数量被RegionServer写副的年华,你呢得以于描绘多少的下指定一个异的timestamp值

Data Model

于HBase中,数据为储存在表中,有行和排。这些术语和涉嫌项目数码发生局部交汇,当然就不是一个老好的类比,但是其对咱们想想HBase的代表一个多维的map很有辅助。

Table

  由多尽组成

Row

  HBase中之行由一个row
key和一个或多单列成。Rows在仓储的下照row
key的字典序存储。正因为这样,row
key的规划虽显得异常重大。基于这一点,相关连的执行相互之间有附近。通常,row
key是一个网站的域名。如果您的row
key是域名,你应当因倒置的章程囤它们(比如:org.apache.www,org.apache.mail,org.apache.jira等等)。这样的话,所有的apache域名在表中是近乎的职务,而休是被域名的率先有的分离。

Column

  HBase中的列由一个列簇和一个列修饰符组成,它们中间用冒号分隔(:)

Column Family

  列簇由同多样的排列和其的价组成,这是冲性考虑的。每一个列簇都生同样雨后春笋之仓储属性,比如:是否它的价应给缓存到外存中,它们的数据怎样给裁减,它们的row
key怎样被编码,等等。表中的各一行还发平等的列簇,即使一个加的行在给定的列簇上尚无存储任何数。

Column Qualifier

  一个列修饰符被填补加至列簇中以为指定的数目有提供索引。假设,给得的列簇是content,那么,一个列修饰符可能是content:html,其它的尚出或是content:pdf。虽然,列簇在说明创建的时段便定位了,但是列修饰符是免确定的,而且不同之推行或发生梗塞的列修饰符。

Cell

图片 6

Timestamp

  一个timestamp被描写在每个value的边上,它是一个value的本修饰符。默认的,timestamp代表数量被RegionServer写副的工夫,你吗可以在描写多少的时段指定一个不等的timestamp值

20. Conceptual View

图片 7

每当是事例中,有一个表叫“webtable”,它含两履数据(com.cnn.www和com.example.www)和老三单列簇(contents,anchor,people)。对于第一尽(com.cnn.www),anchor包含两排(anchor:cssnsi.com,anchor:my.look.ca),contents包含一列(contents:html)。row
key为“com.cnn.www”的实行有5只本子,而row
key为“com.example.www”的履行有1独版。contents:html列包含全体网站的HTML。

每当是表格中之拖欠的但元格并无占空间

生图是一个效,目的在于说明说明地方我们所说之,便于我们了解:

图片 8

20. Conceptual View

图片 9

每当是事例中,有一个表叫“webtable”,它蕴含两履数据(com.cnn.www和com.example.www)和老三只列簇(contents,anchor,people)。对于第一尽(com.cnn.www),anchor包含两排列(anchor:cssnsi.com,anchor:my.look.ca),contents包含一列(contents:html)。row
key为“com.cnn.www”的推行有5只版本,而row
key为“com.example.www”的履行有1个版。contents:html列包含全体网站的HTML。

在这个表格中之拖欠的特元格并无占空间

生图是一个效,目的在讲说明地方我们所说的,便于我们了解:

图片 10

21. Physical View

则,在概念上,表看起如是单排一行的,但大体及,它们是仍列簇被储存的。一个新的列修饰符可以于肆意时刻让填补加到列簇中。

图片 11

于眼前的定义视图中的空的但元格是免深受积存的。因此,请求contents:html列并且timestamp为t8将返回没有价值。然而,如果无点名timestamp,那么某列的大多数分值都见面为归。如果指定多单版本,只有找到的率先只会于归,因为数量是本timestamp降序存储的。

21. Physical View

尽管如此,在概念上,表看起如是单排一行的,但大体及,它们是随列簇被积存的。一个初的列修饰符可以于自由时刻让补充加到列簇中。

图片 12

于前边的定义视图中的亏欠的才元格是休为储存的。因此,请求contents:html列并且timestamp为t8将返回没有价值。然而,如果无点名timestamp,那么某列的大多数分值都见面受归。如果指定多单版,只有找到的首先只见面叫归,因为数量是随timestamp降序存储的。

22. Namespace

一个命名空间是发明的一个逻辑分组

22. Namespace

一个命名空间是表明的一个逻辑分组

23. Table

23. Table

24. Row

实施以row key字典升序存储

24. Row

实践仍row key字典升序存储

25. Column Family

Columns in Apache HBase
are grouped into column
families.

列簇中享有的排列成员还有一致之前缀。例如,列courses:history和courses:math都是courses这个列簇的积极分子。用冒号分隔列簇和列修饰符。列簇前缀必须由得以打印输出的字符组成。列修饰符可以由任意字节组成。列簇必须以表被定义的时便声称好,因此列就不需要在表明创建的时段定义了,并且可天天新增。

物理及,所有的列簇成员给贮存在一道。

25. Column Family

Columns in Apache HBase
are grouped into column
families.

列簇中负有的排列成员还生同样之前缀。例如,列courses:history和courses:math都是courses这个列簇的积极分子。用冒号分隔列簇和列修饰符。列簇前缀必须由得以打印输出的字符组成。列修饰符可以由任意字节组成。列簇必须在说明被定义的时刻便宣称好,因此列就未需要在表创建的当儿定义了,并且可天天新增。

物理及,所有的列簇成员给积存于一起。

26. Cells

A {row, column, version} tuple exactly specifies a cell in
HBase.

26. Cells

A {row, column, version} tuple exactly specifies a cell in
HBase.

27. Data Model Operations

数据模型有4只基本点操作,分别是Get、Put、Scan和Delete。这些操作是用在表上的。

27. Data Model Operations

数据模型有4只重大操作,分别是Get、Put、Scan和Delete。这些操作是下在表上的。

27.1. Get

回来指定行的特性

27.1. Get

回去指定行的属性

27.2. Put

填补加新的行到表中,或者更新都是的行

27.2. Put

补给加新的行到表中,或者更新都在的履行

27.3. Scans

围观特定属性的多行

27.3. Scans

扫描特定属性之多行

27.4. Delete

起表中删除一行

27.4. Delete

起表中删除一行

28. Versions

当HBase中,{row,column,version}可以规定一个单元格。当行和排于缩减成字节的时段,版本用long类型指定。在HBase中,版本为降序存储,所以,最近底值总是第一被察觉。

28. Versions

每当HBase中,{row,column,version}可以确定一个单元格。当行和排被缩减成字节的上,版本用long类型指定。在HBase中,版本为降序存储,所以,最近之价总是第一于发觉。

29. Sort Order

于有的数据模型操作,HBase以数据给积存时之逐一返回。首先按行排序,其次按列簇,再下按列修饰符,最后是timestamp。(PS:前是三独是字典升序,最后一个timestamp是降序)

29. Sort Order

于拥有的数据模型操作,HBase以数据给贮存时之逐一返回。首先按行排序,其次按列簇,再下按列修饰符,最后是timestamp。(PS:前是三独凡是字典升序,最后一个timestamp是降序)

30. Column Metadata

非存储列的头数据,因此,HBase可以支持各级一行来广大排列,行和实践里可以有多种不同的排列。

30. Column Metadata

莫存储列的正数据,因此,HBase可以支撑各国一行来很多列,行及履行里可生出多种不同的排。

31. Joins

HBase不直join操作,至少不支持关系项目数据库那种join。在HBase中,读取数据通过Get和Scan。

31. Joins

HBase不直接join操作,至少不支持关系项目数据库那种join。在HBase中,读取数据通过Get和Scan。

33. Schema Creation

图片 13

33. Schema Creation

图片 14

34. Table Schema Rules Of Thumb

  • regions的尺寸在10~50GB之间
  • cells的深浅不超越10MB
  • 一流的,每个表的列簇以1~3只里头。HBase的阐发不应给规划改为模仿关系项目数据库的发明
  • 一个有1~2单列簇的表所拥有的regions大约于50~100个左右
  • 保君的列簇名字尽可能的少

  • HBase as a MapReduce Job Data Source and Data Sink


HBase可以当作MapReduce作业的数据源。对于读写HBase的MapReduce作业,建议利用TableMapper和TableReducer。

假如您运行HBase作为数据源的MapReduce作业,你得在布置文件中指定表和列名。

当你打HBase读取数据的时节,TableInputFormat请求regions的列表并且作为一个map。

 

34. Table Schema Rules Of Thumb

  • regions的大小在10~50GB之间
  • cells的轻重缓急不跳10MB
  • 首屈一指的,每个表底列簇在1~3只里头。HBase的表不应让规划成为模仿关系项目数据库的阐发
  • 一个有1~2单列簇的表所拥有的regions大约在50~100个左右
  • 维持你的列簇名字尽可能的短

  • HBase as a MapReduce Job Data Source and Data Sink


HBase可以看成MapReduce作业的数据源。对于读写HBase的MapReduce作业,建议使用TableMapper和TableReducer。

只要您运行HBase作为数据源的MapReduce作业,你得在配备文件被指定表和列名。

当你打HBase读取数据的时候,TableInputFormat请求regions的列表并且作为一个map。

 

54. HBase MapReduce Examples

 

54. HBase MapReduce Examples

 

相关文章