大家好我最近一直在学习Amazon EMR,据我所知,EMR集群让我们选择3个节点。
我向你们提出问题,为什么EMR会提供任务节点? hadoop建议我们在同一节点上应该有Datanode守护进程和Tasktracker守护进程。亚马逊这样做背后的逻辑是什么?您可以将S3中的数据保存到核心节点上的HDFS,在HDFS上进行处理,而不是将数据从HDFS共享到任务节点,这样会增加IO头。因为就我在hadoop中的知识而言,TaskTrackers在DataNode上运行,而DataNodes具有针对该特定任务的数据块,那么为什么TaskTrackers在不同的节点上呢?
答案 0 :(得分:0)
一个用例是使用spot实例作为任务节点。如果它足够便宜,那么为EMR集群添加一些计算能力可能是值得的。这主要适用于非敏感任务。
答案 1 :(得分:0)
根据AWS文档[1]
Amazon EMR中的节点类型如下: 主节点:通过运行软件来管理集群的节点 组件协调数据和任务之间的分配 其他节点进行处理。主节点跟踪任务状态 并监视群集的运行状况。每个集群都有一个主 节点,并且可以仅使用 主节点。
核心节点:具有软件组件的节点,该组件可以运行任务并将数据存储在您的Hadoop分布式文件系统(HDFS)中 簇。多节点群集至少具有一个核心节点。
任务节点:具有软件组件的节点,该组件仅运行任务并且不将数据存储在HDFS中。任务节点是可选的。
根据AWS文档[2]
任务节点是可选的。您可以使用它们来添加功能以对数据执行并行计算任务,例如Hadoop MapReduce任务和Spark执行程序。
任务节点不运行数据节点守护程序,也不将数据存储在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。
根据任务的不同,核心节点需要更长的时间来进行向上/向下缩放,因此可以选择“任务”节点以实现更快的自动缩放。
答案 3 :(得分:0)
Hadoop之所以建议我们在同一节点上具有DataNode和Tasktracker守护程序,是因为它希望我们的处理能力尽可能接近数据。
但是,当您必须处理多节点群集时,还会进行机架级优化。以我的观点,AWS通过在与Datanode相同的机架中提供任务节点来减少I / O开销。
提供Task节点的原因是,我们需要对数据进行更多处理,而不是仅仅专注于将其存储在HDFS上。我们总是想要比Daemon节点更多的TaskTracker。因此,AWS为您提供了使用有益于RackLevel优化的完整节点来增加它的机会。
如果要获得良好的性能,但仅使用瞬态群集,则希望将数据获取到群集中的方式(使用S3和仅核心节点)是一个不错的选择。