Spark学习

Spark是什么

Spark是开源分布式计算引擎,用于大规模数据分析

Spark特点

速度快:在内存时的运行速度是Hadoop MapReduce的10~100倍
易用:支持Java、Scala、Python、R、SQL等多种语言的API,可以使用基于Scala、Python、R、SQL的Shell交互式查询
通用:提供了一个完整的技术栈
兼容:可以运行在Hadoop Yarn、Apache Mesos、K8s、Spark StandAlone等集群中,可以访问HBase、HDFS、Hive、Cassandra在内的多种数据库

Spark部署模式

本地模式

所有Spark组件和Spark应用程序都在同一台机器上运行。适合于本地开发和测试

集群模式

在集群模式下,还可以选择client模式和cluster模式运行应用程序。client模式是driver程序运行在提交作业的客户端机器上,适合开发环境;cluster模式是driver程序在集群中运行,适合生产环境

standalone模式

Spark自带的集群管理器,不依赖其他系统。适用于中小规模集群

yarn模式

在yarn上运行,由yarn负责资源管理,Spark负责任务调度和计算。适用于hadoop集群

mesos模式

在mesos上运行,由yarn负责资源管理,Spark负责任务调度和计算。适用于mesos集群

k8s模式

在k8s上运行,由k8s负责资源管理,Spark负责任务调度和计算。适用于k8s集群

云服务模式

在云平台(AWS EMR、Google Dataproc、Azure HDinsight、阿里云E-MapReduce)上运行,由云平台负责资源管理

Spark框架模块

Spark框架模块

Spark Core

功能:包含Spark的基本功能,包括任务调度、内存管理、存储管理、容错机制等,内部采用RDD数据抽象,并提供了很多API来创建和操作RDD,为其它组件提供底层服务。
用途:支持其它高层组件的运行,为开发者提供底层API

Spark SQL

功能:用于结构化数据处理的模块,支持使用SQL查询Hive、HBase等多种外部数据源中的数据,可以和Spark的RDD API无缝集成
用途:查询结构化数据,与Hive集成,支持HiveQL查询

Spark Streaming

功能:用于实时数据流进行处理和分析,接受来自Kafka、Flume等多种数据源的实时数据
用途:实时日志分析、实时监控和报警

MLlib

功能:机器学习库,提供了常见的机器学习算法和工具,包括分类、回归、聚类、协同过滤等常见算法,以及模型评估、数据预处理等功能
用途:机器学习模型训练和部署

GraphX

功能:图计算框架,用于处理图结果数据
用途:社交网络分析、网页排名

Spark运行架构

Spark运行架构

从资源管理层面,Spark有Master和Worker节点。Master负责集群资源管理,分配Application到Worker节点,维护Worker节点、Driver和Application的状态。Worker节点负责具体任务的执行。
从程序运行层面,Spark有Driver和Executor。Driver充当单个Spark任务运行过程中的管理者,Executor充当单个Spark任务运行过程中的执行者。

Cluster Manager

是Spark集群资源管理器,存在于Master节点上,主要用于对整个集群资源进行管理和分配

Worker

是Spark的工作节点,用于执行提交的任务,主要的工作职责有:

  1. 通过注册机制想Cluster Manager汇报自身的CUP、内存等资源使用信息
  2. 在集群管理器的指示下,创建并启用Executor
  3. Cluster Manager将资源和Task分配给Worker节点上的Executor执行
  4. Worker节点同步Executor状态和资源信息给Cluster Manager

Executor

是真正执行计算任务的组件,是Application运行在Worker上的一个进程。这个进程负责Task的运行,并将数据保存在内存或者磁盘中,也能够将结果返回给Driver

Application

是基于Spark API编写的应用程序,包括实现Driver功能的代码和集群中各个Executor上要执行的代码。一个Application由多个Jobs组成,其中Application的入口是用户定义的main()方法

Driver

是Spark的驱动器节点,可以运行在Application节点上,也可以由Application提交给Cluster Manager,再由Cluster Manager安排Worker进行运行,其主要的工作职责有:

  1. Application通过Driver跟Cluster Manager及Executor进行通信
  2. 运行Application的main()函数
  3. 创建SparkContext
    4.划分RDD并生成DAG
    5.创建Job并将每个Job拆分为多个Stage,每个Stage由多个Task构成,也被称为Task Set
    6.生成并发送Task到Executor
    7.在各个Executor进程间协调Task的调度
    8.与Spark中的其他组件进行资源协调

Spark运行流程

  1. 启动Driver,创建SparkContext
  2. Client提交程序给Driver,Driver向Cluster Manager申请集群资源
  3. 资源申请完毕,在Worker中启动Executor
  4. Driver将应用程序转化为Tasks,分发给Executor执行
  5. Driver从Executor收集计算结果,将结果保存下来或者返回给用户
  6. 应用程序执行完成后,Driver向Cluster Manager释放申请的资源

参考资料

  1. 一文理解Spark的基本概念和工作原理
  2. 初识 Spark - 7000字+15张图解,学习 Spark 入门基础知识
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spark是什么 Spark是基于HDFS等分布式存储之上的数据处理分析框架,它擅长批量数据处理,处理流工作负载,...
    奔跑地蜗牛阅读 971评论 0 0
  • RDD RDD的全称是:Resilient Distributed Dataset (弹性分布式数据集) 五个关键...
    阿涛哥阅读 599评论 0 0
  • Spark基础知识 Spark是基于内存的计算框架,但是也存在磁盘IO。 使用的排序算法:归并排序(大数据里基本都...
    Jorvi阅读 323评论 0 0
  • Spark相关 Spark是用于大数据处理的集群计算框架,没有使用MapReduce作为执行引擎,而是使用了自研的...
    Vechace阅读 3,520评论 0 16
  • spark入门 1. spark和hadoop的区别 Hadoop主要解决,海量数据的存储和海量数据的分析计算 S...
    安申阅读 180评论 0 0