【发布时间】:2018-11-05 01:18:56
【问题描述】:
我已经有了一些纱线架构和火花架构的图片。但是当我尝试一起理解它们时(这就是发生的事情 当 apark 作业在 Hadoop 集群上作为主控在 YARN 上运行时,我陷入了一些困惑。所以首先我会用下面的例子说明我的理解,然后我会 来解决我的困惑
假设我有一个文件“orderitems”存储在 HDFS 上,并带有一些复制因子。 现在我通过将此文件读入 spark RDD 来处理数据(例如,用于计算订单收入)。 我已经编写了代码并配置了如下所示的火花提交
spark-submit \
--master yarn \
--conf spark.ui.port=21888 \
--num-executors 2 \
--executor-memory 512M \
src/main/python/order_revenue.py
假设我创建了一个分区为 5 的 RDD,并且我在 yarn-client 模式下执行了。
现在据我了解,一旦我在 YARN 上提交了 spark 作业,
- 请求转到作为资源组件的应用程序管理器 经理。
- 应用程序管理器将找到一个节点管理器并要求它启动一个 容器。
- 这是应用程序的第一个容器,我们将其称为 应用大师。
- 应用主控接管执行和监控的职责 工作。
由于我已在客户端模式下提交,驱动程序将在我的边缘节点/网关节点上运行。 我提供了 num-executors 为 2 和 executor 内存为 512 mb
我还为 RDD 提供了 5 个分区,这意味着它将创建 5 个读取数据的分区 并分布超过 5 个节点。
现在我对此有一些困惑
我在用户指南中读到,rdd 的分区将分布到不同的节点。这些节点是否与 HDFS 集群的“数据节点”?我的意思是这里有 5 个分区 这意味着它在 5 个数据节点中?
我已经提到 num-executors 为 2。所以这 5 个数据分区将使用 2 个执行程序(CPU)。所以我的下一个问题是,从哪里 这 2 个执行器(CPU)会被选中吗?我的意思是 5 个分区在 5 个节点中 对了,那么这两个执行器是否也在这些节点中?
- 调度程序负责将资源分配给受容量限制的各种正在运行的应用程序, 队列等。还有一个容器是一个 Linux 控制组,它是 一个 linux 内核特性,允许用户分配 用户进程的 CPU、内存、磁盘 I/O 和带宽。所以我的决赛 问题是容器实际上是由“调度程序”提供的?
我在这里很困惑。我参考了架构、发布文档和一些视频,结果搞砸了。
在这里期待帮助。
【问题讨论】:
标签: apache-spark pyspark hadoop-yarn