Amazon Emr - 当我们有核心节点时,任务节点需要什么?

Tah*_*ala 14 hadoop amazon-emr hadoop2

我最近在学习 Amazon EMR,据我所知,EMR 集群让我们可以选择 3 个节点。

  1. Master 运行主要的 Hadoop 守护进程,如 NameNode、Job Tracker 和资源管理器。
  2. 运行 Datanode 和 Tasktracker 守护进程的核心。
  3. 仅运行 TaskTracker 的任务。

我问你们为什么 EMR 提供任务节点?hadoop 建议我们应该在同一个节点上安装 Datanode 守护进程和 Tasktracker 守护进程。亚马逊这样做背后的逻辑是什么?您可以将 S3 中的数据通过流传输到核心节点上的 HDFS,在 HDFS 上进行处理,而不是将数据从 HDFS 共享到任务节点,在这种情况下这会增加 IO 开销。因为就我在 hadoop 中的知识而言,TaskTrackers 运行在 DataNodes 上,DataNodes 具有用于该特定任务的数据块,那么为什么在不同的节点上有 TaskTracker 呢?

Abd*_*rek 8

根据 AWS 文档 [1]

Amazon EMR 中的节点类型如下: 主节点:通过运行软件组件来管理集群的节点,以协调其他节点之间的数据和任务分配进行处理。主节点跟踪任务的状态并监控集群的健康状况。每个集群都有一个主节点,可以创建一个只有主节点的单节点集群。

核心节点:具有软件组件的节点,用于在集群上的 Hadoop 分布式文件系统 (HDFS) 中运行任务和存储数据。多节点集群至少有一个核心节点。

任务节点:具有软件组件的节点,仅运行任务,不在 HDFS 中存储数据。任务节点是可选的。

根据 AWS 文档 [2]

任务节点是可选的。您可以使用它们来增加对数据执行并行计算任务的能力,例如 Hadoop MapReduce 任务和 Spark 执行程序。

任务节点不运行数据节点守护进程,也不将数据存储在 HDFS 中。

一些用例是:

  • 您可以使用任务节点来处理来自 S3 的流。在这种情况下,网络 IO 不会增加,因为使用的数据不在 HDFS 上。
  • 由于没有运行 HDFS 守护进程,因此可以添加或删除任务节点。因此,没有关于任务节点的数据。核心节点运行 HDFS 守护进程并不断添加和删除新节点并不是一个好习惯。

资源:

[1] https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html#emr-overview-clusters

[2] https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html#emr-plan-task


Car*_*cas 4

一种用例是您使用竞价实例作为任务节点。如果它足够便宜,那么为您的 EMR 集群添加一些计算能力可能是值得的。这主要用于非敏感任务。