Hadoop中的主从

Hadoop中的主从,hadoop,mapreduce,Hadoop,Mapreduce,我知道Hadoop将工作划分为独立的Chunck。但是想象一下,如果一个制图员在其他制图员之前完成了任务,主程序是否可以给这个制图员一个任务,即一些已经与另一个制图员关联的任务?如果是,如何进行?阅读推测性执行- Hadoop系统的一个问题是,通过将任务划分到多个节点上,一些较慢的节点可能会限制程序的其余部分。例如,如果一个节点的磁盘控制器速度较慢,那么它读取输入的速度可能仅为所有其他节点的10%。因此,当99个映射任务已经完成时,系统仍在等待最后一个映射任务签入,这比所有其他节点都要花更长的时

我知道Hadoop将工作划分为独立的Chunck。但是想象一下,如果一个制图员在其他制图员之前完成了任务,主程序是否可以给这个制图员一个任务,即一些已经与另一个制图员关联的任务?如果是,如何进行?

阅读推测性执行-

Hadoop系统的一个问题是,通过将任务划分到多个节点上,一些较慢的节点可能会限制程序的其余部分。例如,如果一个节点的磁盘控制器速度较慢,那么它读取输入的速度可能仅为所有其他节点的10%。因此,当99个映射任务已经完成时,系统仍在等待最后一个映射任务签入,这比所有其他节点都要花更长的时间。 通过强制任务彼此独立运行,单个任务不知道其输入来自何处。任务信任Hadoop平台只提供适当的输入。因此,相同的输入可以并行处理多次,以利用机器能力的差异。由于作业中的大多数任务即将结束,Hadoop平台将跨多个节点安排剩余任务的冗余副本,这些节点没有其他工作要执行。这个过程称为推测执行。当任务完成时,他们会向JobTracker宣布这一事实。无论任务的哪个副本先完成,都将成为最终副本。如果其他副本是推测性执行的,Hadoop会告诉TaskTracker放弃任务并放弃其输出。然后,还原器首先从成功完成的映射器接收输入。 默认情况下启用推测执行。通过将mapred.map.tasks.投机性.execution和mapred.reduce.tasks.投机性.execution JobConf选项分别设置为false,可以禁用映射程序和还原程序的投机性执行


Yahoo教程信息仅涵盖MapReduceV1,虽然概念相同,但有点过时。MR v2的新选项现在是:

mapreduce.map.com
mapreduce.reduce.prospective

但是prospective意味着任务从一开始就交给X个映射程序,最快的是将答案发送给主程序的任务,对吗?我想询问一下给地图绘制者X1一些任务,然后发现地图绘制者X2已经完成了他的工作,从而给了他一部分与地图绘制者X1相关的工作!!正确的推测性执行只覆盖映射或reduce任务的全部。它不能分割已在执行的任务,将其部分工作负载交给另一个映射器或缩减器。据我所知,Hadoop中不存在该功能。谢谢,但是Projective将相同的任务交给了n个映射器,这对于一个相对较小的集群来说并不好,我们如何解决任务难度不同的问题,从而让主程序检查每个映射器是否完成了任务,如果是这样的话,我们会给它一部分与另一个映射器关联的数据!!