[英]Spark on yarn concept understanding
我试图了解 spark 如何在 YARN 集群/客户端上运行。 我有以下疑问。
是否有必要在yarn集群中的所有节点上都安装spark? 我认为应该是因为集群中的工作节点执行任务并且应该能够解码驱动程序发送到集群的 spark 应用程序中的代码(spark API)?
它在文档中说“确保HADOOP_CONF_DIR
或YARN_CONF_DIR
指向包含 Hadoop 集群(客户端)配置文件的目录”。 为什么客户端节点在将作业发送到集群时必须安装Hadoop?
添加到其他答案。
- 是否有必要在yarn集群中的所有节点上都安装spark?
否,如果 spark 作业在 YARN( client
或cluster
模式)中调度。 许多节点只需要在独立模式下安装 Spark。
这些是 Spark 应用程序部署模式的可视化。
Spark 独立集群
在cluster
模式下,驱动程序将位于 Spark Worker 节点之一,而在client
模式下,它将位于启动作业的机器内。
YARN集群模式
YARN 客户端模式
下表提供了这些模式之间差异的简明列表:
- 它在文档中说“确保 HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向包含 Hadoop 集群(客户端)配置文件的目录”。 为什么客户端节点在将作业发送到集群时必须安装Hadoop?
Hadoop 安装不是强制性的,但配置(不是全部)是!。 我们可以称它们为网关节点。 主要有两个原因。
HADOOP_CONF_DIR
目录中包含的配置将分发到 YARN 集群,以便应用程序使用的所有容器都使用相同的配置。yarn-default.xml
)中获取的。 因此, --master
参数是yarn
。Spark 2.0+不再需要用于生产部署的胖组装 jar 。 来源
我们在 YARN 上运行 Spark 作业(我们使用 HDP 2.2)。
我们没有在集群上安装 spark。 我们只将 Spark 程序集 jar 添加到 HDFS。
例如运行 Pi 示例:
./bin/spark-submit \
--verbose \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar \
--num-executors 2 \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 4 \
hdfs://master:8020/spark/spark-examples-1.3.1-hadoop2.6.0.jar 100
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar
- 这个配置告诉纱线从是采取火花组件。 如果您不使用它,它将从您运行spark-submit
上传 jar。
关于您的第二个问题:客户端节点不需要安装 Hadoop。 它只需要配置文件。 您可以将目录从集群复制到客户端。
1 - 如果遵循从/主架构,则 Spark。 所以在你的集群上,你必须安装一个 spark master 和 N 个 spark slaves。 您可以在独立模式下运行 spark。 但是使用 Yarn 架构会给你带来一些好处。 这里有一个很好的解释: http : //blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
2- 例如,如果您想使用 Yarn 或 HDFS,这是必要的,但正如我之前所说,您可以在独立模式下运行它。
让我试着剪掉胶水,让它变得不耐烦。
6 个组件:1. 客户端,2. 驱动程序,3. 执行程序,4. 应用主程序,5. 工作线程,6. 资源管理器; 2种部署模式; 和2 资源(集群)管理。
这是关系:
没什么特别的,就是提交 spark 应用程序。
没什么特别的,一个工人拥有一个或多个执行者。
(无论是客户端还是集群模式)
瞧!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.