Yarn【label-based scheduling】实战总结(二)

洋哥实践大作。

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]#

然后通过yarn rmadmin -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中,队列不能被删除。

相关阅读:

Yarn【label-based scheduling】实战总结(一)

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2016-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

Avro序列化&反序列化和Spark读取Avro数据

本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFrame进行操作。

1.3K9
来自专栏杨建荣的学习笔记

最近的几个技术问题总结和答疑 (r8笔记第19天)

笔记写了不少,有时候有的朋友问我几个关键字,我就会从脑海里进行搜索,凡是写过的,搜索一下总能找到,帮助了别人,提高了自己,何乐而不为。 但是笔记写了很多...

3306
来自专栏后端技术探索

PHP非阻塞模式

让PHP不再阻塞当PHP作为后端处理需要完成一些长时间处理,为了快速响应页面请求,不作结果返回判断的情况下,可以有如下措施:

1641
来自专栏阿杜的世界

Java Web技术经验总结(四)

在这里,resultType指的是查询到的每条记录的类型,因此应该用java.lang.String。

952
来自专栏jeremy的技术点滴

netty3与netty4的区别

1.4K4
来自专栏H2Cloud

C++ 多进程并发框架FFLIB之Tutorial

      FFLIB框架是为简化分布式/多进程并发而生的。它起始于本人尝试解决工作中经常遇到的问题如消息定义、异步、多线程、单元测试、性能优化等。基本介绍可以...

6036
来自专栏前端架构与工程

从零开始搭建前端数据监控系统(一)-同类产品调研

1 Google Analytics GA向window暴露一个名为ga()的全局函数,ga()函数以参数格式、数目来分发不同的行为。这种模式的好处是API单一...

3145
来自专栏互联网高可用架构

简单易用的消息队列框架的设计与实现

2532
来自专栏FreeBuf

如何从内存提取LastPass中的账号密码

简介 首先必须要说,这并不是LastPass的exp或者漏洞,这仅仅是通过取证方法提取仍旧保留在内存中数据的方法。之前我阅读《内存取证的艺术》(The Art ...

2738
来自专栏帘卷西风的专栏

使用Cmake生成跨平台项目编译解决方案

    项目最近有需求在windows下面运行,我花了几周时间将linux的服务器移植到windows下面,目前已经能够正常运行服务器,目前又有了新需求,两边的...

6052

扫码关注云+社区

领取腾讯云代金券