环境:CentOS7、Hadoop2.6.4
背景:安装后启动正常,一段时间在来启动发生这种情况。
现象:
启动后没有NameNode进程,于是查看日志,日志显示ulimit -a for user root,潜意识还以为文件不能读。(坑1)查看网上资料,说是同时打开文件描述符数量受限,于是更改参数为10000,以下图片是修改参数后的。重启dfs,问题依然没有解决。
看到一篇博文说启用了Clickhouse导致,检查了下果然是这个原因。查看Clickhouse及端口信息,是由于Clickhouse的默认端口9000与dfs的默认端口一致,导致NameNode进程启动失败。
通过Clickhouse stop,关闭Clickhouse服务,并通过ps -ef|grep clickhouse确认服务关闭。一段时间后再去重启dfs,发现问题还在,检查Clickhouse发现服务还在。查资料发现Clickhouse会自动重启服务(坑2)。
注:一般情况下,如果不是主动使用systemctl stop clickhouse-server 停止clickhouse
而是使用kill -9 pid关闭clickhouse,或者异常奔溃,那么如果一切正常的情况下clickhouse server 10s检测进程,自动重启。
通过命令systemctl stop clickhouse-server 停止clickhouse服务后,再启动dfs正常。
回到坑1
偶然情况下进入hadoop的日志目录
查看hadoop-root-namenode-hadoop.log,能查看,而hadoop-root-namenode-hadoop.out却显示ulimit -a 的信息。直到用vim hadoop-root-namenode-hadoop.out 打开并删除了其中一行数据,才明白.out后缀中写入的就是ulimit -a的信息,并不是同时打开文件描述符数量限制导致文件打不开。
另外通过查看hadoop-root-namenode-hadoop.log日志也能看到namenode没有起来的原因
,就是端口号冲突导致的。
总结:遇到类似问题,第一时间还是看日志,这次完全是看错了日志文件。被下图那句误导了。