说明
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 内存
登录 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>
同步文件
同步到 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 ,如下图,内存已经修改成功: