2021SC@SDUSC
目录
一、项目背景
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,现在形成了一个高速发展、应用广泛的生态系统。Spark是UC Berkeley AMP lab(加州大学伯克利分校AMP实验室)所开源的类Hadoop Mapreduce的通用并行框架,它拥有Hadoop Mapreduce所具有的有优点;但不同于Mapreduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Mapreduce的算法。
Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集、
尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以再Hadoop文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。
二、Spark安装(基于Mac)
在macos系统上安装Spark
1.安装JDK
因为电脑之前已安装过jdk8,所以本次无需再次安装
2.安装apache spark
2.1 下载
打开terminal(如果没有安装过homebrew要先装homebrew。homebrew是一款Mac必备神器,简单一条指令就可以实现包管理。而anaconda是很好用的python开源版本,没有anaconda的话也可以使用pip安装pyspark)
brew install apache-spark
conda install pyspark
2.2 配置文件
打开terminal,输入
vim ~/.bash_profile
打开.bash_profile文件后,添加
export SPARK_PATH=/usr/local/Cellar/apache-spark/3.1.2
export PATH=$SPARK_PATH/bin:$PATH
退出编辑模式,退出.bash_profile文件,回到命令行,输入
source ~/.bash_profile
点击回车,运行配置文件。
三、Spark框架结构分析
Spark主要分为五大部分,分别是Spark Core、Spark Streaming、Spark SQL、Spark GraphX和Spark MLlib。
- Spark Core:spark的内核,主要包含:有向循环图、RDD(弹式分布数据集)、Lingage、Cache、broadcast等,并封装了底层通讯框架,是其他组件的基础
- Spark Streaming:流式处理系统,可以对多种数据源进行类似于hadoop中的Map、Reduce和Join等复杂操作,将流式计算分解成一系列短小的批处理作业
- Spark SQL:能够统一处理关系表和RDD(弹式分布数据集),使得开发人员可以轻松地使用SQL命令进行外部查询,同时进行更复杂的数据分析
- Spark GraphX:分布式图计算框架,用于Spark中的图和图并行计算
- Spark MLlib:Spark提供的可扩展的机器学习库,包含了一些通用的学习算法和工具,如:分类、回归、聚类、协同过滤、降维等。
四、项目分工
经过小组讨论,根据上一部分提到的Spark五个部分,我选择了Spark Core部分,具体的包括Spark基本设计思想、模块设计、SparkContext的初始化等。
五、总结
希望本次课程,我能够对Spark的源码有一定的了解和认识,同时借此机会多多学习,也熟练一下Spark的用法,培养对应的能力。