当前位置: 首页 > 科技观察

OpenHarmony吃纸俱乐部—云计算数据压缩解决方案

时间:2023-03-14 12:30:48 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com【这个值得期待】Hadoop性能优化系统和Spark框架。云计算重复数据删除技术减少了冗余。压缩框架Ares如何统一不同的算法。在线数据压缩“摇摆门趋势”。揭开新移动云存储SDM的神秘面纱。【技术DNA】前言近年来,摄像头、卫星、地震监测等传感设备产生了大量的流式数据。云计算技术使这些流式数据的存储、访问和管理变得更加容易,并降低了成本。其中,云存储系统成为在各种云服务器上存储数据块的一种很有前途的技术,其主要机制之一就是数据复制。数据复制的目标是解决云存储中数据访问的可用性、可靠性、安全性、带宽和响应时间等问题,使数据密集型项目获得卓越的性能。但是,既然是复制,难免会产生过多的重复副本,造成资源的浪费。因此,一种通过去除重复副本来减少云存储系统中数据占用量,实现数据压缩,避免资源浪费的重复数据删除技术应运而生。根据典型的传统分类方法,这种重复数据删除技术可以分为两种类型:基于增量和基于散列。同一个目标,前者基于消除相似性,后者基于加密函数。在另一个分类中,这种重复数据删除技术可以分为基于服务器和基于客户端。前者是在服务端收到数据后完成剔除冗余数据的操作,而后者是在发送数据前在客户端检查数据是否重复。以上内容将在后面的文章中一一分析,但是在开始之前,我们还是需要了解一下云计算的一些周边内容。云计算的背景是存储在云端的数字数据量不断增加,需要更多的存储空间和高效的技术来处理这些数据。那么什么是云计算?是不是像上图那样把网线连接到云端进行计算?当然不是,这是形象比喻。云计算提供了一种新的互联网技术方法,利用互联网和中央远程服务器管理资源和应用。许多最终用户以最低的成本使用这项创新,无需安装即可访问该应用程序。主要优点:容错处理、快速存储容量、大带宽、允许使用Internet访问远程信息和文件。问题:云服务中最重要、最典型的是信息存储服务。常见的云存储提供商:Dropbox、谷歌的GoogleDrive、微软的OneDrive和亚马逊的AWS等。云计算和大数据是近六七年来流行的两个概念。很多时候,两者是捆绑在一起讨论的。大数据就是对海量数据进行分析和处理,发现隐藏在这些数据背后的潜在联系,洞察其内部过程,进而从这些数据中转化或推导出更有价值的信息,最终为用户提供决策信息。帮助。日常工作和生活中的典型表现就是“看什么就发什么”:当我们刷一些娱乐类或者新闻类的APP时,看到自己感兴趣的内容难免会停下来停留片刻,也许你也会直接搜索相关主题。这时候大数据已经完成了打标,给你的ID打上相应的标签。根据内容相关性或背景定位信息的频率,标签也会有所不同。虽然感觉自己干净得像一张白纸,但在平台的全闭环下,大数据总能准确捕捉和震撼我们。这个时代的人没有隐私。技术是中性的,它是否有益取决于如何使用它。地图导航应用中基于大数据的实时交通流量分析极大地方便了出行。针对近两年不断发生的一些事件,隐私保护也受到了相关部门的重视。因此,不少APP设置相继提供了关闭“个性化”的入口,可以在一定程度上缓解大数据对个人生活的侵扰。云计算本质上是一种分布式计算。通过任务的分发,实现多端并行计算,最终合并计算结果。它提供了一个虚拟化的计算资源池。存储、应用程序、内存、处理能力和服务都是可用于在用户需要时请求这些资源的实例。其中,云服务通常分为平台即服务(PaaS)、软件即服务(SaaS)和基础设施即服务(IaaS)三种模式。选择匹配。此外,基于云计算的思想,还衍生出雾计算、边缘计算、移动边缘计算(MEC)和移动云计算(MCC)。2015年,迅雷推出基于云计算的产品“钱钱宝”。用户只需连接家中的路由器,即可收集和处理闲置带宽,将其转化为创新的CDN,供互联网服务商大规模使用,最终帮助普通用户变现闲置资源。所以,我们说云计算和大数据是息息相关的。云计算作为计算资源的底层,支撑着上层大数据的高效处理,数据中心的壮大为云计算的发展提供了保障。云存储云存储是一种有用的移动边缘计算(MEC)设备,其特点是存储空间有限。这些数据或日志数据可以在需要时在云存储服务中存储和访问。为了提升MEC设备上的云存储服务体验,在云存储中可以将多个云存储服务合并为一个统一的云存储,在处理大量数据时无法避免重复。虽然云存储空间巨大,但这种复制极大地浪费了网络资源,耗电量大,数据管理复杂。重复数据删除可以节省大量空间和成本,备份应用程序可以减少高达90-95%的存储需求,而标准文件系统可以减少高达68%的存储需求。重复数据删除和数据压缩是用于优化云中存储的可用技术中最突出的技术。重复数据删除随机复制作为一种流行的复制方案,已经广泛应用于云存储系统,如Hadoop分布式文件系统(HDFS)、RAMCloud、谷歌文件系统(GFS)和微软Azure等,使用来自不同的随机复制数据在机房随机选择的三台服务器之间进行复制,防止单个集群数据丢失。但是,三方随机复制不能很好地应对机器故障。如果三个节点随机组合同时失效,会造成数据丢失。为了解决上述问题,提出了副本集复制和分层复制两种方案。但是一个新的问题出现了:他们都没有试图降低由于复制而导致的存储成本和带宽成本。尽管后续提出了更多相关的复制方案,但同样的问题依然存在。因此,一些学者设计了一种称为种群感知多故障弹性和成本效益复制方案(PMCR)的方案。它比以往的复制方案具有优势,同时具有以下特点:可以处理相关或无关的机器故障。压缩很少使用的冷数据副本。降低存储和带宽成本。不会显着影响数据持久性、数据可用性和数据请求的延迟。SC和DC压缩由于PMCR方案的运行是一套完整的过程,我们只关注压缩数据减少冗余的部分。SC的全称是SimilarityCompression,是一种基于数据相似度的压缩方法;DC的全称是DeltaCompression,意为增量压缩。PMCR使用SC压缩读取密集型数据,使用DC压缩写入密集型数据。SC删除文件或文件中的类似块。文件在收到压缩文件后请求用户恢复被删除的数据块;DC存储了文件的副本和与此文件相似的其他文件的不同部分,这些文件将被删除。传输到文件请求用户。并且当文件更新时,只需要将更新的部分同步到副本节点即可。SimilarityCompression(SC):在进行SC时,将相似的块组合在一起,一定数量的相似的小块组成一个大块。然后,将重复的块或接近重复的块删除为一个块。在PMCR中,压缩读密集型数据时,对于每组相似的块,只需要存储第一个块,其余的冗余块可以删除;对于不同数据对象之间的冗余块,也是可以剔除的,方法大致分为文件内压缩和文件间压缩:增量压缩(DC):如图所示,块B和块B'是相似的块,它们之间的差异用橙色标记。此时橙色区域可以存放DC。当区块B或区块B'更新时,只将更新的部分而不是整个区块发送给副本服务器,然后副本服务器更新相应的部分。要向用户发送数据,只需传输存储的不同部分和B块的完整部分。DSHA算法现有系统使用(任何类型的)加密散列算法(例如MD5或安全散列算法)来生成散列值,重复数据删除这些算法产生固定长度的128位或160位分别作为输出以识别重复项的存在。同时,使用额外的内存空间来存储哈希值。本文提出了一种高效的分布式存储哈希算法(DSHA),以减少用于识别和丢弃冗余数据的哈希值所占用的内存空间。结论:实验分析表明,该策略降低了哈希值的内存占用,提高了数据读写性能。SDM技术SDM是一种用于移动设备的智能重复数据删除系统,可提高云存储作为移动设备存储解决方案的可行性。SDM旨在利用现代移动处理器上的多核架构。为了减少重复数据删除过程的时间,每个文件类型的最佳重复数据删除方法不依赖于每个文件类型的任何配置。由于其设计,学习系统没有散列不兼容问题。移动设备和云存储服务的固有局限性:移动设备的性能限制。移动设备的处理能力和电源有限。存储容量有限。由于其形状因素,也很难在移动设备中安装大容量存储。云存储提供商提供的免费存储容量往往较小,升级需要额外付费。网络带宽。网络带宽对于访问云存储至关重要。不幸的是,网络带宽通常仅限于免费存储,云存储服务带宽在活跃用户数量之间进行划分,导致访问时间变长,在大多数情况下这会导致云存储服务的性能低于客户的网络表现。昂贵的Wi-Fi费用。网络覆盖有限。网络覆盖对于移动用户来说可能是个问题。当用户不在网络覆盖范围内时,所有网络活动都将停止,即没有云存储服务。系统架构移动云存储(SDM)推荐使用智能重复数据删除技术。SDM在文件级和块级使用多级去重方法,由学习系统集成(学习系统选择最好的去重方法以达到最好的数据减少和能量消耗。此外,我们还使用哈希表以及一个布隆过滤器来执行本地搜索并添加并行化以提高应用程序性能。整个系统如图所示。整个过程是可逆的,因为重复数据删除是一种无损压缩操作。文件级重复数据删除。在文件级别,重复数据删除可以通过比较整个文件来进行操作。由于它只比较一个哈希值和另一个文件的哈希值,因此过程比其他方法更快。但是,当文件的一部分发生变化时,整个哈希值也会发生变化。这降低了性能file-leveldeduplication.Block-leveldeduplication.在block级别进行去重时,将处理后的文件拆分成多个Chunk。chunk在文件级重复数据删除中被视为与文件相同。块的大小可以是固定的或可变的。一个块级别的改变不会影响其他块的哈希值,但是,一个块内部分字节的改变会改变多个块的哈希值。可变大小块或内容定义块通过使用固定块偏移来拆分文件来解决此问题。固定块偏移量可以使用Rabinrollinghash找到偏移量。Rabin滚动哈希使用多项式和滑动窗口来哈希。为了找到块偏移量,我们滑动窗口并对其进行散列,直到散列与预定义的值匹配。应用场景客户端API该解决方案在客户端和存储服务器之间提供了良好的接口。通过选择合适的存储节点,可以降低CPU负载。System.out.println();jLabel3.setText(digits+outputString1);Class.forname("com.mysql.jdbc.Driver");con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javamysql","root","root");StringHashValue=digits+outputString1;Stringstatus=null;intresult,tab=0;性能测试数据:Android原型实现上的实现:1.仅文件级重复数据删除系统(FDS)。2.仅块级重复数据删除3.移动设备或SDM智能重复数据删除。4.预配置重复数据删除系统(PCDS)。5.轮换重复数据删除系统(RADS)。RADS通过使用重复数据删除率来确定每种文件类型应使用哪种重复数据删除方法。如果不满足该文件类型的目标重复数据删除率,则选择另一种重复数据删除方法。对于每种文件类型,重复数据删除率的计算方法是将已删除重复数据的文件大小除以文件大小。测试结果:展示不同重复数据删除系统在处理未知文件类型时的性能:总的来说,SDM比其他系统表现更好,尤其是在未知文件类型上,因为我们的系统不需要针对任何特定配置的文件类型。对于大多数情况下文件级和块级之间的去重吞吐量,以及接近块级去重精度的去重精度,与其他系统相比,我们的系统可以使云存储作为移动设备存储的解决方案更具可行性。AresDataCompressionFramework介绍现代应用中的数据爆炸现象给存储系统带来了巨大的压力,因此开发者采用数据压缩技术来解决这个问题。然而,在考虑输入数据类型和格式时,每个压缩库都表现出不同的优势和劣势。因此,有学者提出了Ares,一种智能、自适应和灵活的模块化压缩框架,它可以根据工作负载的类型为给定的输入数据动态选择压缩库,并为用户提供合适的基础设施来微调所选的压缩库。压缩库。图书馆。Ares是一个模块化的框架,它统一了多个压缩库,同时允许用户添加更多的压缩库。同时,Ares也是一个统一的压缩引擎,抽象了针对每个工作负载使用不同压缩库的复杂性。在科学和云计算领域的实际应用中,Ares的执行速度比其他解决方案快2-6倍,而且额外的数据分析成本低。比基线快10倍,完全没有压缩。我们面临的问题我们知道无损压缩算法分为两类:通用算法和专用算法。Bzip、Zlib和7z是通用压缩库。事实上,它们的性能确实非常好,但缺点是它们没有利用数据表示之间的细微差别。于是出现了一些更专业的算法,如Snappy、SPDP、LZO等。这类算法通过最小化数据占用空间来提高应用程序的整体性能,因此具有广阔的前景。尽管这些特定领域的压缩库发展良好,但仍然存在几个更现实的问题:数据依赖:由于每个库都针对某种数据类型进行专门化,通常不足以对其他情况进行泛化。即使选择了库,大多数应用程序仅使用一个库也不会产生最佳性能,因为它们使用许多不同类型的数据。库的选择:不同的库有不同的优点和缺点,通常很难为一个用例选择合适的库。即使在同一个应用程序中,它的不同部分也会有不同的压缩需求。例如,文件存储需要很高的压缩率,而进程之间的数据共享需要很高的压缩/解压速度。API和可用性:每个压缩库都有自己的一组参数和API,通常很难过渡到或采用新的库,没有一种压缩算法可以为所有类型的数据、文件格式或应用程序需要的性能提供最佳性能。我们希望有一个智能框架,可以无缝统一多个库,并针对特定场景动态选择“最佳”压缩算法。由于基准测试是为了统一不同的算法,因此首先需要准确掌握它们的实际性能。因此,学者们从数据类型、数据格式和工作负载优先级三个维度对广泛选择的压缩库的性能进行了全面的基准测试。限于篇幅,具体分析部分在此不再详述。简单总结一下:通过观察各个库的性能差异,可以看出每个工作负载都可以从智能动态压缩框架中受益。Ares架构Ares架构的核心是即插即用。该框架是一个中间件库,它封装了多个压缩库并将它们的复杂性从用户端抽象出来。应用程序可以将Ares用作工具(CLI)或库(API)。在这两种情况下,Ares内部的数据流是相同的。首先,Ares分析输入数据以识别涉及的数据类型和格式。它的输入可以是文件、目录或先前压缩的文件(file.ares)。然后将分析结果传递给主引擎,主引擎决定哪个压缩库最适合给定的情况。根据决定,Ares利用一个库池,包括预编译的压缩库(目前原型有11个),然后进行压缩/解压操作。最后,Ares用元数据修饰压缩数据并将.ares文件输出到磁盘。评估要点1.开销和资源利用率如上图所示,我们可以观察到每个测试库都表现出不同的开销。例如,lz4、quicklz和snappy在CT、I/O和DT上都实现了相似的时间,但系统利用率不同(例如,snappy是CPU密集型和内存密集型)。相比之下,bsc提供了8.6x的最高CR,但也是最慢的库,CPU和内存使用率超过90%。bzip2的内存使用率较低,但CR为6.2x时CPU使用率仍然很高。另一方面,Ares通过分析输入数据来平衡CT、DT和CR,而这种额外的开销只占总时间的10%。Ares花了74秒进行数据类型和格式检测,即使有这个额外的开销,Ares执行所有操作的速度也比所有库都快,并取得了最佳的整体时间。具体来说,Ares比bsc快6.5倍,比bzip2快4.6倍,比lz4、quicklz快5-40%,在达到58%CPU和64%内存使用率时仍然非常快。2.压缩/解压智能从结果可以看出,使用CR为1.75倍的lz4可以更快地压缩二进制数据。对于更复杂的按压,bsc实现大于5倍的CR,但CT和DT明显更慢。3.压缩/解压适应性4.压缩/解压灵活性Ares的优点是可以根据输入的数据类型和格式进行压缩。此外,Ares提供了基础架构,可以在给定工作负载的情况下对某些压缩功能进行优先级排序。Ares旨在通过C/C++和Java绑定支持科学和云工作负载。此外,Ares将其引擎中包含的每个压缩库的细节进行了抽象,这使得它更易于使用,并且可以在需要时灵活地扩展到更多的压缩库。下面用四种不同的科学应用程序(VPIC和HACC)和云工作负载(字数统计和整数排序)测试Ares的性能,研究了三种类型的工作负载:读取密集型、写入密集型和混合读取写入类型.总结与传统压缩库相比,Ares提高了性能。具体来说,在科学和云计算领域的实际应用中,Ares的执行速度比同类解决方案快2-6倍,并为用户提供了一个灵活的基础架构,可以根据手头的任务确定压缩特性。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。