当前位置: 首页 > 工具软件 > storm-yarn > 使用案例 >

什么是Storm-Yarn及Storm-Yarn相关问题解决办法

宗安翔
2023-12-01
此篇需要对Storm-Yarn有所了解才行。
这里不得不说一下Yarn。
什么是Yarn?

我们都知道hadoop1.X遇到了问题,所以从jobtracker那里分离了一些职责,所以产生了Yarn,所以给我们的印象是Yarn是属于hadoop2的,其实不然,Yarn还提供了Storm接口,也就是说Storm也可以提交作业到Yarn上。Yarn是一个什么那,可以理解为一个资源管理器。目前管理是内存和cpu,对于网络等可能以后会扩张。

最近在玩Storm-Yarn,在提交任务获得ApplicationId后,Strom-Yarn启动不了。咨询了Hadoop的集群之后,发现是Hadoop集群对任务收集的队列进行了设置,没有配置默认的default,导致提交任务运行不起来。

参考信息
1:具体的配置:(去掉default)


<name>mapred.queue.names</name>
< value> default,queue1,queue2,queue3,queue4</value>详见: http://yaoyinjie.blog.51cto.com/3189782/872294

2:关于任务队列,如何才能不被提交到default
用户提交jobs到队列(Queues),队列是用来收集jobs的,允许系统提供指定的函数。如队列使用ACLs来控制哪一些用户可以提交jobs到该队列上。队列主要被Hadoop的调度器使用。
Hadoop一开始配置一个独立强制的队列,叫做“default”,队列的名字可以通过mapred.queue.names进行设置。一个job可以定义要提交到哪条队列上,通过属性 mapreduce.job.queuename来进行设置,如果job没有指定相关的队列名字,则会被 提交到“default”队列。

解决办法:
阅读Storm-yarn源码,在LaunchCommand的66行有以下代码:
String queue = cl.getOptionValue("queue", "default");
getOptionValue方法通过queue作为参数获得command中输入的参数,如果没有就返回默认的default。
所以有两种办法来解决这个问题
1:在输入命令行时,增加–queue=xxx进行配置
2:修改storm-yarn的源码,String queue = cl.getOptionValue("queue", "default");将默认值default改成Hadoop集群中配置中指定的消息队列名称
 类似资料: