首页 > 编程知识 正文

hbase伪分布式安装,hbase依靠什么存储数据

时间:2023-05-03 08:59:48 阅读:125432 作者:642

版权声明:可以任意转载。 转载时请注明文章的原始来源-ScriptShi

Hadoop数据库(Hadoop database )来自Apache组织,早起隶属于Hadoop项目,是其下的开源子项目,至今已发展成为独立的顶级开源项目。 本文从相对底边的角度谈HBase。

Hbase在Hadoop生态系统中的位置(图片来源: https://blog.csdn.net/u 010608720/article/details/80092260 ) ) ) ) ) ) )。

Hbase是分布式的面向列的开源数据库,是基于GFS的Bigtable数据库的开源实现。 就像谷歌bigtable使用GFS作为文件存储系统,而Hbase使用Hadoop HDFS作为文件存储系统一样。 谷歌运行Mapreduce处理Bigtable的大容量数据,Hbase也利用Hadoop MaReduce处理Hbase的大容量数据; 谷歌bigtable使用Chubby作为协作服务,而Hbase使用Zookeeper作为协作服务。

Hbase的基础使用Hadoop的HDFS作为文件存储系统。 这样,Hbase首先可以实现大量的数据存储能力,同时显著提高数据存储的可靠性。 由于Hbase的高层可以使用Mapreduce并行计算框架,因此对大量数据处理有很大的高效优势。 Hbase融合了HDFS的高容量数据存储能力和Mapreduce的并行计算能力,实现了高容量数据的高效处理,确保了高可靠性。

Hbase作为列数据库存储在键值-value映射和关系数据之间。 存储在Hbase中的大量数据在逻辑上组织为大表,支持动态添加数据列。 此外,每个数据值都由时间戳区分,并包含多个版本的数据。

Hbase的体系结构与HDFS类似,Hbase也遵循简单的主-从体系结构。 由hmasterserver (hbasemasterserver )和hregionserver (hbaseregionserver )组成的服务器群集。 其中HMasterServer充当主服务器,主要是将区域分配给区域服务器、动态加载或卸载区域服务器、区域服务器负载平衡、全局Hregionserver充当Slave的角色,负责与客户端的交互和数据的读写。 体系结构的相似性使Hbase与Hadoop一样易于向外扩展,从而增加了更便宜的计算机并提高了计算和存储能力。

Hbase的体系结构(图像来源: http://www.blogjava.net/d Levin/archive/2015/08/22/426877.html ) ) ) ) ) )。

从HBase的组件结构互联网检索到的组件结构图中,最典型的是下图所示的结构图。 可见,hbase集群主要有四个功能组件。 分别是HMasterServer、HRegionSever、Zookeeper和客户端库。

Hbase的组件结构(图像源: http://www.ai chengxu.com/other/6456119.htm ) ) ) ) ) ) ) )。

主服务器(Hmasterserver ) Hmasterserver是整个群集的管理员,主要管理数据表(Table )和区域,并响应用户的数据请求,将用户指向数据具体任务如下:

存储和管理有关访问数据信息的元数据信息。 管理用户添加、删除、修改和查询表。 调整Region的分布,管理Hregionserver的数据和负载平衡。 负责新的Region的分配。 HRegionserver停机后,负责在禁用的HRegionserver上进行region迁移。 处理对h base方案的更新请求。 Master是Hbase群集的中心点,但Hbase不存在单点故障,因为它可以启动多个Master,Zookeeper的Master Election机制确保始终只运行一个Master。 如果正在运行的主机出现故障,系统将移动到其他主机进行交接。

数据服务器(HRegionserver ) HRegionserver是每个region的管理员和用户服务的提供者。 管理本地数据并响应用户的数据读取请求。 Hbase群集通常在一台计算机上只运行一个区域服务器。

Region的存储和读取Hbase是Bigtable的开源实现,也是列存储数据库。 Hbase将数据存储为表。 如果Hbase数据表的大小超过设置,Hbase将数据表在行方向上划分为多个“区域”,每个区域包含所有数据的子集。 物理上,一个表被划分为多个,每个表都是Region。 Region是Hbase中分布式存储和负载平衡的最小单位。 不同的Region可以位于不同的HRegionserver上,但同一Region不会拆分为多个进行存储

Hregionserver之上。

进一步, Region由多个Store组成, Store是 Hbase的物理存储核心。每个 Store存储表中的1个列簇。Store由两部分组成: Memstore和 StoreFile。 Memstore是有序的主存缓冲区( Sorted Memory Buffer),用户写入的数据首先暂存于 Memstore,当 Memstore写满后会执行 Flush操作,写入外存的一个 Storefile(其底层实现是 Hfile)中。这样, Store file文件数量会持续增长。当Storefile文件数量增长到设定阈值时,会触发合并( compact)操作,将多个 Store File合并成一个Storefile。合并过程中会进行版本合并和数据删除。

Region Server响应用户的数据读取请求。它首先会访问本地的 HMemcache缓存,其中保存着最近更新的数据。如果缓存里面没有该数据,才会到 Store中进行磁盘查找。

恢复管理

Hregionserver使用本地磁盘上的 Hlog文件进行恢复管理。HLog文件记录着所有更新操作。在 Hregionserver启动的时候,会检查本地的Hog文件,查看最近一次执行缓冲区写出操作后是否有更新操作:如果没有更新,就表示数据缓冲区中的所有更新都已经写入磁盘文件中了;如果有更新, Hregionserver会先把这些更新写入高速缓存,然后调用 flush cache过程写入外存磁盘。最后, Hregionserver会删除旧的HLog文件,并开始让用户访问数据。

Region的合并与分裂

Hregionserver通过合并操作将多而小的 StoreFile合并成一个越来越大的 Store File。当单个StoreFile大小超过一定的阈值后,会触发 Hregionserver的Split操作,把当前 Region分裂成两个Region,并且报告给 Master,让它来决定由哪个 Hregionserver存放新拆分而得的 Region。当新的 Region拆分完成并且把引用也删除后, Hregionserver负责删除旧的Region。另外,当两个Region足够小时,Hbase负责将它们合并。

Hbase集群中的分布式协调器(Zookeeper)

Zookeeper是 Hbase集群的协调者。总体来说, Zookeeper的功能有:

保证在任何时于刻,集群中只有一个 master存储所有 Region的入口地址。 Hmasterserver启动时会将 Hbase系统表Root加载到 Zookeeper上,并通过 Zookeeper cluster获取当前系统表的Meta的存储所对应的 Regionserver信息。实时监控 Region Server的状态,将 Hregionserver的上线和下线信息实时通知给 HMasterServer。 Hregionserver会以短暂的方式向 Zookeeper注册,使得 Hmasterberver可以随时感知各个 Hregionserver是否在线的状态信息。存储 Hbase的 schema,包括有哪些表,每个表有哪些列族。 客户端类库( Client Library)

Client Library是封装的用于支持 Hbase数据操作和客户端开发的API集合。

Hbase/Bigtable 与 RDBMS

Hbase是 Bigtable的开源实现,在此我们以 Hbase为例,总结 Hbase、 Bigtable与关系型数据库管理系统 RDBMS的主要不同。Hbase是一个分布式的、基于列模式的映射数据库,它只能表示很简单的键值映射关系。它有如下特点:

数据类型,HBase只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符串。而关系数据库有丰富的类型和存储方式。数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,而传统数据库通常有各式各样的函数和连接操作。存储模式:HBase是基于列存储的,每个列族都由几个文件保存,不同的列族的文件是分离的;传统的关系数据库是基于表结构和模式保存的。数据索引: Hbase没有真正的索引,由于行是顺序存储的,每行中的列也是顺序存储的,因此不存在索引膨胀问题,插入性能和表的大小无关;关系数据库支持多级索引技术,索引页面相对于数据页面来说要小很多,利用索引可以加快查找和连接的速度,但是,在数据更新频繁的应用中,索引维护代价不容忽视。数据维护: Hbase进行更新操作,插入新版本数据时,旧版本的数据仍然会保留,所以实际上是插入了新的数据,属于典型的异地更新策略;传统的关系型数据库则采用原地替换与修改策略,辅以基于日志的恢复策略实现数据库的弹性。可伸缩性: Hbase支持线性扩展,能够方便地增减节点数量,从而修改集群规模和系统容量,新节点加入集群后,运行 Hregionserver, Hbase能够自动实现 Region的负载均衡;传统的关系数据库通常需要通过中间层来实现受控的节点加入或者删除。系统目标: Hbase强调灵活的可伸缩性以支持海量数据存储,强调并行处理、数据的“最终一致性”等思想以支持面向海量数据的实时查询处理;传统的关系型数据库强调事务的ACID特性,强调数据的“实时一致性”,强调基于SQL语言的复杂査询支持能力。

从上面的对比可以看出, Bigtable和Hbase之类的基于列模式的分布式数据库,更适合海量存储和实时查询处理。另外,互联网上的内容是以字符为基础的, Bigtable和 Hbase正是针对互联网应用而开发出来的数据库。 Hbase从设计之初,就强调灵活的分布式架构,用户可以基于异构、廉价的硬件设备组建 Hbase大数据存储和处理集群。

其他

推荐了解的还有:

Cassandra:Facebook开发的nosql,在集群架构上采用P2P环的方式,即一致性散列,节点通讯采用Gossip协议。OceanBase:淘宝自己的nosql,注重CAP中的CA。架构采用Master-Slave模式。Etcdzookeeper: 特点是raft和paxos的实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。