今天使用tpcds for spark时,再写入数据到事实表中一直崩溃,偏偏还总在同一阶段,一开始以为是内存原因,把executor内存跳到10g还是出现错误,又以为是cores原因,executor的cpu cores调到8个还是不行,直到我看到k8s运行节点的污点中出现disk pressure,我才发现是硬盘原因,因为docker和k8s的默认存储路径是/var/lib,这个是我的系统盘,只有50g,而tpcds数据有300g,在写入到事实表时,系统盘是无法容纳tpcds数据,记录下将docker和k8s移动到存储盘/home/路径下的操作
1.新建docker和k8s存储路径
mkdir -p /home/docker_data
mkdir -p /home/kubelet_data
2.关闭k8s和docker服务
systemctl stop docker
systemctl stop kubelet
3.将原路径文件拷贝到新路径
cp -r /var/lib/docker /home/docker_data/
cp -r /var/lib/kubelet /home/kubelet_data/
4.备份原文件
mv /var/lib/docker /var/lib/dockerbak
mv /var/lib/kubelet /var/lib/kubeletbak
5.新建软连接
ln -s /home/docker_data/docker/ /var/lib/docker
ln -s /home/kubelet_data/kubelet/ /var/lib/kubelet
6.卸载掉挂载到硬盘的源路径服务
在完成以上操作后,docker和k8s的存储路径就到新路径下了,但是此时存在docker的container和k8s的pod使用原路径挂载到硬盘上,需要将这些挂载卸载掉
使用df -ln
命令,可以看到有docker和k8s服务还是使用原路径,使用umount
命令将这些挂载卸载掉