【问题标题】:Need help in understanding pyspark execution on yarn as Master需要帮助以了解 pyspark 在纱线上的执行作为 Master
【发布时间】: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


    【解决方案1】:

    首先回答您的问题:

    1) 很简单,Executor是spark的worker节点,driver是manager节点,与hadoop节点无关。假设 executors 是处理单元(这里说 2)并且 repartition(5) 将数据分成 5 个块,由这 2 个执行器分配,并且在某些基础上,这些数据块将在 2 个执行器之间划分。重新分区数据不创建节点

    Spark 集群架构:

    Spark on yarn 客户端模式:

    Spark on yarn 集群模式:

    其他详情可以阅读博文https://sujithjay.com/2018/07/24/Understanding-Apache-Spark-on-YARN/

    https://0x0fff.com/spark-architecture/

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2014-07-03
      相关资源
      最近更新 更多