最近我在学习Amazon EMR,根据我的知识,EMR集群让我们选择3个节点。
- Master,运行主要的Hadoop守护程序,如NameNode、Job Tracker和Resource Manager。
- Core,运行Datanode和Tasktracker守护程序。
- Task,只运行TaskTracker。
我的问题是,为什么EMR提供任务节点?而hadoop建议在同一节点上运行Datanode守护程序和Tasktracker守护程序。亚马逊这样做的逻辑是什么?您可以将数据保存在S3中,将其流式传输到核心节点上的HDFS,然后在除了共享HDFS数据到任务节点会增加IO开销之外的HDFS上进行处理。因为据我所知,在hadoop中,TaskTrackers运行在为该特定任务保留数据块的DataNodes上,那么为什么要在不同节点上运行TaskTrackers呢?