首页 > 编程知识 正文

哈希图是什么,数据结构哈希表

时间:2023-05-04 07:35:44 阅读:161514 作者:527

主要参考:

《大数据日知录》

3359 Zhan.zhi Hu.com/p/34985026

wqdfs分片后台是指随着数据规约的增大,单机无法容纳明显庞大的数据量,只能依赖大规模的集群来存储和处理数据,因此系统的可扩展性也是一个重点。

当前主流的大数据存储在计算系统中支持横向扩展,通常在增加机器数量上实现水平可扩展性。 与此相对,需要将处理对象庞大的数据以数据分片分割并分配给各机器。 wqdfs分片是数据分片中重要的一种。

本论文涉及的wqdfs瓷砖有wqdfs建模法、虚拟桶、一贯性wqdfs三种。

wqdfs建模方法假设有k台物理机,可以用以下wqdfs函数实现数据切片:

h(key )=hash (key ) mode K

根据求出的结果,决定保存在哪个物理机上。

这种分片方式非常容易实现,但缺乏灵活性。 例如,将物理计算机添加到群集中时,wqdfs函数可能如下所示:

h(key )=hash ) key ) mode ) (k1 ) ) ) ) )。

因此,如果用wqdfs函数来计算,那么前面的数据和物理机之间的所有映射就会打乱,所有数据都需要根据改变的wqdfs函数来重新分配。

在虚拟桶《大数据日知录》中,以Membase数据库为例,如下图所示。

以下是重要的列表:

引入了虚拟桶层,所有数据通过wqdfs函数容纳在对应的虚拟桶中,一个虚拟桶容纳多个数据。 Membase通过内存表管理物理机和虚拟桶的映射,以便一台物理机可以支持多个虚拟桶。 添加新计算机时,只需更改虚拟桶和物理机的映射表即可进行扩展。

一致性wqdfs的关键点:一致性wqdfs将wqdfs的数值空间组成一个按大小前后相连的环形序列。 (wqdfs数值空间范围为0(2) m,下图中m=32 )对于每个机器,可以从其IP和端口号经过wqdfs函数映射到wqdfs数值空间内。 每个机器节点记录环路内前驱节点和后续节点的位置,成为真正的有向环路。

例如,有Object A、Object B、Object C、Object D这4个数据对象,在经过wqdfs计算之后,环境空间中的位置如下。

数据路由:数据切片后,如何查找某条记录的存储位置。

综上所述,一致的wqdfs物理机形成了有向循环,如何通过数据key知道保存在哪个机器上呢?

最直观的方法是key通过带入wqdfs函数计算结果,沿有向环境按顺序寻找。 对于物理机,首先判断是否在自己的管理范围内,如果没有,则交给后集节点继续检索。

这种方法是可行的,但明显是一种低效的搜索方法,在多个物理机之间重复通信会消耗大量资源。 需要以尽可能少的搜索次数找到应该保存的物理机。

因此,一致的wqdfs为每台物理计算机配置了路由表,以加快查找速度。

由于路由表中配置了各节点的位置,物理机发现添加的数据不在自己管理的范围内时,向路由表中查询与该范围对应的物理机,交给该物理机处理。

删除节点已成功完成:

将自身数据转移到后继节点,前驱节点与后继节点直接连接。

异常结束:

切换到这台物理机器的从机。

添加节点在理论上主要包括两个步骤。

将新节点添加到有向循环,并具有自己的前驱节点和后续节点。 重新分布数据。 将新节点需要存储的数据迁移到新节点。 这个过程由所有节点自动完成,称为稳定性检查,每个节点定期执行。 实际操作分为三个步骤。 《大数据日知录》的例子如下。 (

假设您目前有N5和N14两个节点,并且需要加入N8节点。

加入N8前,N5负责0 ~ 5的节点,N14负责6 ~ 14的节点

加入N8后,N5负责0~5的节点,N8负责6 ~ 8的节点,N14负责9 ~14的节点。

1、N8前驱节点连接null,后续节点连接N14。 (这可以触发稳定性检查。)

2、通过稳定性检验,N14的前驱节点与N8连接,N14将6 ~ 8的节点转移到N8。

3、N5连接到N14的前驱节点,即N8。 至此,N9加入了有向环境。

虚拟节点中每个物理机在wqdfs空间中的位置取决于“IP和端口由wqdfs函数计算得到的结果”,机器节点在wqdfs空间中的位置是随机的,因此无法平衡负载。

如下图所示,a存储的值明显比b多。

为了解决这种数据时滞问题,一致哈希算法引入了虚拟节点机制。 也就是说,为每个服务节点计算多个wqdfs,并在计算结果的每个位置放置此服务节点,称为虚拟节点。

具体方法可以通过在服务器的IP或主机名后面添加编号来实现。 如下图所示。

虚拟节点不仅仅是负载均衡问题。

在实际操作中,机器异质性很常见,有高性能、高配置的机器,也有低配置的机器。 虚拟节点允许高配置的计算机管理更多的数据,而低配置的计算机管理更少的数据。

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