SPARK ON YARN

译文:http://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/

为什么要在 YARN 上运行

相比于在 Mesos 和 Standalone,在 YARN 运行有以下几个优势:

  • YARN可以支持同时管理在它上面运行的不同的框架的资源,你可以先把所有的资源运行一个 MapReduce Job,然后再把一部分资源给 Impala 做查询同时另一部分给 Spark 应用,实现这些不需要更改任何配置。
  • 你可以利用 YARN 调度去的所有优点用户对 应用 进行分类、隔离以及分优先级。
  • 只有 YARN 为 Spark 提供了安全性。在 YARN 上,Spark 可以在 Kerberized Hadoop 集群上从而可以再进程间使用安全授权。

在 YARN 上运行

当 Spark 在 YARN 上运行时,每个 executor 以 YARN 容器的方式运行。MapReduce 会为每一个 task 调度一个容器再起一个 JVMSpark 在同一个容器中维护多个 task。这样的实现方式可以使得 task 的启动速度有量级上的提升。

Spark 在 YARN 上运行时支持两种方式,“yarn-cluster”模式和”yarn-client“模式。一般情况下,yarn-cluster 模式更适合线上环境,yarn-client 模式更适合用户交互和调试环境。

需要了解这两者之间的不同需要先理解 YARN Application master 的概念。在 YARN 中,每个 应用 都有一个 Application master 进程,这个启动这个应用的第一个容器。这个进程负责向 ResourceManager 请求资源,当资源分配完成之后,向 NodeManager 发送启动容器的指令。Application master* 避免使用需要一直运行的client。即使启动这个应用的进程退出了,任务还是会有在集群上运行的 YARN 继续执行。

在 yarn-cluster 模式中, driver 运行 Application master,这就意味着这个进程需要同时进程驱动应用以及从 YARN请求资源,并且这个进程在一个 YARN 容器中运行。启动这个应用的进程并不需要在整个应用的运行周期内一直运行着。 
YARN-cluster 模式

然而在 yarn-cluster 模式并不适合需要交互地使用 Spark。有些 Spark 应用 需要用户的输入,比如 spark-shell 和 pyspark,需要 Spark driver 在用于初始化 Spark 应用的 client 进程中执行。在 yarn-client 模式中, Application master 仅仅是用于向 YARN 请求资源容器,client 进程直接与这些容器进行通信以进行调度。

yarn-client 模式

下面的图表展示的是各种之间的异同:

此处输入图片的描述

总结核心概念

  • 应用:可以是一个Job、一串Job、处理新命令的 Service;
  • Spark Driver: 是用于执行 spark context 的进程。driver 负责将一个应用转换成一个用于在集群上运行的分开的步骤的有向图。每个应用对应一个driver;
  • Spark Application Master: 是负责向 YARN 请求资源,并且找出可以跑 Spark 应用的主机或者容器。 每个应用对应一个application master;

Spark Executor: 指在节点上一个运行 Spark 应用的JVM实例。一个 Executor 可以在它的生命周期里执行多个 task,甚至可以并行得执行 task。一个节点上可以有多个 Executor 而每个应用的 Executor 可以同时在很多个节点上运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值