纠删码参数自适应匹配问题ECP-AMP实验方案(中)

6.方法设计

6.1.数据获取

为了收集不同的文件大小和纠删码参数对性能指标的影响,本文在Hadoop平台上进行了模拟实验。Hadoop是一种开源的分布式存储和计算框架,它可以支持不同类型的纠删码,并提供了一些应用程序接口和工具来测试和评估纠删码的性能 。

本文选取了以下六个性能指标作为评价纠删码参数选择的依据:

  1. 数据冗余度(DR):表示存储一个文件所需的编码块总数与数据块总数的比值,反映了存储空间的利用率。数据冗余度越小,表示存储空间利用率越高。在具有k个数据块和m个奇偶校验块的存储系统中,冗余度定义为 DR=m/(k+m)。

  2. 存储成本(SC):表示存储一个文件所需的编码块总数与单位编码块价格的乘积,反映了存储费用的开销。存储成本越小,表示存储费用开销越低。在具有k个数据块和m个奇偶校验块的存储系统中,存储成本定义为 SC=(k+m)/m。

  3. 传输开销(TO):传输开销是指纠删码在读写和恢复过程中消耗的网络带宽资源,它反映了纠删码对网络负载的影响。一般来说,传输开销越低,表示网络负载越低。传输成本TO定义为恢复工作负载传输的数据块数。

  4. 计算开销(CO):计算开销是指纠删码在编码和解码过程中消耗的计算资源,它反映了纠删码对系统性能的影响。计算成本定义为GF乘法/异或算法操作数。

  5. 可靠性(RE):表示在任意m个编码块丢失或损坏的情况下,仍然可以恢复原始文件的概率,反映了数据完整性的保障。可靠性越大,表示数据完整性保障越高。
    R E = ∑ i = 0 m C k + m i p i ( 1 − p ) ( k + m − i ) RE=\sum_{i=0}^{m}C_{k+m}^ip^i(1-p)^{(k+m-i)} RE=i=0mCk+mipi(1p)(k+mi)

  6. 恢复时间(RT):表示从任意k个编码块中恢复原始文件所需的时间,反映了数据恢复速度的效率。恢复性能越大,表示数据恢复速度越快。恢复性能 RP 是通过对恢复工作负载进行解码的平均开销(包括计算和访问成本)来衡量的 。

本文选取了以下四个变量作为影响纠删码参数选择的因素:

  1. 数据大小(filesize):表示一个文件占用的字节数,反映了文件内容的规模。文件大小范围为0MB-1GB,每隔10MB取一个值,共有101个值。
  2. 数据块个数(k):表示一个文件被分割成的数据块的个数,反映了文件分割的粒度。数据块个数范围为2-16,每隔1取一个值,共有15个值。
  3. 冗余块个数(m):表示一个文件生成的冗余块的个数,反映了文件编码的冗余度。冗余块个数范围为1-16,每隔1取一个值,共有16个值。
  4. 故障编码块个数(m’):表示一个文件在传输或存储过程中丢失或损坏的编码块的个数,反映了文件遭受的故障程度。故障编码块个数范围为0-m,每隔1取一个值,共有M+1个值。

本文使用了Reed-Solomon纠删码,这是一种现代的软件系统中随处可见的纠删码技术。

为了模拟不同文件大小和不同纠删码参数下的各项性能指标,我们使用了Hadoop软件作为实验平台。Hadoop是一种分布式计算框架,它可以将大量的数据存储在多个节点上,并通过MapReduce模型进行并行处理。Hadoop提供了一个分布式文件系统(HDFS),它可以支持纠删码技术的存储和访问。

我们搭建了一个由32个节点组成的Hadoop集群,每个节点都具有以下配置:

  • CPU:Intel Core i7-8700K @ 3.70GHz
  • 内存:16GB DDR4
  • 硬盘:1TB SATA
  • 网络:千兆以太网

我们在每个节点上安装了以下软件:

  • 操作系统:Ubuntu 18.04 LTS
  • Hadoop版本:3.2.2
  • PyCharm版本:17.0.8+7-b1000.8 amd64

我们使用了以下数据集作为实验对象:

  • 文件大小范围:0MB-1GB
  • 文件类型:文本
  • 文件数量:100个

我们将这些文件上传到HDFS中,并对每个文件应用不同的纠删码参数(k,m),其中k的范围为2-16,m的范围为1-16。我们使用了RS纠删码来生成和恢复冗余块。我们修改了Hadoop提供的内置纠删码配置来完成纠删码技术的编码和解码过程。

6.2.CRITIC确定权重

为了综合考虑各项性能指标,我们使用了critic客观权重法为这些指标赋权,计算出每种情况下的综合评分。

CRITIC(CRiteria Importance Through Intercriteria Correlation)方法,旨在确定多准则决策(MCDM,MutltipleCritier Decision Making) 问题中相对重要性的客观权重。它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重。考虑指标变异性大小的同时兼顾指标之间的相关性,并非数字越大就说明越重要,完全利用数据自身的客观属性进行科学评价。

对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现。标准差越大,说明波动越大,即各方案之间的取值差距越大,权重会越高;

指标之间的冲突性,用相关系数进行表示,若两个指标之间具有较强的正相关,说明其冲突性越小,权重会越低。

对于 CRITIC 法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近 1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。

critic客观权重法的基本思想是:

  • 如果一个属性的取值变化越大,说明该属性越能反映决策对象的差异性,因此该属性的权重应该越大。
  • 如果一个属性与其他属性的相关性越高,说明该属性越能反映决策对象的整体性,因此该属性的权重应该越大。

6.2.1.归一化处理

步骤一:为了消除不同性能指标的量纲和取值范围的影响,本文对收集的数据进行了归一化处理,使其取值在[0,1]之间。对于正向指标(越大越好),使用以下公式:

对于正向指标:
x i j ′ = X i j − m i n ( X 1 j , X 2 j , . . . , X n j ) m a x ( X 1 j , X 2 j , . . . , X n j ) − m i n ( X 1 j , X 2 j , . . . , X n j ) x'_{ij}=\frac{X_{ij}-min(X_{1j},X_{2j} ,...,X_{nj})}{max(X_{1j},X_{2j},...,X_{nj})-min(X_{1j},X_{2j},...,X_{nj})} xij=max(X1j,X2j,...,Xnj)min(X1j,X2j,...,Xnj)Xijmin(X1j,X2j,...,Xnj)

对于负向指标:
x i j ′ = m a x ( X 1 j , X 2 j , . . . , X n j ) − X i j m a x ( X 1 j , X 2 j , . . . , X n j ) − m i n ( X 1 j , X 2 j , . . . , X n j ) x'_{ij}=\frac{max(X_{1j},X_{2j} ,...,X_{nj})-X_{ij}}{max(X_{1j},X_{2j},...,X_{nj})-min(X_{1j},X_{2j},...,X_{nj})} xij=max(X1j,X2j,...,Xnj)min(X1j,X2j,...,Xnj)max(X1j,X2j,...,Xnj)Xij

其中,x_ij是第i个文件在第j个指标上的原始值,x_ij是第i个文件在第j个指标上的标准化值。

6.2.2指标变异性

步骤二:对于每个指标,计算其差异系数,表示其差异程度。使用以下公式:

以标准差的形式来表现,Sj表示第j个指标的标准差:
{ x j ˉ = 1 n ∑ i = 1 n x i j S j = 1 n − 1 ∑ i = 1 n ( x i j − x ˉ j ) 2 \left\{\begin{matrix} \bar{x_j}=\frac{1}{n}\textstyle\sum_{i=1}^{n}x_{ij} \\ \\ \ S_j= \sqrt{\frac{1}{n-1}\sum_{i=1}^n (x_{ij}-\bar{x}_j)^2} \end{matrix}\right. xjˉ=n1i=1nxij Sj=n11i=1n(xijxˉj)2

在CRITIC法中使用指标差来表示各指标的内取值的差异波动情况,标准差越大表示该指标的数值差异越大,越能放映出更多的信息,该指标本身的评价强度也就越强,应该给该指标分配更多的权重。

6.2.3.指标冲突性

步骤三:对于每两个指标,计算其指标冲突性,表示指标间的相关性程度。使用以下公式:
R j = ∑ i = 1 p ( 1 − r i j ) R_j=\sum_{i=1}^{p}(1-r_{ij}) Rj=i=1p(1rij)

以相关系数的形式来表现,rij表示评价指标i和j之间的相关系数。

使用相关系数来表示指标间的相关性,与其他指标的相关性越强,则该指标就与其他指标的冲突性越小,反映出相同的信息越多,所能体现的评价内容就越有重复之处,一定程度上也就削弱了该指标的评价强度,应该减少对指标分配的权重。

6.2.4.信息量

步骤四:对于每个指标,计算其信息熵权重,表示其重要程度,使用如下公式:
C j = S j ∑ i = 1 p ( 1 − r i j ) = S j ∗ R j C_j=S_j\sum_{i=1}^{p}(1-r_{ij})=S_j*R_j Cj=Sji=1p(1rij)=SjRj

Cj越大,第j个评价指标在整个评价指标体系的作用越大,就应该给其分配更多的权重。

6.2.5.权重

步骤五:对于每个指标,计算其critic权重,表示其综合影响能力。使用以下公式:
W j = C j ∑ j = 1 p C j W_j=\frac{C_j}{\textstyle\sum_{j=1}^{p}C_j} Wj=j=1pCjCj

所以第j个指标的客观权重Wj

6.2.6.赋值

步骤六:对于每种情况,计算其综合评分,表示其总性能。使用以下公式:
s i = ∑ j = 1 m v j ∗ x i j s_i=\sum_{j=1}^{m}v_j*x_{ij} si=j=1mvjxij

si表示第i中情况的综合评分。

得到各个指标使用critic权重法的权重,每个指标会获得一个如下的权重值。

将通过CRITIC方法得到的权重与原指标数据相乘,然后各指标相加得到一个综合指标评分goal,将每组filesize的goal数据做比较,选出最大的goal,然后将所有的filesize都依次得到,形成一张filesize,k,m,goal表,即达成目标。

6.3.DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise),DBSCAN聚类分析是一种基于密度的无监督学习算法,它可以在不需要指定簇的数量的情况下,根据数据点的密度将它们分成不同的簇,并且可以识别出噪声点和异常值。

6.3.1.DBSCAN聚类分析算法的计算公式:

给定一个数据集D={x1,x2,…,xn},其中xi是一个d维的向量,表示第i个数据点的特征。DBSCAN聚类分析需要两个参数:ϵ和MinPts,分别表示邻域的半径和最小密度点数。DBSCAN聚类分析的算法步骤如下:

  1. 从数据集D中任意选择一个未被访问过的点xi,标记为已访问。
  2. 计算xi的ϵ-邻域N(xi)={xj∈D∣d(xi,xj)≤ϵ},其中d(xi,xj)表示xi和xj之间的距离。
  3. 如果∣N(xi)∣≥MinPts,则将xi标记为核心点,并将N(xi)中的所有未被访问过的点加入一个队列Q,表示它们属于同一个簇C。
  4. 如果∣N(xi)∣<MinPts,则将xi标记为边界点或噪声点,并转到步骤6。
  5. 重复以下过程,直到队列Q为空:
    • 从队列Q中弹出一个点xk,标记为已访问。
    • 计算xk的ϵ-邻域N(xk)。
    • 如果∣N(xk)∣≥MinPts,则将xk标记为核心点,并将N(xk)中的所有未被访问过的点加入队列Q,表示它们属于同一个簇C。
    • 如果∣N(xk)∣<MinPts,则将xk标记为边界点。
  6. 如果数据集D中还有未被访问过的点,转到步骤1,否则结束算法。

6.3.2.现实中部署分组

我现在有一张最佳的file,k,m的表,我已经知道了各个文件大小如何选择数据块k,冗余块m的大小,将会得到最小的存储成本和最高的数据可靠性之间的权衡,但是如果说将这张表直接给公司,让公司给每个边缘服务器都部署上

unique((k,m))个文件配置显然是不合理的,因为每个配置文件都会生成对应的存储池,存储池的存在本身就会占用服务器的存储成本,如果在每个边缘服务器都生成unique((k,m))个文件配置对应的存储池,那存储消耗是巨大的,不可取的,故我们给出如下方案。

如,0MB–200MB被分为一大组,即小于140MB的文件的大组文件配置为k,m=(5,3)中,每大组的文件配置按最高的k,m配置向下兼容的方法,剩余数据按类似的方法进行分组,大约分5组即可,分组不能过多,不能超越超越总存储成本。

filesizekmgoal
10210.86
20220.75
30310.78
190430.78
200530.92

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)

续Nginx基础详解4&#xff08;location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖&#xff09;-CSDN博客 目录 14.nginx集群&#xff08;前传&#xff09; 14.1如何理解单节点和集群的概念 14.2单节点和集群的比较 14.3Nginx中的负载均衡…

选GB28181还是RTSP?

好多开发者&#xff0c;搞不清楚什么时候用GB28181&#xff0c;什么时候用RTSP&#xff0c;本文就二者使用场景和区别&#xff0c;做个大概的探讨&#xff1a; 定义与性质&#xff1a; GB28181&#xff1a;是中国国家标准&#xff0c;全称为《公共安全视频监控联网系统信息传输…

AcWing 905:区间选点 ← 贪心算法

【题目来源】https://www.acwing.com/problem/content/907/【题目描述】 给定 N 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。【输入格式】 第一行包…

Hopfield神经网络求解旅行商问题(Traveling Salesman Problem,TSP),提供完整MATLAB代码,复制粘贴即可运行

Hopfield神经网络是以美国物理学家约翰霍普菲尔德&#xff08;John Hopfield&#xff09;的名字命名的。他在1982年提出了这种类型的神经网络模型&#xff0c;因此通常被称为Hopfield网络。Hopfield网络是一种早期的人工神经网络&#xff0c;具有以下特点&#xff1a; 递归连接…

3、Docker搭建MQTT及Spring Boot 3.x集成MQTT

一、前言 本篇主要是围绕着两个点&#xff0c;1、Docker 搭建单机版本 MQTT&#xff08;EMQX&#xff09;&#xff0c;2、Spring Boot 3.x 集成 MQTT&#xff08;EMQX&#xff09;&#xff1b; 而且这里的 MQTT&#xff08;EMQX&#xff09;的搭建也只是一个简单的过程&#x…

linux 安装gitlab

安装环境 CentOS 7.7 (centos6.10会报错)2g内存防火墙关闭 安装步骤&#xff1a; 1 安装gitlab # yum install -y git curl policycoreutils-python openssh-server # 安装依赖 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce…

欧派家居被下调盈利预测:销售费用创新高,零售经销渠道压力不小

《港湾商业观察》王璐 在房地产等多重因素冲击之下&#xff0c;上半年不少家居上市公司交出的业绩答卷都不尽理想&#xff0c;这其中也包括了消费者所熟知的“家居一哥”欧派家居&#xff08;603833.SH&#xff09;。 从2023年下半年开始&#xff0c;胡歌的代言令全民对欧派家…

鸿蒙UI系统组件16——富文本编辑器(RichEditor)

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 RichEditor是支持图文混排和文本交互式编辑的组件&#xff0c;通常用于响应用户的对…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意&#xff1a;在C语言中&#xff0c;如果内存不够…

RISC-V笔记——语法依赖

1. 前言 Memory consistency model定义了使用Shared memory(共享内存)执行多线程(Multithread)程序所允许的行为规范。RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering)&#xff0c;该模型旨在为架构师提供更高的灵活性&#xff0c;以构建高性能可拓展的设计&#x…

【C++栈 贪心 决策包容性】3170. 删除星号以后字典序最小的字符串|1772

本文涉及知道点 C栈 模拟 C贪心 LeetCode3170. 删除星号以后字典序最小的字符串 给你一个字符串 s 。它可能包含任意数量的 ‘’ 字符。你的任务是删除所有的 ’ 字符。 当字符串还存在至少一个 ‘’ 字符时&#xff0c;你可以执行以下操作&#xff1a; 删除最左边的 ’ 字符…

Go语言中的控制结构(四)

Go语言中的控制结构详解 控制结构是编程语言中控制代码执行流程的核心部分&#xff0c;Go语言通过if、for、switch等常见的控制结构&#xff0c;以及独有的defer、panic、recover机制&#xff0c;提供了强大且简洁的控制流管理。本文将详细讲解Go语言中的控制结构&#xff0c;包…

ASR-01和ESP32语音控制LED灯——基于VSCODE编辑器和ESP-IDF环境

一、ASR-01部分 大家不要问我软件哪里来&#xff0c;大家哪里买的的&#xff0c;就去哪里要&#xff0c;淘宝客服一定有&#xff0c;没有你就换一家。 图形化编程 原理&#xff1a;通过接收相匹配语音&#xff0c;赋值给ID&#xff0c;然后通过switch语句&#xff0c;判断ID值…

Linux内核USB3.0驱动框架分析--USB Hub代码分析

一、Linux 下USB Hub热插拔处理 1.1 Linux下USB HUB的驱动的实现和分析&#xff1a; USB设备是热插拔&#xff0c;因此在hub_probe函数中调用hub_configure函数来配置hub&#xff0c;在这个函数中主要是利用函数usb_alloc_urb函数来分配一个urb&#xff0c;利用usb_fill_int_u…

金九银十软件测试面试题(800道)

今年你的目标是拿下大厂offer&#xff1f;还是多少万年薪&#xff1f;其实这些都离不开日积月累的过程。 为此我特意整理出一份&#xff08;超详细笔记/面试题&#xff09;它几乎涵盖了所有的测试开发技术栈&#xff0c;非常珍贵&#xff0c;人手一份 肝完进大厂 妥妥的&#…

【Linux】操作系统基础

1.冯诺依曼体系结构介绍 冯诺依曼体系结构如下&#xff1a; 在上图中「输⼊设备」和「输出设备」⼀般被称为计算机的外设&#xff0c;⽽「存储器」在冯 诺依曼体系结构中表示「内存」 输⼊设备⼀般包括&#xff1a;⽹卡、磁盘、键盘、触摸屏等 输出设备⼀般包括&#xff1a;…

java 自定义填充excel并导出

首先在resources下面放一个excel模板 1. 方法签名和请求映射 RequestMapping(value "/ExportXls") public ResponseEntity<byte[]> rwzcExportXls(HttpServletRequest request, RequestBody JSONArray jsonArray) throws IOException { RequestMapping(val…

剧场的客户端形式区别,APP,小程序,H5的不同优势以及推广方案

剧场的客户端形式区别与推广策略 在数字化时代&#xff0c;剧场的线上化成为大势所趋。不同的线上平台如APP、小程序和H5各有千秋&#xff0c;如何选择最适合自己的平台&#xff0c;并制定有效的推广方案&#xff0c;成为了剧场管理者需要考虑的重要问题。 APP&#xff1a;深度…

【ONE·Web || HTML】

总言 主要内容&#xff1a;HTML基本知识入门&#xff0c;主要介绍了常见的一些标签使用&#xff0c;以及简单案例演示。       文章目录 总言0、前置说明1、认识HTML1.1、是什么1.2、初识 HTML 标签、HTML 文件基本结构1.2.1、相关说明1.2.2、vscode如何快速生成代码 2、HT…

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。

污水排放口细粒度检测数据集&#xff0c;污-水排放口的类型包括10类目标&#xff08;1 合流下水道&#xff0c;2 雨水&#xff0c;3 工业废水&#xff0c;4 农业排水&#xff0c;5 牲畜养殖&#xff0c;6 水产养殖&#xff0c;7 地表径流&#xff0c;8 废水处理厂&…