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>


相关文章
|
6月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
24天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
60 6
|
2月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
146 9
|
2月前
|
XML JavaScript 前端开发
XML 注意事项
XML 注意事项
|
3月前
|
资源调度
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
53 2
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
|
4月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
314 18
|
4月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
3月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
213 5
|
3月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
191 4
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
113 4