Yarn【关于配置yarn-site.xml的注意事项】

简介: Yarn【关于配置yarn-site.xml的注意事项】

注意事项

  • 配置文件的<description>表签内容可以删,不影响配置文件的读取。
  • 最重要的<name><value>标签中间的内容一定要好好检查,尤其是在复制别人的配置信息的时候格外要注意:
  • value中有没有空格、有没有因为你打开工具的不同导致部分编码不一致一些符号乱码等问题。
  • 尤其是从 pdf文件 复制内容的时候,很容易把每页的标题页脚复制进去,以及pdf复制的内容中有我们看不出来的回车符\n,我今天就是因为配置Yarn的容量调度器,报错说这可能是由于 YARN 包中缺少必要的类或配置文件,或者与调度器相关的配置属性被设置为无效的值。
2023-06-07 16:33:29,238 INFO org.apache.hadoop.service.AbstractService: Service RMActiveServices failed in state INITED
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Could not instantiate Scheduler: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capaci
ty.CapacityScheduler
at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.createScheduler(ResourceManager.java:473)

很多时候配置文件光看是一点问题没有的,但是需要仔细审阅,不然会让你怀疑到自闭。

如果还是有报错,那说明就是真的错了,这个时候就需要查看报错日志了

关于yarn-site.xml的参数配置

针对我的电脑(锐龙R7),主要配置三部分

1、ResourceManager

<!-- 1.Yarn-ResourceManager相关配置 ,处理客户端请求,监控管理所有节点(NodeManager)-->
<!-- 选择调度器,默认容量 ,大公司-公平调度器 中小型公司-容量调度器 -->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<!-- ResourceManager 处理调度器请求的线程数量,默认 50(也就是用于处理客户端请求的线程数量);
如果提交的任务数大于 50,可以增加该值,但是不能超过 3 台 * 4 线程 = 12 线程(去除其他应用程序实际不能超过 8) -->
<property>
<name>yarn.resourcemanager.scheduler.client.thread-count</name>
<value>8</value>
</property>

2、NodeManager

注意:


并不是说你配置好直接分发给所有节点就完事了,比如NodeManager的参数配置,这是管理每台节点的,如果你的节点的硬件配置(CPU、内存)都差不多,那没问题,你可以配置完yarn-site.xml 后直接分发给集群所有节点。


但是如果你节点的配置相差比较大,一台节点是很好的处理器(比如8核16线程),那么你就需要为它单独配置yarn-site.xml(可以给它配置虚拟核/物理核为 2.0,因为这个参数默认是 1.0)。也就是说我们是根据每台节点的情况不同设置各自的NodeManager参数的。

<!-- 2.Yarn-NodeManager相关配置 管理单节点内存、CPU等资源 -->
<!-- 是否让 yarn 自动检测硬件进行配置,默认是 false,如果该节点有很多其他应用程序,建议
手动配置。如果该节点没有其他应用程序,可以采用自动 -->
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
<value>false</value>
</property>
<!-- 是否将虚拟核数当作 CPU 核数,默认是 false(按照物理核数),如果处理器比较好可以考虑用虚拟核做CPU核数 (比如假设1个i7顶两个i5,那就可以开启),如果节点配置差不多就不需要开启-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>false</value>
</property>
<!-- 虚拟核数和物理核数比例,默认是 1.0(前提是上面得设 将虚拟核作为CPU核数 为true) 
注意:这个是针对每个节点配置的,也就是说我们是根据每台节点的情况不同设置各自的NodeManager参数的。
-->
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>1.0</value>
</property>
<!-- NodeManager 使用内存数,默认 8G,根据我们实际情况(我的内存是4G)修改为 4G 内存 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- nodemanager 的 CPU 核数,不按照硬件环境自动设定时默认是 8 个,修改为 4 个 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>

3、Container

<!-- 3.Yarn-Container相关配置 -->
<!-- 容器最小内存,默认 1G -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<!-- 容器最大内存,默认 8G,修改为 2G(不能超过我们NodeManager节点的最大内存) -->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<!-- 容器最小 CPU 核数,默认 1 个 -->
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<!-- 容器最大 CPU 核数,默认 4 个,修改为 2 个(不能超过我们NodeManager的最大CPU核数) -->
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>2</value>
</property>
<!-- 虚拟内存检查,默认打开,修改为关闭 -->
<property>
<description>Whether virtual memory limits will be enforced for
containers.</description>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 虚拟内存和物理内存设置比例,默认 2.1 -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>

如何查看Yarn报错信息

比如我的Yarn是在hadoop103上的,查看报错日志就应该去hadoop103上。

默认在我们Hadoop的主目录下有一个logs的目录:

可以通过 shift +g 来定位到最新的日志日期去查看。


vim编辑器配置文件

显示行号

命令:esc : set number

删除多行内容

删除1到10行内容

命令:esc:1,10d


附上我今天额外添加的配置信息,日后回来检查

<!-- 1.Yarn-ResourceManager相关配置 ,处理客户端请求,监控管理所有节点(NodeManager)-->
<!-- 选择调度器,默认容量 ,大公司-公平调度器 中小型公司-容量调度器 -->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<!-- ResourceManager 处理调度器请求的线程数量,默认 50(也就是用于处理客户端请求的线程数量);
如果提交的任务数大于 50,可以增加该值,但是不能超过 3 台 * 4 线程 = 12 线程(去除其他应用程序实际不能超过 8) -->
<property>
<name>yarn.resourcemanager.scheduler.client.thread-count</name>
<value>8</value>
</property>
<!-- 2.Yarn-NodeManager相关配置 管理单节点内存、CPU等资源 -->
<!-- 是否让 yarn 自动检测硬件进行配置,默认是 false,如果该节点有很多其他应用程序,建议
手动配置。如果该节点没有其他应用程序,可以采用自动 -->
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
<value>false</value>
</property>
<!-- 是否将虚拟核数当作 CPU 核数,默认是 false(按照物理核数),如果处理器比较好可以考虑用虚拟核做CPU核数 (比如假设1个i7顶两个i5,那就可以开启),如果节点配置差不多就不需要开启-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>false</value>
</property>
<!-- 虚拟核数和物理核数比例,默认是 1.0(前提是上面得设 将虚拟核作为CPU核数 为true) 
注意:这个是针对每个节点配置的,也就是说我们是根据每台节点的情况不同设置各自的NodeManager参数的。
-->
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>1.0</value>
</property>
<!-- NodeManager 使用内存数,默认 8G,根据我们实际情况(我的内存是4G)修改为 4G 内存 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- nodemanager 的 CPU 核数,不按照硬件环境自动设定时默认是 8 个,修改为 4 个 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>
<!-- 3.Yarn-Container相关配置 -->
<!-- 容器最小内存,默认 1G -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<!-- 容器最大内存,默认 8G,修改为 2G(不能超过我们NodeManager节点的最大内存) -->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<!-- 容器最小 CPU 核数,默认 1 个 -->
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<!-- 容器最大 CPU 核数,默认 4 个,修改为 2 个(不能超过我们NodeManager的最大CPU核数) -->
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>2</value>
</property>
<!-- 虚拟内存检查,默认打开,修改为关闭 -->
<property>
<description>Whether virtual memory limits will be enforced for
containers.</description>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 虚拟内存和物理内存设置比例,默认 2.1 -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>


相关文章
|
1月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
4月前
|
存储 Java 测试技术
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
242 0
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
7 0
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
152 0
|
2月前
|
Java
logback配置,命名为logback-spring.xml
logback配置,命名为logback-spring.xml
|
2月前
|
XML Java 测试技术
【SpringBoot】基于 Maven 的 pom.xml 配置详解
【SpringBoot】基于 Maven 的 pom.xml 配置详解
234 0
【SpringBoot】基于 Maven 的 pom.xml 配置详解
|
2月前
log4j2.xml的日志打印配置
log4j2.xml的日志打印配置
30 0
|
3月前
springmvc web.xml文件配置中文编码过滤器
springmvc web.xml文件配置中文编码过滤器