CDH运维swap处理
博主在使用CDH 6.2大数据平台时发现,CDH长时间运行,Cloudera Manager管理页面在运行Spark任务时候经常会出现组件大量内存交换警告,前期博主直接忽略,毕竟不是什么大问题,后期发现如果长时间黄色警告不处理,会误导页面查看集群状态,并且交换空间所占用磁盘空间越来越大,并且警告越来越多,后续还会有从黄色变为红色异常等情况,后进入管理界面发现,CDH在安装时,Linux操作系统,有选择交换空间地址交给CDH内存不足情况下使用,测试发现手动释放会解决,管理界面警告问题(黄色警告,看着也不舒服)。
目录
- swap的作用
- CDH告警
- 解决方案
- 开启关闭swap
swap在Linux中的作用
我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多(硬盘磁道寻址),因此,我们希望所有数据的读取和写入都在内存完成,而内存大小是有限的,并且内存价格高于硬盘价格,这样就引出了物理内存与虚拟内存的概念。
物理内存 就是系统硬件提供的内存大小,是真正的内存,相对于物理内存(free -h)可查看。
虚拟内存 在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出 的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间,称Swap Space,(swapon -s)可查看。
CDH告警
CDH集群告警
CDH集群单台机器警告
交换空间
解决方案
一次性解决方案
-
设置swappiness值为0,表示尽可能不使用交换内存
临时设置方案,重启后设置不生效
(控制台输入)sysctl vm.swappiness=0
查看修改后的值
# 控制台输入如下语句 cat /proc/sys/vm/swappiness
永久设置方案,重启后设置依然生效
# 在/etc/sysctl.conf 文件里添加如下参数 sudo vi /etc/sysctl.conf vm.swappiness=0 # 或者追加模式, 直接在控制台执行如下语句 echo 'vm.swappiness=0' >> /etc/sysctl.conf
-
彻底关闭swap
首先要保证内存剩余要大于等于swap使用量,否则会宕机!根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上。通常通过重新挂载swap分区完成释放swap。
使用free -h查看剩余内存情况
free -h
查看交换空间挂载情况
swapon -s
关闭挂载分区的交换空间
# 关闭挂载分区 swapoff /dev/dm-1 # 开启挂载分区 # swapon /dev/dm-1
如下图命令所示
在执行swapoff 命令以后,swap会逐渐减少
定期清理方案
编辑脚本 /root/cron/cron_clear_swap.sh
#!/bin/bash
#关闭所有交换空间
swapoff -a
#开启所有交换空间
swapon -a
#输出
echo "释放完毕"
编辑定时任务
# 执行
crontab -e
# 编辑调度,并保存
00 23 * * * /root/cron/cron_clear_swap.sh
参考blog
CDH交换内存警告解决方法
https://blog.csdn.net/lingbo229/article/details/81912248
CDH大数据平台内存交换,警告问题
https://blog.csdn.net/weixin_38822045/article/details/107695935