黑马程序员技术交流社区

标题: 【广州校区】+【转】+ hbase基本介绍 [打印本页]

作者: leeao    时间: 2020-2-20 15:45
标题: 【广州校区】+【转】+ hbase基本介绍
https://www.jianshu.com/p/53864dc3f7b41.Hbase起源HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。因此,它可以容错地存储海量稀疏的数据。
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
1.1 关系数据库已经流行很多年,并且Hadoop已经有了HDFS和MapReduce,为什么需要HBase?1.2HBase与传统的关系数据库的区别主要体现在以下几个方面:


2.Hbase数据模型
Hbase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳。


3.Hbase的实现原理
HBase的实现包括三个主要的功能组件:
主服务器Master负责管理和维护Hbase表的分区信息,维护Region服务器列表,分配Region,负载均衡。
Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。
客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。
客户端并不依赖Master,而是通过Zookeeper来Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小。

3.1表和Region一个HBase表被划分成多个Region。

开始只有一个Region,后台不断分裂。Region拆分操作非常快,接近瞬间,因为拆分之后Region读取的仍然是原存储文件,直到“合并”过程把存储文件异步地写到独立的文件之后,才会读取新文件。

4.2Region的定位元数据表,又名.META.表,存储了Region和Region服务器的映射关系。当HBase表很大时, .META.表也会被分裂成多个Region
根数据表,又名-ROOT-表,记录所有元数据的具体位置,-ROOT-表只有唯一一个Region,名字是在程序中被写死的。Zookeeper文件记录了-ROOT-表的位置
Hbase的三层结构图如下:


客户端访问数据时的“三级寻址”:
4.Hbase系统架构

客户端
客户端包含访问Hbase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。
Zookeeper服务器
Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”的问题。


Master服务器
主服务器Master主要负责表和Region的管理工作:
Region服务器
Region服务器是Hbase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求。
4.1Region服务器工作原理

Region服务器向HDFS文件系统中读写数据过程:
6.在Hbase之上构建SQL引擎NoSQL区别于关系型数据库的一点就是NoSQL不使用SQL作为查询语言,至于为何在NoSQL数据存储HBase上提供SQL接口,有如下原因:
解决方案:Hive整合HBase
Hive与HBase的整合功能从Hive0.6.0版本已经开始出现,利用两者对外的API接口互相通信,通信主要依靠hive_hbase-handler.jar工具包(Hive
Storage Handlers)。由于HBase有一次比较大的版本变动,所以并不是每个版本的Hive都能和现有的HBase版本进行整合,所以在使用过程中特别注意的就是两者版本的一致性。
7.构建Hbase二级索引HBase只有一个针对行键的索引,访问Hbase表中的行,只有三种方式:
使用其他产品为Hbase行键提供索引功能:









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2