需要帮助,以掌握Master

时间:2018-11-03 18:36:33

标签: apache-spark pyspark yarn

我已经对纱线结构和火花结构有所了解,但是当我试图一起理解它们时(发生了什么) 当apark作业在Hadoop群集上在YARN上作为主服务器运行时,我陷入了一些混乱。 引起我的困惑

说我有一些复制因子在HDFS上存储了一个文件“订单项”。 现在,我通过将此文件读入Spark RDD(例如,用于计算订单收入)来处理数据。 我已经编写了代码,并按如下所示配置了spark提交

    spark-submit \
    --master yarn \
    --conf spark.ui.port=21888 \
    --num-executors 2 \
    --executor-memory 512M \
    src/main/python/order_revenue.py

让我们假设我创建的RDD的分区为5,并且我是在yarn-client模式下执行的。

现在,据我了解,一旦我在YARN上提交了Spark作业,

  • 请求转到作为资源组成部分的应用程序管理器 经理。
  • Application Manager将找到一个节点管理器,并要求它启动一个节点管理器。 容器。
  • 这是应用程序的第一个容器,我们将其称为 应用程序主管。
  • 应用程序主管负责执行和监视 工作。

由于我已在客户端模式下提交,因此驱动程序将在我的边缘节点/网关节点上运行。 我提供了num-executors为2和executor内存为512 mb

我还为RDD提供了5个分区,这意味着它将创建5个读取数据的分区 并分布在5个节点上。

现在,我对此有一些困惑

  
      
  • 我已经阅读了用户指南,rdd的分区将分配到不同的节点。这些节点是否与   HDFS群集的“数据节点”?我的意思是这里有5个分区   这意味着它在5个数据节点中?

  •   
  • 我提到num-executors为2.因此这5个数据分区将使用2个executors(CPU)。所以我的下一个问题是   这2个执行器(CPU)将被选中?我的意思是5个分区位于5个节点中   对,这2个执行器也位于这些节点中的任何一个吗?

  •   
  • 调度程序负责根据容量限制将资源分配给各种正在运行的应用程序,   队列等。容器也是Linux控制组   允许用户分配的Linux内核功能   用户进程的CPU,内存,磁盘I / O和带宽。所以我的最后   问题是容器实际上是由“调度程序”提供的吗?
  •   

我在这里很困惑。我已经提到了架构,发布文档和一些视频,然后搞砸了。

期望在这里伸出援手。

1 个答案:

答案 0 :(得分:1)

首先要回答您的问题:

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

火花群集体系结构:

enter image description here

在纱线客户端模式下闪烁: enter image description here

在纱线簇模式下闪烁: enter image description here

有关其他详细信息,您可以阅读博客文章https://sujithjay.com/2018/07/24/Understanding-Apache-Spark-on-YARN/

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