据我了解,hadoop 架构认为所有机器都与能够在集群中的所有和任何机器上运行的任何任务/作业相同。
有没有办法更改此模型以将某些机器标记为具有某些功能,然后只选择具有作业所需功能的机器来运行该作业?
最佳答案
想出了这个。因为我使用的是 FairScheduler,所以那里有一个扩展点,允许我通过编写一个实现 LoadManager 接口(interface)的简单类来实现我的目标
根据http://hadoop.apache.org/common/docs/current/fair_scheduler.html , FairScheduler 使用在 mapred.fairscheduler.loadmanager 配置属性中指定的类的实例(默认为 CapBasedLoadManager)。 LoadManager 接口(interface)提供了方便的方法
boolean canLaunchTask(TaskTrackerStatus tracker, JobInProgress job, TaskType type)
这允许我拥有自定义逻辑来允许或拒绝特定作业在特定任务跟踪器上运行。问题解决了。
经验教训:阅读源代码很有用。
关于hadoop - 是否可以选择特定的机器来运行特定类型的 hadoop 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478946/