hadoop 队列 执行 引擎

xiaoxiao2021-02-28  21

1.队列配置

1.基于clouderamanager的界面方式

2.基于ambari的界面方式

3.修改对应的配置文件 (1)默认的调度器FIFO Hadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。集群中只有一个任务在运行,只有前一个运行完了后面的job才能按照排列顺序依次运行,优点是当前执行的job独享资源,资源利用最大化,缺点是小任务的资源浪费和队列的占用,大任务导致后续任务无法及时运行。 (2) 容量调度器Capacity Scheduler 可以设置多个队列,支持多个队列,每个队列可配置一定的资源量,可以配比资源百分比(所有队列之和少于100%),可以设置队列提交的最大任务数量上限,也可以设置队列资源占用超额上限比例,为了防止同一个用户的作业独占队列中的资源,可以设置队列中用户的资源占比,该调度器会对同一用户提交的作业所占资源量进行限定。也可以设置资源队列的管理员,以及队列提交权限。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。 (3)公平调度器Fair Scheduler 支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,队列之间公平,队列中job公平享用队列中的资源,当一个任务a先提交到A队列时,如果集群中没有其他任务,这个job独占整个集群资源,当新任务b提交上来后提交到B队列,a逐渐释放资源与新提交b任务平均使用集群资源,队列个占二分之一,如果有一个c任务提交到A队列,则a和c平分A队列的资源运行。

2.设置引擎

hive中设置引擎

set hive.execution.engine=mr;

set hive.execution.engine=spark;

set hive.execution.engine=tez;

3.队列优先级

package org.apache.hadoop.mapred; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; /** * Used to describe the priority of the running job. * DEFAULT : While submitting a job, if the user is not specifying priority, * YARN has the capability to pick the default priority as per its config. * Hence MapReduce can indicate such cases with this new enum. * UNDEFINED_PRIORITY : YARN supports priority as an integer. Hence other than * the five defined enums, YARN can consider other integers also. To generalize * such cases, this specific enum is used. */ @InterfaceAudience.Public @InterfaceStability.Stable public enum JobPriority { VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW, DEFAULT, UNDEFINED_PRIORITY; }

设置方法 作业优先级:mapreduce.job.priority,优先级默认有5个:LOW VERY_LOW NORMAL(默认) HIGH VERY_HIGH 在hive中可以用: set mapreduce.job.priority HIGH; 设置队列优先级 set mapreduce.job.queuename= quene1 ;设置job名称 具体参数配置可以查看MRJobConfig 接口常量类

转载请注明原文地址: https://www.6miu.com/read-750226.html

最新回复(0)