Spark基础—1、Spark基础概念

Spark笔记

一、Spark基础部分

part1 Spark的基础概念

1、Spark的介绍

Apache Spark 是一个快速的,通用的集群计算系统。它对 Java,Scala,Python 和 R 提供了的高层 API,并有一个经优化的支持通用执行图计算的引擎。它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL,用于机器学习的MLlib,用于图计算的 GraphX和流处理Spark Streaming。

2、Spark的基本结构和执行过程
基本结构与作用:

主从架构:

Spark也是主从结构即一个Master节点和多个Worker节点,其中Master运行Driver进程(部分调度模式Driver也运行在Worker上),Worker运行Executor进程。

Master的作用:监听Worker,接受客户端提交的Application。
Worker的作用:定期发送心跳给Master,运行Executor进程。

Spark的核心进程结构及其作用:

  • Driver:
    1. 创建Spark的SparkCntext上下文
    2. 划分RDD创建DAG
    3. 与Spark其他组件协调资源
    4. 生成并分发task到executor
  • Cluster Manager
    1. 集群资源调度器,包括Yarn、Mesos
  • Executor
    1. 执行分配的task任务

在这里插入图片描述

执行过程:

(详细的任务调度过程—>https://blog.csdn.net/qq_40407889/article/details/117752273)

  1. 当任务提交时,由Driver进程创建SparkContext,负责任务的分配、调度以及与资源管理器(Cluster Manager申请自愿
  2. 资源管理器(Cluster Manager)为Executor分配资源,并启动Executor进程,Executor运行情况随着心跳信息发送给资源管理器。
  3. SparkContext根据RDD的依赖关系,构建DAG图,并将其交给DAG调度器进行解析,将DAG图分解为多个"stage",每个stage都是一个任务集,并且计算各个stage之间的依赖关系,然后把每一个任务集交给底层的任务调度器(TaskScheduler)进行处理;任务调度器将任务根据数据本地性和推测执行的机制分发给相应的Exector去运行,同时SparkContext将应用程序代码分发给Executor。
  4. 任务在Executor上运行,将运行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后,写入数据并释放所有资源。

数据本地性:是尽量将计算移到数据所在节点上进行,也就是计算靠近数据。
推测执行:如果任务调度的节点正在被占用,不会立刻转到其他数据节点进行操作,而是计算移动的时间和等待的时间哪一个消耗的时间短,如果等待的时间短,就继续等待,也就是选择最优的方案。

在这里插入图片描述

3、Driver和Executor的区别

Driver:针对application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配由Driver来执行。针对于对RDD的相关操作,比如聚集RDD的collect、count等action操作,是在Driver上执行。

Executor:Spark针对RDD数据的相关操作比如transform操作都是在Executor上执行的,比如map、filter等操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值