2021SC@SDUSC
摘要:作为本课程第一篇blog,简单介绍项目背景和运行环境的安装,主要完成组内任务的划分,确定好分析方向,为后续的分析项目源代码工作做出铺垫。
文章目录
一、项目背景及目的
1.项目背景:
2.本课程主要目的:
二、Spark作用(能做些什么)及特点(优势)
1.Spark作用:
? ? ? ? (1)中间结果输出:
? ? ? ? (2)替代方案:
2.Spark特点:
? ? ? ? (1).速度快:
? ? ? ? (2).基于内存:
? ? ? ? (3).兼容性高:
? ? ? ? (4).更容易的API:
三、运行环境的安装
四、Spark——分布数据处理引擎
五、项目分工
六、总结
一、项目背景及目的
1.项目背景:
????????Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。?Spark?是一种与?Hadoop?相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使?Spark?在某些工作负载方面表现得更加优越,换句话说,Spark?启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
2.本课程主要目的:
????????通过解读Spark开源代码,组队成员加强交流合作,深入分析Spark源码,搜索相应资料完成项目代码解读任务,共同提升解读代码能力;理解Spark底层实现原理,对项目的架构有初步了解和认识;逐步加强对实战项目的了解,增加对实战项目的兴趣。
二、Spark作用(能做些什么)及特点(优势)
????????如果比较关心大数据,你会发现很多领域都提到Spark:机器学习需要Spark,数据流传输需要Spark,ETL需要Spark,一句话概括Spark:Spark是一个通用的分布式数据处理引擎。
1.Spark作用:
? ? ? ? (1)中间结果输出:
????????基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的,考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。
? ? ? ? (2)替代方案:
????????Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。
2.Spark特点:
? ? ? ? (1).速度快:
????????每一个作业都是独立调度,可以把所有的作业做出一个图以进行调度,各个作业之间相互依赖,在调度过程中一起调度,速度得到大幅提升。与Hadoop的MapReduce相比,Spark基于内存的运算要快几十甚至上百倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG(有向无环图)执行引擎,可以通过基于内存来高效处理数据流。
? ? ? ? (2).基于内存:
????????所有过程都基于内存,所以通常也将Spark称作是基于内存的迭代式运算框架。
? ? ? ? (3).兼容性高:
? ? ? ??Spark可以非常方便地与其他的开源产品进行融合。Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。
? ? ? ? (4).更容易的API:
????????支持Python,Scala和Java.?其实spark里面也可以实现Mapreduce,但是这里它并不是算法,只是提供了map阶段和reduce阶段,但是在两个阶段提供了很多算法。如Map阶段的map,?flatMap,?filter,?keyBy,Reduce阶段的reduceByKey,?sortByKey,?mean,?gourpBy,?sort等。
三、运行环境的安装
????????在64位Linux环境下,配置Spark的运行环境
????????1.安装JDK? ?下载相应版本的JDK:
????????2.安装Scala:
????????3.安装Spark:
????????4.运行spark-shell:
????????5.准备源码阅读环境:
????????6.Spark源码编译与调试:
????????以上步骤,通过各成员搜索资料及讨论进行安装调试,在队长博客中展示详细步骤,这里不再赘述。队长博客地址:队长博客地址。
四、Spark——分布数据处理引擎
????????Spark是一个通用的分布式数据处理引擎。 ????????通用:通用指的是Spark可以做很多事情。刚刚我们提到过的,包括机器学习,数据流传输,交互分析,ETL,批处理,图计算等等等等都是Spark可以做到的。甚至可以说,你需要用数据实现的任何事情,你都可以用Spark试试看。 ????????分布式:指的是Spark处理数据的能力是建立在许多机器上的,是可以和分布式的存储系统对接的,是可以做横向扩展的(简单点说就是电脑越多,能力越大) ????????引擎:所谓引擎,说的就是Spark自己不会存储数据,它就像实体的机械引擎一样,会将燃料(对Spark来说是数据)转化成使用者需要的那种形式——例如驱动汽车,再例如得到一个需要的目标结论。但无论如何,巧妇难为无米之炊,没数据是万万不行的。
? 转自:zhihu~
五、项目分工
? ? ? ? 通过小组初步讨论,我们确立的小组分工:
????????对Spark划分为四大核心模块:一是分析Spark core,二是分析Spark Streaming,三是分析Spark SQL,四是分析Spark GraphX。其中,由于第一部分Spark core复杂程度较高,由两人共同完成,其他成员也可以在后续分析中进一步分析Spark core的内容。每位成员按照小组讨论计划,稳步推进,在规定时间完成相应的任务,达到预期结果。
? ? ? ? 本项目中,我主要负责第三部分Spark SQL的内容,通过完成源码下载,环境配置等准备操作后,根据内容推进和队员完成情况,有能力则进一步帮助队友完成相应代码的分析任务。在SQL中前期主要分析总体设计,SQL运行原理,与传统关系型数据库运行的比较,其运行架构等内容进行分析!
六、总结
? ? ? ? 此课程——软件工程应用与实践是一门很有价值的课程,我希望通过此次课程,在自己和队友的共同努力下,深入理解Spark项目的架构和运行原理,对其基础架构有一个较深的理解和认识,培养团队精神和刻苦努力精神。加强阅读源代码分析代码的能力,最后希望可以通过团队努力取得一个好的结果。
|