一、Hbase出现的缘由及简介自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案。大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像 
Hadoop <http://www.yiibai.com/hadoop/> 的解决方案。
Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。
Hadoop的限制Hadoop只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集,即使是最简单的搜索工作。
当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。Hadoop随机存取数据库
应用程序,如HBase, Cassandra, couchDB, Dynamo 和 MongoDB
<http://www.yiibai.com/mongodb/> 都是一些存储大量数据和以随机方式访问数据的数据库。HBase是什么?
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。
HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。
它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。
人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。
HBase 和 HDFS
HDFSHBase
HDFS是适于存储大容量文件的分布式文件系统。HBase是建立在HDFS之上的数据库。
HDFS不支持快速单独记录查找。HBase提供在较大的表快速查找
它提供了高延迟批量处理;没有批处理概念。它提供了数十亿条记录低延迟访问单个行记录(随机存取)。
它提供的数据只能顺序访问。HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。HBase的存储机制
HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:
* 表是行的集合。
* 行是列族的集合。
* 列族是列的集合。
* 列是键值对的集合。下面给出的表中是HBase模式的一个例子。
RowideColumn FamilyColumn FamilyColumn FamilyColumn Family
 col1col2col3col1col2col3col1col2col3col1col2col3
1            
2            
3            面向列和面向行面向列的数据库是存储数据表作为数据列的部分,而不是作为行数据。总之它们拥有列族。
行式数据库列式数据库
它适用于联机事务处理(OLTP)。它适用于在线分析处理(OLAP)。
这样的数据库被设计为小数目的行和列。面向列的数据库设计的巨大表。下图显示了列族在面向列的数据库:HBase 和 RDBMS
HBaseRDBMS
HBase无模式,它不具有固定列模式的概念;仅定义列族。RDBMS有它的模式,描述表的整体结构的约束。
它专门创建为宽表。 HBase是横向扩展。这些都是细而专为小表。很难形成规模。
没有任何事务存在于HBase。RDBMS是事务性的。
它反规范化的数据。它具有规范化的数据。
它用于半结构以及结构化数据是非常好的。用于结构化数据非常好。HBase的特点
* HBase线性可扩展。
* 它具有自动故障支持。
* 它提供了一致的读取和写入。
* 它集成了Hadoop,作为源和目的地。
* 客户端方便的Java API。
* 它提供了跨集群数据复制。在哪里可以使用HBase?
* Apache HBase曾经是随机,实时的读/写访问大数据。
* 它承载在集群普通硬件的顶端是非常大的表。
* Apache HBase是此前谷歌Bigtable模拟非关系型数据库。 Bigtable对谷歌文件系统操作,同样类似Apache
HBase工作在Hadoop HDFS的顶部。HBase的应用
* 它是用来当有需要写重的应用程序。
* HBase使用于当我们需要提供快速随机访问的数据。
* 很多公司,如Facebook,Twitter,雅虎,和Adobe内部都在使用HBase。二、HBase架构
在HBase中,表被分割成区域,并由区域服务器提供服务。区域被列族垂直分为“Stores”。Stores被保存在HDFS文件。下面显示的是HBase的结构。
注意:术语“store”是用于区域来解释存储结构。HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。主服务器
主服务器是 -
* 分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。
* 处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。
* 通过判定负载均衡以维护集群的状态。
* 负责模式变化和其他元数据操作,如创建表和列。区域区域只不过是表被拆分,并分布在区域服务器。区域服务器区域服务器拥有区域如下 -
* 与客户端进行通信并处理数据相关的操作。
* 句柄读写的所有地区的请求。
* 由以下的区域大小的阈值决定的区域的大小。需要深入探讨区域服务器:包含区域和存储,如下图所示:
存储包含内存存储和HFiles。memstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。
Zookeeper
* Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等
* Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器。
* 除了可用性,该节点也用于追踪服务器故障或网络分区。
* 客户端通过与zookeeper区域服务器进行通信。
* 在模拟和独立模式,HBase由zookeeper来管理。三、Hbase使用场景
    1、基本概念


      HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。

    2、HBase使用场景和成功案例

* 互联网搜索问题:爬虫收集网页,存储到BigTable里,MapReduce计算作业扫描全表生成搜索索引,从BigTable中查询搜索结果,展示给用户。
* 抓取增量数据:例如,抓取监控指标,抓取用户交互数据,遥测技术,定向投放广告等
* 内容服务
* 信息交互参考网址:https://www.yiibai.com/hbase/ <https://www.yiibai.com/hbase/>

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信