我使用hadoop 2.4.1和Yarn处理猪作业。我的一些猪工作是高度优先的(它们应该在不到20分钟的时间内运行)。我正在寻找PIG或YARN选项来为我的高优先级工作预留纱线容器。有没有办法做到这一点?
现在,我总是依赖其他正在运行的工作,根据工作规模,我的优先工作可以等几个小时。
谢谢, 罗曼
答案 0 :(得分:2)
您可以使用Fair Scheduler进行此操作。
Fair Scheduler将您的应用程序组织成“队列”,然后在这些队列之间公平地共享资源。除了提供公平共享之外,它还允许为队列分配保证的最小份额,这有助于确保某些队列始终获得足够的资源。您还可以为不同的队列等分配不同的权重。
要使用公平的日程安排程序,请将以下内容放入yarn-site.xml
。
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
要设置各种队列,您需要创建一个分配文件fair-scheduler.xml
并将其放在hadoop conf目录中。您可以在此处找到分配文件的格式和更多信息:http://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
在您的情况下,您可能希望为高优先级作业创建单独的队列。为该队列分配最小份额,以便在给定此份额时,在所需的时间内完成这些作业。您可能还希望将yarn.scheduler.fair.preemption
设置为true,以确保调度程序抢占已经在运行的作业,以确保您的队列获得最小份额。