前言

       博主在使用CDH大数据平台时发现,CDH长时间运行,Cloudera Manager管理页面在运行Spark任务时候经常会出现组件大量内存交换警告,前期博主直接忽略,毕竟不是什么大问题,后期发现如果长时间黄色警告不处理,会误导页面查看集群状态,并且交换空间所占用磁盘空间越来越大,并且警告越来越多,后续还会有从黄色变为红色异常等情况,后进入管理界面发现,CDH在安装时,Linux操作系统,有选择交换空间地址交给CDH内存不足情况下使用,测试发现手动释放会解决,管理界面警告问题(黄色警告,看着也不舒服)。

第一步:首先理解一下linux的内存机制

       我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多(硬盘磁道寻址),因此,我们希望所有数据的读取和写入都在内存完成,而内存大小是有限的,并且内存价格高于硬盘价格,这样就引出了物理内存与虚拟内存的概念。

物理内存:就是系统硬件提供的内存大小,是真正的内存,相对于物理内存(free -h)可查看。
虚拟内存:在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出             的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间,称Swap Space,(swapon -s)可查看。

备注:阿里云默认不开启虚拟内存,不开启交换空间(不要问为什么,也许是为了挣钱)

第二步:进入CDH管理页面查看

①、由下图可知,组件发生警告20处

②、由下图发现,诸多服务组件均有发生。

③、点击主机,由下图知,三台服务器均发生内存交换。

第三步:查看Linux交换空间地址

随便选取一台服务器, swapon -s
由下图可知,Filename交换区挂载为文件/dev/dm-1,Type为分区,size大小为32833532kb,used使用为13568kb,级别为 -2

第四步:编写简单脚本,进行清空文件

脚本同样可以书写为

#!/bin/bash
#关闭所有交换空间
swapoff -a
#开启所有交换空间
swapon -a
#输出
echo "释放完毕"

执行脚本

再次查看,下图知,交换空间使用为 0

第五步:查看CDH管理页面,查看CDH管理服务

多台服务器均执行释放空间命令,发现交换空间为 0,同时警告消失,心情舒服多了

第六步:进行定时释放,避免空间占用过高

vi /etc/crontab

博主按天释放,因为大数据平台也就在每天执行大量离线计算,所以足够,各位按场景配置。

Logo

更多推荐