Amazon Emr - 当我们拥有Core节点时,Task节点的需求是什么?

时间:2017-01-07 08:23:57

标签: hadoop hadoop2 amazon-emr

大家好我最近一直在学习Amazon EMR,据我所知,EMR集群让我们选择3个节点。

  1. 运行主要Hadoop守护程序的Master,如NameNode,Job Tracker和Resource manager。
  2. 运行Datanode和Tasktracker守护进程的核心。
  3. 仅运行TaskTracker的任务。
  4. 我向你们提出问题,为什么EMR会提供任务节点? hadoop建议我们在同一节点上应该有Datanode守护进程和Tasktracker守护进程。亚马逊这样做背后的逻辑是什么?您可以将S3中的数据保存到核心节点上的HDFS,在HDFS上进行处理,而不是将数据从HDFS共享到任务节点,这样会增加IO头。因为就我在hadoop中的知识而言,TaskTrackers在DataNode上运行,而DataNodes具有针对该特定任务的数据块,那么为什么TaskTrackers在不同的节点上呢?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据AWS文档[1]

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

核心节点:具有软件组件的节点,该组件可以运行任务并将数据存储在您的Hadoop分布式文件系统(HDFS)中 簇。多节点群集至少具有一个核心节点。

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

根据AWS文档[2]

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

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

一些用例是:

  • 您可以使用Task节点处理来自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

答案 2 :(得分:0)

  • 传统Hadoop假定您的所有工作负载都需要高I / O,而使用EMR,您可以根据工作负载选择实例类型。对于高IO需求,例如C型或R型最高可达100Gbps,您可以使用放置组。并将核心节点与任务节点的比率保持为1:5或更低,这将使I / O保持最佳状态,如果要提高吞吐量,请选择C或R作为核心和任务。 (编辑-使用EMR几乎无法解释任何性能损失)

  • 任务节点的优势在于它可以更快地向上/向下扩展并可以最大程度地减少计算成本。传统的Hadoop集群很难以任何方式进行扩展,因为从站也是HDFS的一部分。 任务节点是可选的,因为核心节点可以运行Map和Reduce。

  • 根据任务的不同,核心节点需要更长的时间来进行向上/向下缩放,因此可以选择“任务”节点以实现更快的自动缩放。

参考:https://aws.amazon.com/blogs/big-data/best-practices-for-resizing-and-automatic-scaling-in-amazon-emr/

答案 3 :(得分:0)

Hadoop之所以建议我们在同一节点上具有DataNode和Tasktracker守护程序,是因为它希望我们的处理能力尽可能接近数据。

但是,当您必须处理多节点群集时,还会进行机架级优化。以我的观点,AWS通过在与Datanode相同的机架中提供任务节点来减少I / O开销。

提供Task节点的原因是,我们需要对数据进行更多处理,而不是仅仅专注于将其存储在HDFS上。我们总是想要比Daemon节点更多的TaskTracker。因此,AWS为您提供了使用有益于RackLevel优化的完整节点来增加它的机会。

如果要获得良好的性能,但仅使用瞬态群集,则希望将数据获取到群集中的方式(使用S3和仅核心节点)是一个不错的选择。