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

news/2025/2/4 6:00:29/

 注意事项

  • 配置文件的<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的目录:

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>


http://www.ppmy.cn/news/263249.html

相关文章

29 # node 中的 eventloop

process.cwd cwd&#xff1a;current working directory 表示当前用户的工作目录&#xff08;这个目录可以更改用户自己切换即可&#xff09; 当用户在哪执行 node 命令&#xff0c;就去哪找配置文件 console.log(process.cwd());__dirname&#xff1a;表示当前文件所在的目…

nuxt3.0学习-四、nuxt3.0的middleware(中间键)、composables(可组合物)以及Plugins(插件目录)

Nuxt3.0中间键了解地址 Nuxt提供了一个可定制的路由中间件框架&#xff0c;您可以在整个应用程序中使用它&#xff0c;非常适合在导航到特定路由之前提取要运行的代码&#xff1b; 路由中间件有三种&#xff1a; 匿名&#xff08;或内联&#xff09;路由中间件&#xff0c;直…

【Git】误删文件恢复文件回滚操作

案例1 比如工作区有一个文件叫test.txt文档&#xff0c;你需要删除&#xff0c;那么使用如下命令即可&#xff1a; git rm “test.txt”如果想撤销删除的文件&#xff0c;使用如下命令 git reset HEAD test.txt git checkout test.txt 案例2 如果你使用了git rm “test.txt”…

二、OkHttp_重试和重定向和Bridge拦截器

拦截器 1、RetryAndFollowUpInterceptor RetryAndFollowUpInterceptor会在失败时进行恢复&#xff0c;并根据需要跟随重定向。如果请求被取消&#xff0c;它可能会抛出 IOException 异常。 通过类的介绍得知其作用&#xff1a; 处理网络请求的重试&#xff1a;当网络请求失败…

vue3+element plus,使用分页total修改成中文

vue3element plus&#xff0c;使用分页total修改成中文 使用element plus的分页功能 el-pagination 的时候&#xff0c;total属性显示是英文 这是我建的一个新项目&#xff0c;总数显示的Total 1000 我们的需求是显示中文&#xff0c;共 1000 条 这个就很尴尬&#xff0c;组件…

万能转换器

将vulue数值转换为:Type类型; import cn.hutool.core.convert.Convert; Convert.convert(Type.class,value); 根据总数计算总页数 Params: totalCount – 总数 pageSize – 每页数 Returns: 总页数int i PageUtil.totalPage(count, pageSize);

墨西哥插头类型

A 型插头额定电流为 15 安培&#xff0c;主要用于美国、加拿大、墨西哥、南美洲和中美洲。这种 I 类非接地、非绝缘插头使用交流电流工作&#xff0c;称为 NEMA 1-15。插头有两个 1.5 毫米厚的刀片&#xff0c;长度为 15.9 – 18.3 毫米&#xff0c;间隔 12.7 毫米。中性刀片宽…

防爆航空插头插座

一、什么是防爆航空插头插座&#xff1f; 防爆航空插头插座也可称插头座&#xff0c;广泛应用于各种电气线路中&#xff0c;起着连接或断开电路的作用。因此防爆航空插头插座自身的电气参数是选择防爆航空插头插座首先要考虑的问题。正确选择和使用防爆航空插头插座是保证电路…