hadoop生态系统中的Hbase简单介绍及整理

作者: admin 分类: Hadoop 发布时间: 2018-03-08 11:43  阅读: 388 views

Hbase是一个在HDFS上开发的面向列的分布式数据库,可以实时地随机访问超大规模数据集。

虽然数据库存储和检索的实现可以选择很多不同的策略,但是绝大多数解决办法,特别是关系数据库技术的变种-不是为大规模可伸缩的分布式处理设计的。HBase从另一个方向来解决可伸缩性的问题。它自底向上地进行构建,能够简单地通过增加节点来达到线性扩展。HBase并不是关系型数据库,它不支持SQL,但它能处理RDBMS不能做的事:在廉价硬件构成的集群上管理超大规模的稀疏表。

HBase的典型应用是webtabe,一个以网页URL为主键的表,包含爬取的页面和页面的属性。webtable非常大,行数可以达到十亿级。

Hbase项目是有Powerset公司的xx2006年末发起的。

Hbase应用把数据存放在带标签的表中。表由行和类组成。表格的“单元格”(cell)由行和列的坐标交叉决定,有版本。默认是自动分配版本号的,为Hbase插入单元格时的时间戳。单元格的内容是未解释的字节数组。

表中行的键也是字节数组。所以,任何东西都可以通过表示成字符串或将二进制形式转化为长整型或直接对数据结构进行序列化,作为键值。表中的行根据行的键值进行排序。排序根据字节序进行。所有对标的访问都要通过表的主键。

行中的列被分成“列族”。同一个列族的所有成员具有相同的前缀。一个表的列族必须作为表模式定义的一部分预先给出。但是新的列族成员可以随后按需要加入。

简而言之,HBase表和RDBMS中的表类似,单元格有版本,行是排序的,而只要列族 预先存在,客户端随时可把列添加到列族中去。

Hbase的安装略过。

和HBase集群进行交互,有很多不同的客户端可选择。

JAVA:HBase和Hadoop一样,都是java开发的。

Avro\Rest\Thrift.

 

HBase以键值对的形式存储数据,包含了4种主要的数据操作方式:

1. 添加行或更新数据行

2. 扫描获取某范围内的cells

3. 为某一具体数据行返回对应的cells

4. 从数据表中删除数据行/列,或列的描述信息。



HBase和RDBMS的比较

HBase和其他面向列的数据库常常被拿来和更流行的传统关系数据库进行比较。

Hbase是一个分布式的、面向列的数据存储系统。它通过在HDFS上提供随机读写来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种伸缩性问题。表可以很“高”数十亿数据行;表可以很"宽"数百万列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提供高效的数据结构的序列化、存储和检索。但开发者必须承担重任,选择正确的方式去使用这种存储和检索方式。

典型RDBMS从小到大的生长过程

1). 服务首次提供公开访问

2). 服务越来越受欢迎:数据库收到太多的读请求

3). 对服务的使用继续增多;数据库收到太多的写请求

4). 新的特性增加了查询的复杂度:包含很多链接操作

5). 服务被广泛使用:所有的服务都变得非常慢。

6). 有些查询仍然太慢。

7). 读性能尚可,但写仍然越来越慢

Hbase有以下特性

1).没有真正的索引:行是顺序存储的,每行中的列也是,不存在索引膨胀问题,插入性能和表大小无关

2).自动分期 在表增长的时候,表会自动分裂成区域,并分布到可用的节点上。

3).线性扩展和对于新节点的自动处理 增加一个节点,把它指向现在有集群并运行regionserver.区域自动重新尽心平衡,负载均匀分布

4).普通商用硬件支持 集群可以用1000~5000美金的单个节点搭建,RDBMS需要支持大量I/O更昂贵

5).容错 大量节点意味着每个节点的重要性并不突出。不用担心单个节点失效。

6).批处理 MapReduce集成功能使我们可以用全并行的分布式作业根据“数据的位置”来处理他们

如果你没日没夜的担心数据库(正常运行时间、扩展性问题、速度),应该好好考虑从RDBMS转向HBase.

 



HBase_praxis【实践中可能出现的问题】

1.版本

必须保证运行的Hadoop和HBase版本是兼容的。

2.HDFS

HBase使用HDFS的方式与MapReduce使用HDFS的方式截然不同。在MapReduce中,首先打开HDFS文件,然后map任务流式处理文件的内容,最后关闭文件。在HBase中,数据文件在启动时就被打开,并在处理过程中始终保持打开状态,为了节省每次访问操作打开文件所需的代价。所以碰到一些问题。

a.文件描述符用完

b.datanode上的线程用完(Hadoop的datanode上同时运行的线程数不能超过256这一限值)

c.Sync,必须在有可用sync的HDFS上使用HBase,否则会丢失数据。

3.用户界面

HBase在主控机上运行了一个WEB服务器。它能提供运行中集群的状态视图。默认监听60010端口

可以显示软件版本、集群负载、请求频率、集群表的列表、加入的regionserver等

4.度量

Hadoop有一个度量(metric)系统。可以没过一段时间获取系统重要组件的信息。输出到上下文。

5.模式的设计

HBase的单元格时有版本的,数据行是有序的,只要列族存在,列便可以由客户端随时添加。在为HBase设计模式时,最重要的是要考虑数据的访问方式。所有的数据都是通过主键进行访问。所以在设计时,最主要的问题是知道如何查询这些数据。

a.连接:HBase并没有内置对数据库连接的支持。

b.行键:应该把较多的精力用于设计行的键。

6.计数器

第一个在hbase上部署的产品特性是为stumbleupon.com前段维护计数器。

7.批量加载

HBase有一个高效的“批量加载”工具。它从MapReduce把以内部格式表示的数据直接写入文件系统,从而实现批量加载。所以,加载HBase实例的速度比用HBase客户端API写入数据的方式至少快一个数量级。

 


   原创文章,转载请标明本文链接: hadoop生态系统中的Hbase简单介绍及整理

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读