我正在使用FileInputFormat.addInputPath指定我的hadoop作业的输入文件列表的路径。我发现如果我的输入目录中有x文件,x mappers将在整个作业过程中启动。
我想知道是否有任何方法可以指定哪些输入文件将对应于某个节点,这样我就可以控制哪台机器将对某些输入文件进行操作。
我这样做的原因是因为我正在使用异构群集,我希望尽可能均衡地平衡工作量。
答案 0 :(得分:1)
你不能那样做,因为这会大大减慢你的工作。但是,您可以使用Fair Scheduler增加任务的位置(由于它使用的技术称为“延迟调度”)。 This page对配置参数进行了解释,您可以修改这些参数以获得更高的位置(以等待更多适当节点为代价);请参阅locality.threshold.*
参数。
有关Hadoop中的位置问题的更多详细信息,请参阅此other SO question。另请参阅Hadoop Fair Scheduler design document上的“延迟计划”部分。