Apache Spark最近将版本更新为0.8.1,其中yarn-client
模式可用。我的问题是,纱线客户端模式究竟意味着什么?在文档中它说:
使用yarn-client模式,该应用程序将在本地启动。就像在Local / Mesos / Standalone模式下运行应用程序或spark-shell一样。启动方法也与它们类似,只需确保在需要指定主URL时,使用“yarn-client”代替
“本地推出”是什么意思?在哪里?在Spark集群上? 与纱线独立模式有什么区别?
Spark应用程序由一个驱动程序和一个或多个执行程序组成。驱动程序是主程序(实例化SparkContext
),它协调执行程序以运行Spark应用程序。执行程序运行驱动程序分配的任务。
YARN应用程序具有以下角色:yarn客户端,yarn应用程序主服务器和在节点管理器上运行的容器列表。
当Spark应用程序在YARN上运行时,它有自己的yarn client和yarn application master实现。
在这些背景下,主要区别在于驱动程序运行的位置。
参考:http://spark.incubator.apache.org/docs/latest/cluster-overview.html
所以在火花中你有两个不同的组件。有司机和工人。在纱线群集模式下,驱动程序在数据节点上远程运行,并且工作程序在不同的数据节点上运行。在纱线客户端模式下,驱动程序位于启动作业的计算机上,而工作程序位于数据节点上。在本地模式下,驱动程序和工作人员在启动作业的计算机上。
运行.collect()时,来自工作节点的数据将被拉入驱动程序。它基本上是最后一点处理发生的地方。
对于我自己,我发现当我在家中使用vpn时,纱线群集模式会更好,但是当我在数据中心内运行代码时,纱线客户端模式会更好。
Yarn-client模式还意味着您为驱动程序少占用一个工作节点。
运行的Spark应用程序
有关更多信息,请参阅此cloudera article。
独立模式和纱线部署模式之间的区别,
火花和纱线都是分布式框架,但它们的作用是不同的:
Yarn是一个资源管理框架,对于每个应用程序,它具有以下角色:
ApplicationMaster:单个应用程序的资源管理,包括从应用程序和监视器的Yarn请求/释放资源。
尝试:尝试只是一个正常的过程,它完成了应用程序整个工作的一部分。例如,mapreduce作业由多个映射器和缩减器组成,每个映射器和reducer都是一个尝试。
向纱线提交申请的常见流程是:
org.apache.spark.deploy.yarn.ApplicationMaster
,对于MapReduce作业,它是org.apache.hadoop.mapreduce.v2.app.MRAppMaster
。对于Spark,分布式计算框架,计算任务分为许多小任务,每个Executor将负责每个任务,Driver将收集所有Executor任务的结果并获得全局结果。 spark应用程序只有一个带有多个执行程序的驱动程序。
那么,当Spark使用Yarn作为集群中的资源管理工具时,问题就出现了:
使用yarn-client模式,您的spark应用程序在本地计算机上运行。使用纱线独立模式,您的火花应用程序将作为纱线ApplicationMaster提交给YARN的ResourceManager,并且您的应用程序正在运行ApplicationMaster的纱线节点中运行。在这两种情况下,纱线都是火花的集群经理。您的应用程序(SparkContext)将任务发送到yarn。
首先,让我们弄清楚在独立模式下运行Spark和在集群管理器(Mesos或YARN)上运行Spark之间的区别。
在独立模式下运行Spark时,您有:
所以:
使用集群管理器时(我将为YARN描述这是最常见的情况),您有:
请注意,在这种情况下有两种模式:cluster-mode
和client-mode
。在客户端模式中,您提到的是:
那么,回到你的问题:
“本地推出”是什么意思?在哪里?在Spark集群上?
本地意味着在您执行命令的服务器中(可以是spark-submit
或spark-shell
)。这意味着您可以在群集的主节点中运行它,或者您也可以在群集外的服务器(例如您的笔记本电脑)中运行它,只要适当的配置到位,这样该服务器就可以与群集通信,反之亦然。
与纱线独立模式有什么区别?
如上所述,不同之处在于在独立模式下,根本没有集群管理器。本article中提供了针对每种模式具体分析和分类所有差异的详细信息。