澳门永利娱乐总站第二、确保您不须求用到关系型数据库的性状(比如,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。非关系型数据库有众各样,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)

69.3. Interface

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

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

70. RegionServer

HRegionServer是RegionServer的落到实处,它肩负服务并管制regions。在分布式集群中,一个RegionServer日常运行在一个DataNode上。

70. 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个左右
  • 保持您的列簇名字尽可能的短

34. Table Schema Rules Of Thumb

  • regions的大大小小在10~50GB之间
  • cells的分寸不超越10MB
  • 顶尖的,每个表的列簇在1~3个里头。HBase的表不应有被设计成模仿关系型数据库的表
  • 一个有1~2个列簇的表所拥有的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

 

相关文章