hadoop3.x yarn 内存配置

说明

yarn 内存默认配置都非常大,nodemanager 默认内存是 8G

访问:http://hadoop1:8088/cluster/scheduler ,如下图:

而我们虚拟机 没这么大的内存,所以要根据 物理内存 ,进行设置,不要超过 物理内存

查看linux内存

通过下面命令查看linux的内存(详细解释点击 链接)

free -h

执行结果如下:

解释:

  • total: 内存总数
  • used: 已经使用内存数
  • free: 完全空闲内存
  • shared: 多个进程共享的内存
  • buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)
  • cached: 用于文件内容的缓冲
  • available:真正剩余的可被程序应用的内存数

由于完全空闲 3.6G,所以分配 yarn内存为 3G,剩余 0.6G 给其他软件用

分配内存

分配 nodemananger 内存

注意:这里只是演示,之后要改回 8192。因为内存太小,将 无法同时运行2个程序,而有时(如:oozie、flink)是需要同时运行2个程序的,此时将无法运行成功!

注意:这里只是演示,之后要改回 8192。因为内存太小,将 无法同时运行2个程序,而有时(如:oozie、flink)是需要同时运行2个程序的,此时将无法运行成功!

注意:这里只是演示,之后要改回 8192。因为内存太小,将 无法同时运行2个程序,而有时(如:oozie、flink)是需要同时运行2个程序的,此时将无法运行成功!

登录 hadoop1

修改 yarn-site.xml

vim /program/hadoop-3.0.3/etc/hadoop/yarn-site.xml

增加下面内容:

<!-- nodemanager最大可用内存,不要超过物理内存 -->
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>3072</value>
</property>

容器最小申请内存(可略)

每个容器可以申请最小内存,默认1024。一般不需要改动

<!-- 每个容器可以申请最小内存,默认1024 -->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
</property>

容器最大申请内存

每个容器可以申请最大内存,默认 8192,这里改为 3072,不能超过 nodemanager内存

<!-- 每个容器可以申请最大内存,默认8192 -->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>3072</value>
</property>

关闭校验物理内存

防止执行程序报错

<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

关闭检查虚拟内存

要关闭,否则执行任务时可能报错,详见 链接

<!-- 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

同步文件

同步到 hadoop2:

rsync -av /program/hadoop-3.0.3/etc/hadoop/*  root@hadoop2:/program/hadoop-3.0.3/etc/hadoop/

同步到 hadoop3:

rsync -av /program/hadoop-3.0.3/etc/hadoop/*  root@hadoop3:/program/hadoop-3.0.3/etc/hadoop/

重启 yarn

登录 hadoop2,执行下面命令:

stop-yarn.sh
start-yarn.sh

查看内存

访问:http://hadoop1:8088/cluster/scheduler ,如下图,内存已经修改成功: