洋哥实践大作。

1.1 Label-based scheduling实战问题汇总
1.1.1 ClassNotFoundException
问题现象,执行yarnrmadmin –refreshQueues命令时报以下错误:

java.lang.ClassNotFoundException:Class org.apache.hadoop.yarn.server.resourcemanager.scheduler.apacity.sharingpolicy.ConfigurablePartitionsExtentionPolicynot found

报该类问题一般是因为需要的类不存在或者类路径配置错误,经定位是因为类路径弄出了:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.apacity.sharingpolicy.ConfigurablePartitionsExtentionPolicy

修改为:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.sharingpolicy.ConfigurablePartitionsExtentionPolicy

1.1.2 IllegalArgumentException:Illegal capacity
问题详细描述:

java.lang.IllegalArgumentException:Illegal capacity of 0.0 for children of queue root for label=part_B

是因为配置文件capacity-scheduler.xml缺少以下配置项:

<property>

<name>yarn.scheduler.capacity.root.part_B.accessible-node-labels.part_B.capacity</name>

<value>100</value>

</property>

1.1.3 删除label partition报错
先查看一下Yarn集群的label partition信息:

[root@slave2 hadoop]# yarn cluster--list-node-labels

16/02/25 12:09:21 INFO client.RMProxy:Connecting to ResourceManager at slave2/169.10.35.57:8032

Node Labels:<part_B:exclusivity=true>

[root@slave2 hadoop]#

然后通过yarnrmadmin -removeFromClusterNodeLabelspart_B 命令将label partition(part_B)删除,删除时报以下异常:

java.io.IOException:Cannot remove label=part_B, because queue=part_B is using this label. Pleaseremove label on queue before remove the label

异常提示需要先删除队列与labelpartition的对应关系,之后才能删除labelpartition。

解决方案如下:

修改配置文件capacity-scheduler.xml,将该文件中的以下配置项:

<property>

<name>yarn.scheduler.capacity.root.part_B.accessible-node-labels</name>

<value>part_B</value>

</property>

此时如果把一个Mapreduce程序提交到队列part_B运行,则会直接卡死,如下所示:

出现以上现象的原因是在capacity-scheduler.xml文件中缺少以下配置:

<property>

<name>yarn.scheduler.capacity.root.accessible-node-labels.part_B.capacity</name>

<value>100</value>

</property>

1.1.5 refreshQueues Exception
执行yarn rmadmin–refreshQueues命令时报以下错误:

java.io.IOException:part_B cannot be found during refresh!

导致报这个错的原因是:我将目前已经配置好了队列的capacity-scheduler.xml配置文件替换成hadoop原始默认的capacity-scheduler.xml配置文件,并执行yarn rmadmin –refreshQueues命令;之前一直不清楚为什么会报这个错误,无意间在Yarn的官网看到以下描述:

即在Yarn中,队列不能被删除。

©著作权归作者所有:来自51CTO博客作者mob604756ec296f的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Unexpected token '...'. Expected a property name解决
  2. Unexpected token '...'. Expected a property name解决
  3. Linux磁盘空间释放问题
  4. C数组实现静态链表及常用操作(模拟无指针编程语言数组实现链表)
  5. iOS多线程面试题分析
  6. Think PHP框架清除运行时缓存(php文件目录递归删除)
  7. 面试官再问你优先级队列,请把这篇文章丢给他
  8. 删除链表中重复的节点
  9. 文件夹管理: mv cp rm touch mkdir LS 创建文件夹 移动 删除

随机推荐

  1. Android开发之线程与线程池
  2. Android时间日期类小结
  3. Android studio Run 出现 红叉 AndroidRu
  4. 截击后的截击似乎不奏效。
  5. Android 网络框架学习之Retrofit
  6. 红茶一杯话Binder(传输机制篇_下)
  7. Linux(Android):如何禁用Intel DPST(显示节电
  8. 【原创】安卓程序员的大革命,Cocovr框架库
  9. Android开发中MinSDK与TargetSDK不在同一
  10. android项目 之 记事本(14) ----- 手势缩放