Cloudera Spark Application Overview

翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_spark_apps.html
版本: 5.14.2

Spark应用程序模型

Apache Spark被广泛认为是在Apache Hadoop集群上进行通用数据处理的MapReduce的后继者。与MapReduce应用程序一样,每个Spark应用程序都是一个自包含的计算,它运行用户提供的代码来计算结果。与MapReduce作业一样,Spark应用程序可以使用多个主机的资源。但是,Spark比MapReduce有很多优点。

在MapReduce中,最高级别的计算单位是 job 。job 加载数据,应用map函数,shuffle ,应用reduce 函数,并将数据写回持久存储。在Spark中,最高级别的计算单位是application。Spark application 可用于单个批处理作业,具有多个作业的交互式会话或持续满足请求的长期服务。Spark工作可以不仅仅包含一个map和 reduce 。

MapReduce为每个任务启动一个进程。相比之下,即使Spark应用程序没有运行作业,Spark应用程序也可以为其运行进程。而且,多个任务可以在同一执行器内运行。两者结合起来可以实现极快的任务启动时间以及内存数据存储,从而比MapReduce的性能有数量级的提升。

Spark执行模型

Spark应用程序执行涉及运行时概念,如driver 、 executor 、 task 、 job and stage 。理解这些概念对编写快速且资源高效的Spark程序至关重要。

在运行时,Spark应用程序映射到单个 driver 进程和一组分布在集群中主机上的 executor 进程。

driver 进程管理job flow 和调度schedule task ,并且在应用程序运行的整个过程中都可用。通常,此驱动程序进程与用于启动作业的客户端进程相同,但在YARN上运行时,驱动程序可以在群集中运行。在交互模式下,shell本身就是驱动程序进程。

executor 负责以task的形式执行工作,以及存储您缓存的任何数据。执行器生存期取决于是否启用动态分配dynamic allocation 。一个执行者具有多个用于运行任务的slots ,并且在其整个生命周期中将并行运行。

图片.png

在Spark应用程序中调用一个动作触发启动一个 job 来完成它。Spark检查该行为所依赖的数据集并制定执行计划。执行计划将数据集组合转换为stage。一个阶段是task的集合,其对数据的不同子集运行相同的代码。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容