基于建模平台利用sparkrdd实现海量数据检索和分析文献综述

 2022-10-24 09:10

文献综述(或调研报告):

随着工业和学术领域大数据量的爆炸式增长,应用大型数据处理系统对大数据进行分析是十分必要的。由于它具有通用性、容错性、高内存数据处理性能和可扩展性等优点,可以说是当今大规模数据计算系统中最先进的技术之一。Spark采用了一种灵活的常驻分布式数据集(RDD)编程模型,提供了一组转换和操作符,用户可以根据其应用定制其操作功能。它最初定位为一个快速和通用的数据处理系统。自从它推出以来,为了使它更有效率(更快)和更一般,已经做了大量的研究工作。MapReduce及其变体在实现关于通用计算机簇的大规模数据密集型应用程序上非常成功。但是,大多数这些系统是围绕非环状数据流模型构建的,不适合其他主流的应用程序。Spark框架了MapReduce的可扩展性和容错性。Spark引入了一个抽象概念称为弹性分布式数据集(RDD)。RDD是跨一组机器分割的对象的只读集合,如果分区丢失,则该集合可以重建。在迭代机器学习任务方面,Spark可以比Hadoop高出10倍,并且可以用于交互地查询39 GB数据集,并具有亚秒的响应时间。

Spark编程接口

Spark 和 DryadLINQ 和 FlumeJava 一样通过集成编程语言 api 来暴露 RDDs,这样的话,每一个数据集就代表一个对象,我们可以调用这个对象中的方法来操作这个对象。

编程者可以通过对稳定存储的数据进行转换操作(即 transformations, 比如 map 和 filter 等)来得到一个或者多个 RDDs。然后可以对这些 RDDs 进行 actions 操作,这些操作可以是得到应用的结果值,也可以是将结果数据写入到存储系统中, actions 包括: count(表示返回这个数据集的元素的个数)、collect(表示返回数据集的所有元素)以及 save(表示将输出结果写入到存储系统中).和 DryadLINQ 一样,spark 在定义 RDDs 的时候并不会真正的计算,而是要等到对这个 RDDs 触发了 actions 操作才会真正的触发计算, 这个称之为 RDDs 的 lazy 特性,所以我们可以先对 transformations 进行组装一系列的 pipelines,然后再计算。

另外,编程者可以通过调用 RDDs 的 persist 方法来缓存后续需要复用的 RDDs。Spark 默认是将缓存数据放在内存中,但是如果内存不足的话则会写入到磁盘中。用户可以通过 persist 的参数来调整缓存策略,比如只将数据存储在磁盘中或者复制备份数据到多台机器。最后,用户可以为每一个 RDDs 的缓存设置优先级, 以达到哪个在内存中的 RDDs 应该首先写道磁盘中。

RDD模型优势

RDDs 只能通过粗粒度的转换被创建(或者被写),然而 DSM(分布式共享内存) 允许对每一个内存位置进行读写,这个是 RDDs 和 DSM 最主要的区别。这样使都 RDDs在 应用中大量写数据受到了限制,但是可以使的容错变的更加高效。特别是,RDDs不需要发生非常耗时的 checkpoint 操作,因为它可以根据 lineage 进行恢复数据。而且,只有丢掉了数据的分区才会需要重新计算,并不需要回滚整个程序,并且这些重新计算的任务是在多台机器上并行运算的。

RDDs 的第二个好处是:它不变的特性使的它可以和 MapReduce 一样来运行执行很慢任务的备份任务来达到缓解计算很慢的节点的问题。在 DSM 中,备份任务是很难实现的,因为原始任务和备份任务或同时更新访问同一个内存地址和接口。

最后, RDDs 比 DSM 多提供了两个好处。第一,在对 RDDs 进行大量写操作的过程中,我们可以根据数据的本地性来调度 task 以提高性能。第二,如果在 scan-base 的操作中,且这个时候内存不足以存储这个 RDDs,那么 RDDs 可以慢慢的从内存中清理掉。在内存中存储不下的分区数据会被写到磁盘中,且提供了和现有并行数据处理系统相同的性能保证。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。