如何在提交MapReduce任务时设置任务优先级?

在提交MapReduce任务时,可以通过设置mapreduce.job.priority参数来设定任务优先级

在Hadoop MapReduce任务中,优先级设置是一个重要的功能,它可以帮助我们更好地管理和优化资源的使用,下面将详细讲解如何在提交MapReduce任务时设置任务优先级

如何在提交MapReduce任务时设置任务优先级?

一、开启任务优先级配置

1、修改YARN配置文件:需要在ResourceManager的yarn-site.xml中添加以下参数:

   <property>
       <name>yarn.cluster.max-application-priority</name>
       <value>80</value>
   </property>

注意,这个参数是ResourceManager端的参数,无需添加到NodeManager端,最大值可以自行设置,但默认值为80。

2、重启ResourceManager:修改完配置文件后,需要重启ResourceManager以使配置生效。

二、设置MapReduce任务优先级

1、命令行参数设置:可以通过命令行参数来设置MapReduce任务的优先级和队列名称。

   hadoop jar app.jar -D mapreduce.job.queuename=root.etl.distcp -D mapreduce.job.priority=HIGH

2、Hive/Pig中的设置:在Hive或Pig脚本中,也可以通过SET命令来设置优先级和队列名称。

   SET mapreduce.job.queuename=root.etl.distcp;
   SET mapreduce.job.priority=HIGH;

3、API调用设置:在Java代码中,可以使用JobConf类的setJobPriority方法或者Configuration类来设置优先级。

如何在提交MapReduce任务时设置任务优先级?

   // 使用JobConf类
   JobConf jobConf = new JobConf();
   jobConf.setJobPriority(JobPriority.HIGH);
   
   // 或者使用Configuration类
   Configuration c = new Configuration();
   c.set("mapred.job.priority", "HIGH");

三、动态调整任务优先级和队列

对于已经在运行中的任务,可以通过以下命令动态调整其优先级和队列:

1、调整优先级

Hadoop 1.0及以下版本:

     hadoop job -set-priority job_id VERY_HIGH

Hadoop 2.0及以上版本:

     yarn application -appId application_id -updatePriority VERY_HIGH

2、调整队列

   yarn application -movetoqueue application_id -queue target_queue_name

四、注意事项

1、客户端版本要求:提交任务的客户端需要支持任务优先级配置,通常要求Hadoop客户端版本在2.8.0以上。

如何在提交MapReduce任务时设置任务优先级?

2、资源调度器支持:不同的资源调度器(如FIFO调度器、公平调度器、容量调度器)对优先级的支持可能不同,FIFO调度器不支持抢占,而公平调度器则支持抢占机制。

3、Preemption机制:在某些情况下,系统可能会强制终止低优先级的任务,为高优先级任务让出资源,这取决于具体的调度器实现和配置。

通过上述步骤,您可以在提交MapReduce任务时灵活地设置任务的优先级,从而更有效地管理和利用集群资源。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1255814.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希的头像未希新媒体运营
上一篇 2024-10-31 17:18
下一篇 2024-10-31 17:25

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入