代码实战
流程解析

集群执行
- 在代码中不要设置 master,如果设置了,会以代码为准,spark-submit 工具的设置就无效了
- 提交程序到集群中的时候,读取的文件一定是各个机器都能访问到的地址,如:HDFS
流程详解
分布式代码执行分析
集群角色

- 资源管理层面
- Master (ResourceManager):集群大管家,整个集群的资源管理和分配
- Worker (NodeManager):单个机器的管家,负责在单个服务器上提供运行容器,管理当前机器的资源
- 任务执行层面
- Driver
- 单个 Spark 任务的管理者
- 管理 Executor 的任务执行和任务分解分配,类似 YARN 的 ApplicationMaster
- Executor:具体干活的进程,Spark 的工作任务(Task)都由 Executor 来负责执行
- Driver
代码执行
Python On Spark
- Driver :Py4j 模块将 Python 代码翻译成 JVM 代码
- Executor:pyspark 守护进程做中转站
总结
- 分布式代码执行的重要特征是什么?
- 代码在集群上运行,是被分布式运行的
- 在 Spark 中,非任务处理部分由 Driver 执行(非 RDD 代码),任务处理部分由 Executor 执行(RDD 代码)
- Executor 的数量可以很多,所以任务的计算是分布式在运行的
- PySpark 的架构体系
- Driver 端由 JVM 执行
- Executor 端由 JVM 做命令转发,底层由 Python 解释器进行工作
评论区