最近望集群添加新机器,但是比较鲁莽,新机器没有进行参数调优,结果使得新添加的节点都挂掉了,辛亏及时回滚,不然影响了线上的一些数据处理任务。现在总结下当时发生的问题,以及最终的解决办法。
问题:
新加入的节点的nodemanager报出如下错误:
java.lang.OutOfMemoryError : unable to create new native Thread解决办法:
乍一看,以为是内存溢出,是内存的原因。其实是线程数量创建超过机器的限制,导致的问题,跟内存没有关系。
修改一:
之后修改/etc/security/limits.conf中的参数,将如下内容加入:
* soft nofile 100000
* hard nofile 100000
* soft nproc 100000
* hard nproc 100000reboot机器,没有效果。
修改二:
将如下内容加入到home目录的.bash_profile文件中。
ulimit -u 100000 -s 10240source .bash_profile后,使用ulimit -a查看是否生效,发现修改有效果,但是集群作业依旧跑挂。
修改三:
将如下内容添加到/etc/security/limits.d/90-nproc.conf文件中。
* soft nproc 65535这次修改完后,终于正式生效。
经过这次集群节点添加,楼主哭死的心都有了,楼主自己对linux的各个系统参数了解甚少,导致查看hadoop的log后依旧不能有效解决问题,还是求助各路大神后才解决的。所以一个好的hadoop集群运维工程师,首先是一个好的运维工程师,必须得玩转linux。
版权声明:本文为lizongyao123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。