1、毕业设计(论文)开题报告课 题 名 称: 学 生 姓 名: 学 号: 指 导 教 师: 专 业 名 称: 计算机科学与技术 2014 年 12 月 24 日说 明1根据教育部对毕业设计(论文)的评估标准,学生必须撰写毕业设计(论文)开题报告 ,由指导教师签署意见、毕业设计(论文)指导小组审查,学院教学院长批准后实施。2开题报告是毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。学生应当在毕业设计(论文)工作前期内完成,开题报告不合格者不得参加答辩。3毕业设计开题报告各项内容要实事求是,逐条认真填写。其中的文字表达要明确、严谨,语言通顺,外来语要同时用原文和中文表达。第一次出现缩写词,
2、须注出全称。4本报告中,由学生本人撰写的对课题和研究工作的分析及描述,应不少于 2000 字,没有经过整理归纳,缺乏个人见解仅仅从网上下载材料拼凑而成的开题报告按不合格论。5开题报告原则上在第七学期 18 周前完成,各教研室完成毕业设计开题检查后,各设计指导小组应写一份开题情况总结报告报学院。南京中医药大学信息技术学院毕业设计(论文) 开题报告学生姓名 丁 艳 学 号 084211111 专 业 计算机科学与技术指导教师姓名 胡晨骏 职 称 讲 师 所在单位 或部门 信息技术学院课题来源 教师科研 课题类型 应用研究课题名称 基于 Spark 的云计算技术的初步研究毕业设计的内容和意义内容:功
3、能要求:1、安装 Spark 云计算技术系统2、掌握 Mllib、Graphx 库3、用标准 Samples 测试系统环境4、研究基于Spark的健康分析算法性能要求:界面友好,运行稳定。意义:近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。动辄达到数百TB甚至数十至数百PB规模的行业/企业大数据已远远超出了现有传统的计算技术和信息系统的处理能力,因此,寻求有效的大数据处理技术、方法和手段已经成为现实世界的迫切需求。开源社区推出了许多值得关注的大数据分析平台,而Spark就是其中的佼佼者。Spark作为下一代云计算及大数据的核心
4、技术,是Hadoop目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上。甚至在Hadoop最擅长的离线数据统计分析领域,Spark比Hadoop也至少快了一个几何级数;Spark另外一个无可取代的优势是:“One Stack to rule them all” ,Spark采用一个统一的技术堆栈解决了云计算大数据包括如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位。因此研究基于Spark的云计算技术,顺应了时代发展的需要,具有极其深远的意义。文献综述基于 Spark 的云计算技术
5、的初步研究【摘要】伴随着云计算、大数据相关技术和产业的逐步成熟,继 Hadoop 之后,Spark以性能超 Hadoop 百倍,算法实现仅有其 1/10 或 1/100, 星火燎原,正逐步加速成为大数据时代统一计算平台。基于 Map Reduce 的分布式计算方法使 Spark 类似于 Hadoop,却又比 Hadoop 的通用性更好,迭代运算效率更高,容错能力更强,未来的 Spark 将会是非常成功的并行计算框架。本文主要的研究内容包括:(1)在 linux 环境下编译安装 Spark-0.9.0 版本。(2)配置并搭建 Scala 环境。 (3)搭建 Eclipse 环境。 (4)用标准
6、Samples 测试系统环境。【关键字】Spark, Scala,Eclipse1.引言如今,我们迎来了大数据时代。在这个大数据时代中,数据量爆炸式地增长,数据结构也变得更复杂化,形成了结构化数据、非结构化数据、半结构化数据并存的局面。因此,如何有效地存储和管理海量数据,成为这个时代的难点。为了解决以上的问题,研究并运用基于 Spark 的云计算技术对解决数据的存储与处理困难具有重大的意义。Spark 是基于内存,是云计算领域的继 Hadoop 之后的下一代的最热门的通用的并行计算框架开源项目,尤其出色的支持 Interactive Query、流计算、图计算等。2.主要技术指标及研究方法Sp
7、ark 技术代表未来数据处理的新方向,Spark 是 UC Berkeley AMP lab 开源的类 Hadoop MapReduce 的通用并行计算框架,Spark 基于 MapReduce 实现分布式计算,拥有 Hadoop MapReduce 具有的优点。不同于 MapReduce 的是,Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。Spark 的核心概念是 RDD (resilient distributed dataset),RDD,全称为Resilient Distr
8、ibuted Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD 还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如 map、flatMap、filter等转换操作实现了 monad 模式,很好地契合了 Scala 的集合操作。除此之外,RDD还提供了诸如 join、groupBy、reduceByKey 等更为方便的操作(注意,reduceByKey 是 action,而非 transformation) ,以支持常见的数据运算。通常来讲,针对数据处理有几种常见模型,包括:Iterative Algorithms,
9、Relational Queries,MapReduce,Stream Processing。例如Hadoop MapReduce 采用了 MapReduces 模型,Storm 则采用了 Stream Processing模型。RDD 混合了这四种模型,使得 Spark 可以应用于各种大数据处理场景。RDD作为数据结构,本质上是一个只读的分区记录集合。一个 RDD 可以包含多个分区,每个分区就是一个 dataset 片段。RDD 可以相互依赖。如果 RDD 的每个分区最多只能被一个 Child RDD 的一个分区使用,则称之为 narrow dependency;若多个Child RDD 分
10、区都可以依赖,则称之为 wide dependency。不同的操作依据其特性,可能会产生不同的依赖。例如 map 操作会产生 narrow dependency,而 join 操作则产生 wide dependency。Spark 之所以将依赖分为 narrow 与 wide,基于两点原因。首先,narrow dependencies 可以支持在同一个 cluster node 上以管道形式执行多条命令,例如在执行了 map 后,紧接着执行 filter。相反,wide dependencies 需要所有的父分区都是可用的,可能还需要调用类似 MapReduce 之类的操作进行跨节点传递。其次
11、,则是从失败恢复的角度考虑。narrow dependencies 的失败恢复更有效,因为它只需要重新计算丢失的 parent partition 即可,而且可以并行地在不同节点进行重计算。而 wide dependencies 牵涉到 RDD 各级的多个 Parent Partitions。RDD 提供了两方面的特性 persistence 和 patitioning,用户可以通过 persist与 patitionBy 函数来控制 RDD 的这两个方面。RDD 的分区特性与并行计算能力(RDD 定义了 parallerize 函数),使得 Spark 可以更好地利用可伸缩的硬件资源。若将分
12、区与持久化二者结合起来,就能更加高效地处理海量数据。RDD 本质上是一个内存数据集,在访问 RDD 时,指针只会指向与操作相关的部分。例如存在一个面向列的数据结构,其中一个实现为 Int 的数组,另一个实现为Float 的数组。如果只需要访问 Int 字段,RDD 的指针可以只访问 Int 数组,避免了对整个数据结构的扫描。RDD 将操作分为两类:transformation 与 action。无论执行了多少次 transformation 操作,RDD 都不会真正执行运算,只有当 action操作被执行时,运算才会触发。而在 RDD 的内部实现机制中,底层接口则是基于迭代器的,从而使得数据访
13、问变得更高效,也避免了大量中间结果对内存的消耗。在实现时,RDD 针对 transformation 操作,都提供了对应的继承自 RDD 的类型,例如 map 操作会返回 MappedRDD,而 flatMap 则返回 FlatMappedRDD。当我们执行map 或 flatMap 操作时,不过是将当前 RDD 对象传递给对应的 RDD 对象而已。RDD 支持容错通常采用两种方式:数据复制或日志记录。对于以数据为中心的系统而言,这两种方式都非常昂贵,因为它需要跨集群网络拷贝大量数据,毕竟带宽的数据远远低于内存。RDD 天生是支持容错的。首先,它自身是一个不变的(immutable)数据集,其
14、次,它能够记住构建它的操作图(Graph of Operation),因此当执行任务的 Worker 失败时,完全可以通过操作图获得之前执行的操作,进行重新计算。由于无需采用 replication 方式支持容错,很好地降低了跨网络的数据传输成本。不过,在某些场景下,Spark 也需要利用记录日志的方式来支持容错。例如,在 Spark Streaming 中,针对数据进行 update 操作,或者调用Streaming 提供的 window 操作时,就需要恢复执行过程的中间状态。此时,需要通过 Spark 提供的 checkpoint 机制,以支持操作能够从 checkpoint 得到恢复。针
15、对 RDD 的 wide dependency,最有效的容错方式同样还是采用 checkpoint 机制。不过,似乎 Spark 的最新版本仍然没有引入 auto checkpointing 机制。基于 Spark 的云计算技术,首先选用 Linux 作为开发平台,在该平台上编译安装 Spark-0.9.0 版本。其次,配置并搭建 Scala 环境,安装 Eclipse。最后,用标准 Samples 测试系统环境。3.结束语在大数据领域,只有深挖数据科学领域,走在学术前沿,才能在底层算法和模型方面走在前面,从而占据领先地位。Spark 的这种学术基因,使得它从一开始就在大数据领域建立了一定优势
16、。 文献综述参考文献1曹英.大数据环境下 Hadoop 性能优化的研究D.大连海事大学,2013.2童明.基于 HDFS 的分布式存储研究与应用D.华中科技大学,2012.3张亚勤,沈寓实,李雨航.云计算 360 度.电子工业出版社.20134倪明选,罗吴蔓.数据爆炸时代的技术变革J.中国计算机学会通讯,20115江务学,张璟,王志明.MapReduce 并行编程架构模型研究J.微电子学与计算机,20116 John J.Ratey,Md with Eric Hagerman.Spark. Little,Brown and Company.20087Tom WHite.Hadoop 权威指南(
17、第二版).2.清华大学出版社.20138赵书兰.典型 Hadoop 云计算.电子工业出版社.20139 高彦杰.Spark 大数据处理技术.应用与性能优化. 机械工业出版社.201410 (美)凯洛 著,余璜,张磊 译.Spark 快速数据处理. 机械工业出版社.2014设计方案和技术路线1.研究背景Spark 的特色在于它首先为大数据应用提供了一个统一的平台。从数据处理层面看,模型可以分为批处理、交互式、流处理等多种方式;而从大数据平台而言,已有成熟的 Hadoop、Cassandra、Mesos 以及其他云的供应商。Spark 整合了主要的数据处理模型,并能够很好地与现在主流的大数据平台集
18、成。这样的一种统一平台带来的优势非常明显。对于开发者而言,只需要学习一个平台,降低了学习曲线。对于用户而言,可以很方便地将 Spark 应用运行在 Hadoop、Mesos 等平台上面,满足了良好的可迁移性。统一的数据处理方式,也可以简化开发模型,降低平台的维护难度。Spark 为大数据提供了通用算法的标准库,这些算法包括MapReduce、SQL、Streaming、Machine Learning 与 Graph Processing。同时,它还提供了对 Scala、Python、Java(支持 Java 8)和 R 语言的支持。在最新发布的 1.1.0 版本中,对 Spark SQL 和
19、 Machine Learning 库提供了增强。Spark SQL能够更加有效地在 Spark 中加载和查询结构型数据,同时还支持对 JSON 数据的操作,并提供了更加友好的 Spark API。在 Machine Learning 方面,已经包含了超过 15 种算法,包括决策树、SVD、PCA,L-BFGS 等。这说明业界已经认可了Spark,Spark 也被许多企业尤其是互联网企业广泛应用到商业项目中。Spark 技术在国内外的应用开始越来越广泛,它正在逐渐走向成熟,并在这个领域扮演更加重要的角色。国内外使用 Spark 的情况如下:(1)国外 Spark 的使用情况:一直支持 Hado
20、op 的四大商业机构(Cloudera、MapR、Hortonworks、EMC)已纷纷宣布支持 Spark;Mahout 前一阶段也表示,将不再接受任何形式以MapReduce 实现的算法,同时还宣布了接受基于 Spark 新的算法;而 Cloudera 的机器学习框架 Oryx 的执行引擎也将由 Hadoop 的 MapReduce 替换成 Spark;另外,Google 也已经开始将负载从 MapReduce 转移到 Pregel 和 Dremel 上;FaceBook 也宣布将负载转移到 Presto 上。(2)国内 Spark 的使用情况:我们国内的淘宝、优酷土豆、网易、Baidu、
21、腾讯等企业也已经使用 Spark 技术在自己的商业生产系统中。2.目的意义Spark 是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大。设计方案和技术路线3.实施计划第一阶段:找书籍、查看 Spark 在国内外的研究情况;第二阶段:首先,搭建运行环境第三阶段:研究 Spark 核心第四阶段:用标准 Samples 测试系统环境;第五阶段:使用 Eclipse 开发工具,编写程序。第六阶段:论文编写。4.可行性论证在当今大数据时代,Spark 是 Hadoop 目前唯一的替代者。Spark 的正式版本得到了部分 Hadoop
22、 主流厂商的支持,这说明业界已经认可了 Spark,Spark 也被许多企业尤其是互联网企业广泛应用到商业项目中。根据 Spark 的官方统计,目前参与 Spark 的贡献以及将 Spark 运用在商业项目的公司大约有 80 余家。5.预期成果及其表现形式论文与实物展示。设计进度3 月 2 日3 月 9 日:收集资料3 月 10 日3 月 23 日:需求分析3 月 23 日4 月 17 日:概要设计4 月 17 日5 月 20 日:详细设计特色与创新研究基于 Spark 的健康分析算法指导教师意 见指导教师签名:年 月 日毕业设计指导小组意见组长(签名) :年 月 日学院意见 教学院长( 签名):年 月 日