Yarn 有哪些调度器,怎么使用这些调度器?
截至我知识截止日期(2022年1月),Yarn是一个用于分布式计算的资源管理器。Yarn(Yet Another Resource Negotiator)的主要作用是为Hadoop等分布式计算框架提供资源管理和任务调度的功能。
Yarn的调度器是负责协调和分配集群资源给不同应用程序的组件。截至我知识截止日期,Yarn支持以下几种调度器:
-
CapacityScheduler(容量调度器) :CapacityScheduler是一种基于容量的调度器,可以配置不同队列的容量,并为每个队列分配一定比例的资源。这使得多个团队或应用程序能够共享同一个集群,并根据配置的容量获取资源。
配置文件中的配置示例:
xmlCopy code <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property> -
FairScheduler(公平调度器) :FairScheduler会公平地分配资源给所有应用程序,而不考虑它们的队列。它试图在资源上保持公平分配,以便每个应用程序都能获得相对均等的资源份额。
配置文件中的配置示例:
xmlCopy code <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> </property> -
FifoScheduler(先进先出调度器) :FifoScheduler是一个简单的调度器,按照应用程序提交的顺序为它们分配资源。先提交的应用程序先获得资源。
配置文件中的配置示例:
xmlCopy code <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler</value> </property>
这些调度器可以在Yarn的配置文件中进行配置。你可以编辑yarn-site.xml文件,将yarn.resourcemanager.scheduler.class属性设置为所需调度器的类路径。请注意,具体的配置可能会根据Yarn版本的不同而有所变化。
需要注意的是,Yarn的新版本可能引入了新的特性或调度器,因此建议查阅最新版本的文档以获取详细的信息。
怎么将任务提交到指定的yarn队列?
在Yarn中,你可以通过配置应用程序的属性或使用命令行参数来将任务提交到指定的队列。这取决于你使用的具体应用程序和提交方式。以下是一些常见的方法:
通过命令行参数提交任务到指定队列
在使用yarn命令提交应用程序时,你可以使用 -queue 参数指定要提交的队列。例如,使用hadoop jar命令提交一个MapReduce任务:
bashCopy code
hadoop jar your-job.jar your.MainClass -queue yourQueueName
通过配置文件设置队列
你可以在应用程序的配置文件中设置队列。对于MapReduce作业,可以在mapred-site.xml中添加以下配置:
xmlCopy code
<property>
<name>mapreduce.job.queuename</name>
<value>yourQueueName</value>
</property>
对于Spark作业,可以在spark-defaults.conf中添加:
confCopy code
spark.yarn.queue yourQueueName
使用 Yarn ResourceManager REST API
Yarn ResourceManager提供了REST API,你可以使用这些API提交应用程序并指定队列。以下是一个示例使用curl的命令:
bashCopy code
curl -X POST \
-H "Content-Type: application/json" \
-d '{"application-id":"application_123_456", "application-name":"YourAppName", "queue":"yourQueueName", "priority":0, "am-container-spec":{"commands":{"command":"YourCommand"}}}' \
http://your-resourcemanager:8088/ws/v1/cluster/apps/new-application
请注意,上述命令中的 your-resourcemanager 应该替换为你的ResourceManager的主机名或IP地址。
确保你了解你正在使用的具体应用程序的提交方式和相应的配置。文档中通常会提供详细的关于队列配置的信息。此外,Yarn的不同版本可能有略微不同的配置项和命令行参数,因此请查阅你使用的Yarn版本的文档获取最准确的信息。
hive sql怎么指定yarn队列
在Hive中,可以通过设置Hive作业的配置属性来指定Yarn队列。具体来说,你可以使用set命令在Hive查询中设置相应的属性。以下是通过Hive SQL指定Yarn队列的示例:
sqlCopy code
-- 设置Hive作业的队列
SET mapreduce.job.queuename=yourQueueName;
-- 执行你的Hive查询
SELECT * FROM your_table;
在上述示例中,mapreduce.job.queuename 属性被设置为你想要使用的Yarn队列的名称。请将 yourQueueName 替换为实际的队列名称。
如果你希望在Hive启动时就设置默认的队列,你可以修改Hive的配置文件(通常是hive-site.xml)。在该文件中,你可以添加以下配置:
xmlCopy code
<property>
<name>mapreduce.job.queuename</name>
<value>yourQueueName</value>
</property>
这将确保在Hive会话启动时,默认使用指定的队列。同样,记得将 yourQueueName 替换为实际的队列名称。
请注意,具体的配置可能会因Hive版本而异,因此建议查阅你使用版本的Hive文档,以获取准确的配置信息。