【云计算与大数据技术】数据分片哈希算法、路由算法、复制算法的讲解(图文解释 超详细)

news2024/11/26 14:59:08

一、大数据的存储问题

随着结构化数据量和非结构化数据量的不断增长,以及分析数据来源的多样化,之前的存储系统设计已经无法满足大数据应用的需求,对于大数据的存储,存在以下几个不容忽视的问题

容量 - “大容量”通常是指可达PB级的数据规模

延迟 - 大数据应用不可避免地存在实时性的问题

安全 - 催生出了一些新的、需要重新考虑的安全性问题

成本 - 只有让每一台设备都实现更高的“效率”,才能控制住成本

灵活性 - 大数据存储系统的基础设施规模都很大,为了保证存储系统的灵活性,使其能 够随时扩容及扩展

大数据存储技术发展

可以分为以下四个阶段

人工管理

文件系统

数据库

Google File System、HDFS、HBase etc

二、海量存储的关键技术

大数据处理面临的首要问题是如何有效地存储规模巨大的数据

通常通过数据分片和数据复制来解决这个问题

 数据分片与路由

对于海量数据 ,将数据进行切分并分配到各个机器中的过程叫分片(shard/partition),即将不同数据存放在不同节点

数据分片后,找到某条记录的存储位置称为数据路由 (routing)

数据分片与路由的抽象模型如下图所示

 

数据分片

把数据的各个部分存放在不同的服务器/节点中,每个服务器/节点负责自身数据的读取与写入操作,以此实现横向扩展,这种技术称为分片

如何存放数据 - 可以实现用户从一个逻辑节点(实际多个物理节点的方式)获取 数据,并且不用担心数据的存放位置

如何保证负载平衡 - 即如何把聚合数据均匀地分布在各个节点中,让它们需要 处理的负载量相等  

哈希分片

采用哈希函数建立 Key-Partition映射,其只支持点查询,不支持范围查询,主要有Round Robin、虚拟桶 、一致性哈希3种算法

Round Robin - 其俗称哈希取模算法,若有k台机器,分片算法如下:                  

H (key ) = hash(key) mod k

优点:实现简单

缺点:缺乏灵活性,若有新机器加入,之前所有数据与机器之间的映射关系都被打乱,需要重新计算  

虚拟桶  - 在Round Robin 的基础上,虚拟桶算法加入一个“虚拟桶层 ”,形成两级映射

所有记录首先通过哈希函数映射到对应的虚拟桶(多对一映射)。虚拟桶和物理 机之间再有一层映射(同样是多对一)

右图是 Membase 虚拟桶的运行

优点:增加了系统扩展的灵活性

缺点:实现相对麻烦

 一致性哈希 - 一致性哈希是分布式哈希表的一种实现算法,将哈希数值空间按照大小组成一个首尾相接的环状序列。

对于一致性哈希可能造成的各个节点负载不均衡的情况,可以采用虚拟节点的方式来解决

在哈希空间可容纳长度为 32 的二进制数值 (m = 32 )空间里,每个机器根据 IP 地址或者端口号经过哈希函数映射到环内

 范围分片

范围分片首先将所有记录的主键进行排序,然后在排好序的主键空间里将记录划分成数据分片,每个数据分片存储有序的主键空间片段内的所有记录

支持范围查询即给定记录主键的范围而一次读取多条记录,范围分片既支持点查询,也支持范围查询。

分片可以极大的提高读取性能,但对于频繁写的应用帮助不大,同时分片也可减少故障范围,只有访问故障节点的用户才会受影响,访问其他的节点的用户不会收到故障节点的影响

路由

那么如何根据收到的请求找到储存的值呢,下面介绍三种方法:

直接查找法 

如果哈希值落在自身管辖的范围内,则在此节点上查询,否则继续往后找,一直找到节点Nx ,x 是大于等于待查节点值的最小编号

路由表法

直接查找法缺乏效率,为了加快查找速度,可以在每个机器节点配置路由表,路由表存储每个节点到每个除自身节点的距离

一致性哈希路由算法

三、数据复制

将同一份数据放置到多个节点(主从 master-slave方式、对等式per-to-per)的过程称为复制

主从复制

master-slave模式,其中有一个 master节点,存放重要数据,通常负责数据的更新,其余节点都叫slave节点,复制操作就是让slave节点的数据与master节点的数据同步 

优点:在频繁读取的情况下有助于提升数据的访问速度,还可以增加多个slave节点进行水平扩展,同时处理更多的读取请求

缺点:数据一致性,如果数据更新没有通知到全部的slave节点,则会导致数据不一致

对等复制

对等复制是指两个节点相互为各自的副本,没有主从的概念

优点:丢失其中一个节点不影响整个数据库的访问

缺点:因为同时接收写入请求,容易出现数据不一致问题。

四、数据一致性

有一个存储系统,其底层是一个复杂的高可用,高可靠的分布式存储系统,一致性模型的定义如下

1:强一致

按照某一顺序串行执行存储对象的读写操作,更新存储对象之后,后续访问总是读到最新值

2:弱一致性

更新存储对象之后,后续访问可能读不到最新值,从更新成功这一时刻算起,到所有访问者都能读到修改后的对象为止,这段时间称为不一致性窗口,在该窗口内访问存储时无法保证一致性

3:最终一致性

最终一致性是弱一致性的特例,存储系统保证所有访问最终读到对象的最新值

创作不易 觉得有帮助请点赞关注收藏~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python+Qt相片更换背景颜色窗体程序

程序示例精选 PythonQt相片更换背景颜色窗体程序 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 QTPython是非常经典的窗体编程组合,功能完善,可视化界面美观易维护,这篇博…

fpga实操训练(按键输入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在fpga上面进行按键的输入,要比stm32编写按键输入要容易的多。这里面最主要的工作就是把led输出和按键输入绑定在一起。当然&#xff0…

MySQL MVCC

1.隔离级别 1.1.理论 1.1.1.序列化(SERIALIZABLE) 如果隔离级别为序列化,则用户之间通过一个接一个顺序地执行当前的事务,这种隔离级别提供了事务之间最大限度的隔离; 1.1.2.可重复读(REPEATABLE READ,MySQL默认的隔离级别) 在可重复读在这一隔离级别上,事务不会被看成是一…

代码随想录刷题记录 day42 打家劫舍 1 2 3

代码随想录刷题记录 day42 打家劫舍 1 2 3 参考:代码随想录 198. 打家劫舍 思想 1.dp[i]表示偷取[0,i]房间内获取的最高的金额 2.递推公式 偷取第i号房间时的价值 dp[i]dp[i-2]nums[i]; 不偷取第i号房间时的价值 dp[i]dp[i-1] 所以递推公式 dp[i]Math.max(d…

【Linux】一文简单了解操作系统在硬件中的作用,解析操作系统是做什么的?

目录前言一.操作系统的介绍二.计算机软件体系结构接口各层接口三.操作系统做什么1.不要让CPU打盹多道程序分时系统多任务系统2.设备驱动操作系统对软硬件进行合理的管理,以达到为上层用户提供良好的,稳定的,安全的运行环境的目的!…

AppScan使用教程

一、安装 IBM AppScan 该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-i…

多时点DID实证流程笔记(Aggregate Effects from Public Works: Evidence from India)

文章、数据及stata代码来源: 链接:https://pan.baidu.com/s/1nBvlYGXkV7ednEx93ge1ZQ 提取码:vs5q本文进行的平行趋势检验、异质性检验均与大部分中文文献的处理方式不同,以及Bacon分解的方法对交叠did的潜在偏误进行诊断的做法也是比较新颖的。另外&a…

林业数字孪生打造实时树木“管家”

数字孪生是物联网、人工智能、虚拟现实、云计算等技术高度融合的综合性集成技术,主要目的是进行数字模型的智能分析、预测,为实体提供决策支持。林业数字孪生应用是智慧林业的具体实现手段,服务于智慧林草的业务需求,从而实现实体…

C语言#include的用法详解(文件包含命令)

#include叫做文件包含命令,用来引入对应的头文件(.h文件)。#include 也是C语言预处理命令的一种。 #include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件&…

AI-多模态-2021:FILIP【一种基于交互的细粒度图文预训练模型】

前言 FILIP(Fine-grained Interactive Language-Image Pretrain)是一种基于交互的细粒度图文预训练模型,用于解决图文双塔匹配模型中的细粒度匹配问题。本文对该论文进行阅读笔记, 论文:https://arxiv.org/abs/2111.…

【C#基础教程】第二十章、事件

目录 事件 1.事件 2.扩展EventArgs类 事件 1.事件 事件的组成:事件由事件发布者和事件订阅者组成。事件内包含一个私有委托。 当事件发布时,事件发布者会发布消息、而事件订阅者会接受到事件已发生的通知,并作出相应的处理。 其中&#xf…

计算机研究生就业方向之考编

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

MyBatis的缓存机制

文章目录1 MyBatis的一级缓存1.1 演示1.2 使一级缓存失效的四种情况2 MyBatis的二级缓存2.1 演示2.2 使二级缓存失效的情况:2.3 二级缓存的相关配置(了解即可)3 MyBatis缓存查询的顺序1 MyBatis的一级缓存 一级缓存是SqlSession级别的&#…

【vue加载16秒优化到2秒】Vue3加载慢的性能优化,打包后页面静态资源chunk-vendors文件过大加载慢响应慢

【写在前面】基于自己之前做vue3项目的时候发现了一个致命的问题,项目部署好了,但是加载起来反应慢半天,控制台一看才发现,有个chunk-vendors的js文件加载了十几秒,这无非是页面体验差到爆炸。今天就针对打包后静态资源…

【密码学基础】混淆电路(Garbled Circuit)

1 概念 混淆电路是一种密码学协议,以实现安全多方计算(MPC)。场景是当多个通信方需要共同输入数据,然后通过同一个函数计算出一个结果,但是,各个通信方都不允许其他人知道自己的输入是什么。混淆电路就能很…

MySQL错误码大全

MySQL的所有错误码可以从MySQL官网查看。 1.MySQL地址 首页网址 2.文档地址 以此点击如下标志。 MySQL8.0文档地址 3.错误码地址 服务码官网地址 点进去之后,可以看到: 分为三大类: Server Error Message ReferenceClient Error Mes…

Java大型建筑建设综合工程项目管理系统源码带原生APP源码 工程管理系统源码 Java手机端工程项目管理系统源码带客户端操作手册

客户端下载: 1、安卓手机端 先下载“PP助手”应用商店,再在PP助手中搜索“star工程”下载安装。 2、苹果手机端 苹果手机APPstore中搜索“star工程”下载安装。 建设综合工程项目管理系统,让公司业务管理实现可记录,可追踪&#…

数字图像处理(入门篇)七 图像数据预处理之灰度变化

目录 一 常用操作 1 反转 2 对比度增强 3 对比度压缩 4 伽马矫正 二 实践 1 反转、对比度增强和对比度压缩 (1) 代码 (2) 结果图 2 伽马矫正 (1) 代码 (2) 结果图 (3) 结论 (4) np.power函数 图像灰度变换:将原始图像中的每一个点的灰度值&#xff0c…

尚医通 (三十三) -------- 阿里云OSS、用户认证与就诊人

目录一、阿里云 oss1. 开通 对象存储 OSS 服务2. 使用 SDK 文档3. 文件服务实现搭建 service-oss 模块测试SDK封装 service 接口封装 controller 接口二、用户认证1. 需求分析2. api 接口3. 前端4. 预约挂号页面调整三、就诊人管理1. 需求分析2. api 接口3. 前端四、平台用户管…

最新阿里云服务器和GPU服务器长期优惠活动价格表

阿里云服务器优惠活动是长期的,在12月优惠活动大促期间云服务器价格会有所调整,主机教程网现在给大家分享最新的阿里云服务器优惠活动价格表。现在阿里云双十一优惠活动刚刚结束,随之而来的就是双12优惠活动,关于阿里云服务器、对…