在Hadoop 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
类来设置优先级。
// 使用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以上。
2、资源调度器支持:不同的资源调度器(如FIFO调度器、公平调度器、容量调度器)对优先级的支持可能不同,FIFO调度器不支持抢占,而公平调度器则支持抢占机制。
3、Preemption机制:在某些情况下,系统可能会强制终止低优先级的任务,为高优先级任务让出资源,这取决于具体的调度器实现和配置。
通过上述步骤,您可以在提交MapReduce任务时灵活地设置任务的优先级,从而更有效地管理和利用集群资源。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1255814.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复