第3、确认保障您不要求用到关系型数据库的性状(比如,HBase更像一个多少存款和储蓄

参考 
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。非关系型数据库有为数不少种,Beck雷DB是一种本地非关系型数据库,不过,HBase是分布式数据库。从技术上来讲,HBase更像是“Data
Store”,而不是“Data
Base”,因为它贫乏许多关系型数据库的特征,比如:列类型、扶助索引、触发器、查询语言等等。(PS:意思是,从技术的角度讲,HBase更像三个数额存款和储蓄,而不像数据库)

HBase集群扩大通过增添RegionServer来完成。要是三个集群从10恢弘到十多个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。非关系型数据库有众多种,伯克利DB是一种本地非关系型数据库,可是,HBase是分布式数据库。从技术上来讲,HBase更像是“Data
Store”,而不是“Data
Base”,因为它贫乏许多关系型数据库的特征,比如:列类型、扶助索引、触发器、查询语言等等。(PS:意思是,从技术的角度讲,HBase更像1个数据存款和储蓄,而不像数据库)

HBase集群扩大通过扩展RegionServer来完成。倘诺二个集群从10恢宏到1柒个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是1个科学的取舍。借使你只有数千或许百万的数额,那么使用古板的关系型数据库大概更好,因为实际你的这么些数据或许只供给二个恐怕五个节点就能处理得完,那样的话集群中的其余的节点就处在空闲状态。

其次、确认保障您不需求用到关系型数据库的特点(比如:固定类型的列、帮助索引、事务、查询语言等等)。基于关系型数据库营造的利用无法透过简单的变动JDBC驱动来传输到HBase中。从景逸SUVDBMS到HBase是完全相反的两套设计。

其③ 、确认保障您有丰硕的硬件。因为当DataNode数量低于5的时候HDFS将无法正常办事了。

65.2. When Should I Use HBase?

并不是兼具的标题都契合用HBase

首先、确定保障您有足够的数目。假若您有大批判的数码行,那么HBase是贰个科学的取舍。假设您唯有数千要么百万的多少,那么使用守旧的关系型数据库恐怕更好,因为实在你的那一个多少大概只要求一个要么多少个节点就能处理得完,那样的话集群中的其余的节点就处于空闲状态。

其次、确定保障您不供给用到关系型数据库的特征(比如:固定类型的列、协助索引、事务、查询语言等等)。基于关系型数据库营造的施用不能经过简单的转移JDBC驱动来传输到HBase中。从中华VDBMS到HBase是一心相反的两套设计。

其三 、确认保障您有丰裕的硬件。因为当DataNode数量低于5的时候HDFS将不可能符合规律干活了。

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

HDFS是2个分布式的文件系统,适合储存大文件,但它不能够提供便捷的天性化的在文件中找找。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的1个落到实处。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)

69.3. Interface

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

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

70. RegionServer

HRegionServer是RegionServer的兑现,它肩负服务并管制regions。在分布式集群中,叁个RegionServer经常运维在2个DataNode上。

70. RegionServer

HRegionServer是RegionServer的落到实处,它肩负服务并管理regions。在分布式集群中,2个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切分的操作很不难。找1个适度的职位,将region中的数据切分成八个新的region。不过,那个处理的进程并不不难。当切分爆发的时候,数据并不是当时被重写到那几个心创制的姑娘region上。

 

 

70.5. RegionServer Splitting Implementation

region
server处理写请求,它们被累积在内部存款和储蓄器中1个叫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的象征1个多维的map很有帮扶。

Table

  由多行组成

Row

  HBase中的行由2个row
key和三个或八个列组成。Rows在储存的时候遵照row
key的字典序存款和储蓄。正因为这么,row
key的安排就体现很是重庆大学。基于那点,相关连的行相互之间存在附近。平常,row
key是一个网站的域名。假设你的row
key是域名,你应有以倒置的方法存款和储蓄它们(比如:org.apache.www,org.apache.mail,org.apache.jira等等)。那样的话,全体的apache域名在表中是看似的任务,而不是被子域名的第壹部分分离。

Column

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

Column Family

  列簇由一多级的列和它们的值组成,那是基于质量考虑的。每二个列簇都有一层层的储存属性,比如:是不是它们的值应该被缓存到内部存款和储蓄器中,它们的数目怎么样被核减,它们的row
key怎么样被编码,等等。表中的每一行都有一致的列簇,就算七个加以的行在给定的列簇上尚无存款和储蓄任何数据。

Column Qualifier

  一个列修饰符被添加到列簇中为了给钦赐的多少片段提供索引。假若,给定的列簇是content,那么,七个列修饰符大概是content:html,其余的还有恐怕是content:pdf。即使,列簇在表制造的时候就一定了,可是列修饰符是不分明的,而且区其余行可能有梗塞的列修饰符。

Cell

图片 5

Timestamp

  二个timestamp被写在每一个value的一侧,它是八个value的版本修饰符。暗中认可的,timestamp代表数量被RegionServer写入的年华,你也得以在写多少的时候内定3个不比的timestamp值

Data Model

在HBase中,数据被储存在表中,有行和列。那么些术语和关系型数据有一对重合,当然那不是二个很好的类比,不过它对大家思考HBase的象征2个多维的map很有帮忙。

Table

  由多行组成

Row

  HBase中的行由2个row
key和一个或七个列组成。Rows在储存的时候根据row
key的字典序存款和储蓄。正因为如此,row
key的筹划就显示极度重庆大学。基于那点,相关连的行互相之间存在附近。常常,row
key是叁个网站的域名。假设你的row
key是域名,你应有以倒置的艺术存款和储蓄它们(比如:org.apache.www,org.apache.mail,org.apache.jira等等)。那样的话,全数的apache域名在表中是看似的岗位,而不是被子域名的第壹有的分离。

Column

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

Column Family

  列簇由一二种的列和它们的值组成,那是基于性能考虑的。每3个列簇都有一密密麻麻的蕴藏属性,比如:是不是它们的值应该被缓存到内部存款和储蓄器中,它们的数目如何被压缩,它们的row
key如何被编码,等等。表中的每一行都有一样的列簇,即便三个加以的行在给定的列簇上并未存储任何数据。

Column Qualifier

  三个列修饰符被添加到列簇中为了给钦命的多少片段提供索引。假使,给定的列簇是content,那么,1个列修饰符大概是content:html,别的的还有只怕是content:pdf。即便,列簇在表创立的时候就定位了,可是列修饰符是不明显的,而且分化的行大概有不通的列修饰符。

Cell

图片 6

Timestamp

  二个timestamp被写在各种value的一侧,它是贰个value的本子修饰符。默许的,timestamp代表数量被RegionServer写入的日子,你也能够在写多少的时候钦赐1个不比的timestamp值

20. Conceptual View

图片 7

在那些事例中,有2个表叫“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”的行有七个本子,而row
key为“com.example.www”的行有三个版本。contents:html列包蕴全部网站的HTML。

在那个表格中的空的单元格并不占用空间

下图是一个模拟,意在表明表达地点大家所说的,便于大家清楚:

图片 8

20. Conceptual View

图片 9

在这一个例子中,有1个表叫“webtable”,它涵盖两行数据(com.cnn.www和com.example.www)和多少个列簇(contents,anchor,people)。对于第1行(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”的行有3个本子。contents:html列包涵全部网站的HTML。

在那些表格中的空的单元格并不占用空间

下图是一个仿照,目的在于表明表明方面大家所说的,便于大家明白:

图片 10

21. Physical View

尽管,在概念上,表看起来像是一行一行的,但大体上,它们是比照列簇被积存的。3个新的列修饰符能够在自由时刻被添加到列簇中。

图片 11

在前头的定义视图中的空的单元格是不被储存的。因而,请求contents:html列并且timestamp为t8将回到没有值。但是,假若不点名timestamp,那么有些列的大多数值都会被再次来到。如若钦命八个本子,唯有找到的第①个会被重临,因为数量是根据timestamp降序存款和储蓄的。

21. Physical View

固然,在概念上,表看起来像是一行一行的,但大体上,它们是遵从列簇被贮存的。3个新的列修饰符能够在随机时刻被添加到列簇中。

图片 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

数据模型有五个根本操作,分别是Get、Put、Scan和Delete。这一个操作是利用在表上的。

27. Data Model Operations

数据模型有五个主要操作,分别是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}可以规定2个单元格。当行和列被压缩成字节的时候,版本用long类型钦定。在HBase中,版本以降序存款和储蓄,所以,近日的值总是第壹被发现。

28. Versions

在HBase中,{row,column,version}能够规定二个单元格。当行和列被压缩成字节的时候,版本用long类型钦定。在HBase中,版本以降序存款和储蓄,所以,方今的值总是第二被发觉。

29. Sort Order

对此拥有的数据模型操作,HBase以数量被储存时的逐条重返。首先按行排序,其次按列簇,再其次按列修饰符,最终是timestamp。(PS:前是多个是字典升序,最终1个timestamp是降序)

29. Sort Order

对此全体的数据模型操作,HBase以数据被积存时的种种重回。首先按行排序,其次按列簇,再其次按列修饰符,最后是timestamp。(PS:前是四个是字典升序,最后1个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~一个里头。HBase的表不应该被规划成模仿关系型数据库的表
  • 一个有1~3个列簇的表所拥有的regions大概在50~100个左右
  • 保证你的列簇名字尽恐怕的短

34. Table Schema Rules Of Thumb

  • regions的大小在10~50GB之间
  • cells的轻重缓急不当先10MB
  • 独立的,各样表的列簇在1~3个之间。HBase的表不应该被设计成模仿关系型数据库的表
  • 一个有1~1个列簇的表所拥有的regions大概在50~100个左右
  • 保证您的列簇名字尽大概的短

50. HBase as a MapReduce Job Data Source and Data Sink

HBase能够看作MapReduce作业的数据源。对于读写HBase的MapReduce作业,建议利用TableMapper和TableReducer。

只要你运转HBase作为数据源的MapReduce作业,你供给在布局文件中钦点表和列名。

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

 

50. 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

 

相关文章