栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 大数据 > 大数据系统

山东大学软件工程应用与实践——Spark项目(一)

大数据系统 更新时间:发布时间: 百科书网 趣学号
2021SC@SDUSC

文章目录
  • **2021SC@SDUSC**
  • 一、项目背景
  • 二、Spark VS Hadoop
  • 三、运行环境准备
    • 1.安装JDK
    • 2.安装Scala
    • 3.安装Spark
    • 4.运行spark-shell
    • 5.准备源码阅读环境
    • 6.Spark源码编译与调试
  • 四、Spark框架结构分析
  • 五、项目分工
  • 六、总结


一、项目背景

    Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。因此,从本质上说,Spark是一个计算引擎;从应用场景上说,Spark专门应用于大数据处理场景。
    基于开源的Spark源码,本项目旨在阅读并深入分析Spark源码,理解Spark的底层实现原理,了解性能优化和部署方案的相关知识,提升个人架构设计、程序设计等方面的能力。


二、Spark VS Hadoop

    一,在大数据处理方面,相比于Spark,人们往往对Hadoop更加熟悉。两者的关系在于,Spark是Hadoop中的计算框架MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储系统,可融入Hadoop生态。
    二,Spark拥有Hadoop MapReduce所具有的优点。但不同于MapReduce的是,Spark 采用了内存分布数据集,其中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark可以优化迭代工作负载,能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
    三,Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
    四,尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。


三、运行环境准备

在64位Linux环境下,配置Spark的运行环境

1.安装JDK

代码如下:

cd~
vim .bash_profile

添加如下配置:

export JAVA_HOME=/opt/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使用如下命令检查是否安装正常:

java-version
2.安装Scala

下载最新的Scala版本:

wget http://downloads.typesafe.com/scala/3.0.2/scala-3.0.2.tgz

移动安装包到目标目录并进入安装目录:

mv scala-3.0.2.tgz ~/install/
chmod 755 scala-3.0.2.tgz
tar -xzvf scala-3.0.2.tgz

配置环境:

cd~
vim.bash_profile

添加配置:

export SCALA_HOME=$HOME/install/scala-3.0.2
export PATH=$PATH:$SCALA_HOME/bin:$HOME/bin

使用如下命令检查是否安装正常:

scala
3.安装Spark

下载最新的Spark版本:

wget http://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop1.tgz

移动安装包到目标目录并进入安装目录:

mv spark-3.1.2-bin-hadoop1.tgz~/install/
chmod 755 spark-3.1.2-bin-hadoop1.tgz
tar -xzvf spark-3.1.2-bin-hadoop1.tgz

配置环境:

cd~
vim.bash_profile

添加配置:

export SPARK_HOME=$HOME/install/spark-3.1.2-bin-hadoop1
4.运行spark-shell

参照网上教程即可,在此不作赘述

5.准备源码阅读环境

参照网上教程即可,在此不作赘述。其中常用的IDE有IntelliJ IDEA、Eclipse两种可供选择。

6.Spark源码编译与调试

该过程耗时较长,需要耐心等待


四、Spark框架结构分析
  • Spark core:spark的内核,主要包含:有向循环图、RDD、Lingage、Cache、broadcast等,并封装了底层通讯框架,是其他组件的基础。
  • Spark Streaming:流式处理系统,可以对多种数据源进行类似于hadoop中的Map、Reduce和Join等复杂操作,将流式计算分解成一系列短小的批处理作业。
  • Spark SQL:能够统一处理关系表和RDD(弹式分布数据集),使得开发人员可以轻松地使用SQL命令进行外部查询,同时进行更复杂的数据分析。
  • Spark GraphX:分布式图计算框架,用于Spark中的图和图并行计算。
  • Spark MLlib:Spark提供的可扩展的机器学习库,包含了一些通用的学习算法和工具,如:分类、回归、聚类、协同过滤、降维等。

五、项目分工

    经过小组内的讨论,我们初步确定了项目的分工。
    项目分为四大核心模块,一是分析Spark core,二是分析Spark Streaming,三是分析Spark SQL,四是分析Spark GraphX。四部分中core模块内容较多,经组内讨论该部分由两个人完成,其余部分均为一人完成分析。项目成员按照实施计划与分工稳步推进,迭代开发,在一学期内完成预期成果。
    在本次项目中,由我担任队长,并负责分析Spark core的部分内容,包括任务配置信息、jar包依赖、中间结果计算缓存、shuffle过程分析等板块。


六、总结

    我希望能够借助此次软件工程应用与实践的机会,对Spark的基本框架有一个比较清晰的认识,对Spark的一些基本的底层实现原理形成比较深刻的理解,建立阅读源码、分析源码的兴趣,培养相应的能力。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/280642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号