Spark on YARN 常见问题总结
问题1:
在slave上运行40~50个executor之后,该slave上的nodemanager直接崩溃,报错信息如下:
java.lang.OutOfMemory, unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
原因:
排查内存充足,可见根因并非内存不足。
实际原因为Linux默认进程数量限制,Linux默认进程数为4096,而60个executor会创建近7000个进程,导致超过系统进程数限制而作业失败。
解决方案:
修改Linux允许的最大进程数。
修改 /etc/security/limits.conf 文件,添加如下代码:(hadoop为用户名)
hadoop soft nofile 65536 // 最大文件数软限制
hadoop hard nofile 65536 // 最大文件数硬限制
hadoop soft nproc 65536 // 最大进程数软限制
hadoop hard nproc 65536 // 最大进程数硬限制
保存后重新登录
如果已配置hadoop用户免密登录,则可以直接修改 /etc/profile 文件,加入如下代码:
ulimit -u 65536
ulimit -n 65536
每次进入系统时会运行profile,即可解除Linux进程和文件数限制。
问题2:
slave节点无法接收container,排查发现节点状态是 unhealthy node
原因:
排查unhealthy node reason:节点系统盘耗尽
解决方案:
挂载新硬盘分区,扩容Linux根分区
一、分区并创建PV
1).创建新分区
$>fdisk
输入m显示帮助菜单,输入n创建一个分区,选择p创建主分区
(可以通过e创建Extend分区,然后再创建p)
输入P查看刚才创建好的分区信息
输入t改变分区的格式为8e(Linux LVM)逻辑卷格式
输入w保存退出分区界面
2).创建物理卷
$>pvcreate /dev/sda4
$>pvdisplay
$>pvscan
二、扩容VG
1).把刚才创建好的pv添加到系统中根分区所在卷组中。之前看到系统的根分区所在的卷组为/dev/mapper/rhel/root,组名为rhel,逻辑卷名为root
该卷组Free PE为0,说明卷组已经没有容量了
2).扩容原有卷组
$>vgextend rhel /dev/sda4
$>vgdisplay
三、扩容LV,即扩容根分区
1).根据Free PE和PE size 来扩容根分区
$>lvextend -L +xxG /dev/mapper/rhel/root
$>lvdisplay
2).使扩容命令立即生效
$>xfs_growfs /dev/rhel/root
- 点赞
- 收藏
- 关注作者
评论(0)