Spark基础入门-第八章:分布式代码执行分析

Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。下面就带大家来学习今天的内容!

  往期内容:


一、Spark集群角色回顾(YARN)

当Spark Application运行在集群上时,主要有四个部分组成,如下示意图:

1)、 Master(ResourceManager): 集群大管家, 整个 集群的资源管理和分配;

2)、 Worker(NodeManager): 单个机器的管家,负责 在单个服务器上提供运行容器,管理当前机器的资源;

3)、 Driver: 单个Spark任务的管理者,管理Executor 的任务执行和任务分解分配, 类似YARN的 ApplicationMaster;

4)、 Executor: 具体干活的进程, Spark的工作任务 (Task)都由Executor来负责执行;

二、分布式代码执行分析

Spark Application应用程序运行时,无论client还是cluster部署模式DeployMode,当Driver Program和Executors 启动完成以后,就要开始执行应用程序中MAIN函数的代码,以词频统计WordCount程序为例剖析讲解。

第一、构建SparkContex对象和关闭SparkContext资源,都是在Driver Program中执行,上图中①和③都是,如 下图所示:

第二、上图中②的加载数据【A】、处理数据【B】和输出数据【C】代码,都在Executors上执行,从WEB UI监控 页面可以看到此Job ( RDD#action触发一个Job)对应DAG图,如下所示:

所以对于刚刚的WordCount代码,简单分析后得知:

  • SparkContext对象的构建 以及 Spark程序的退出, 由 Driver 负责执行
  • 具体的数据处理步骤, 由Executor在执行.

其实简单来说就是:

  • 非数据处理的部分由Driver工作
  • 数据处理的部分(干活)由Executor工作

要知道: Executor不仅仅是一个, 视集群规模,Executor的数量可以是很多的。那么在这里一定要有一个概念: 代码中的数据处理部分,是由非常多的服务器(Executor)执行的,这也是分布式代码执行的概念。

三、Python On Spark 执行原理

PySpark宗旨是在不破坏Spark已有的运行时架构,在Spark架构外层包装一层Python API,借助Py4j实现Python和 Java的交互,进而实现通过Python编写Spark应用程序,其运行时架构如下图所示。

[扩展阅读]Python的OS模块

os模块的用途很多,主要有2种用途

1. 获取系统的各种环境变量

2. 在代码中临时指定环境变量, 如

import os

os.environ[‘JAVA_HOME’] = /xxx/xxx/xxx

既可以在当前Python代码中临时修改环境变量

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值