cloudera-scm-agent因IP更换无法启动
前段时间安装好了CDH4.1后,运行了一段时间,后来,把主机IP地址改掉了,但是发现服务都启动不了,怎么办呢?想到的解决方式如下:
- 把主机IP地址改回来
- CDH4.1上的IP地址改成和主机IP地址一样。
如下图,是我安装的CDH4.1的主机情况。
<ignore_js_op>
第一种方法改回主机IP地址后,重启Cloudera相关服务后,能正常运行。当我试第二种方法却发现,没地方改IP地址,因为,这台机器是Cloudera Manager的管理节点,无法直接修改IP地址。既然无法直接修改IP地址,那么只能重装,把现有的主机删掉,然后重新把所有服务装到主机目前的IP地址上。
删除主机,重新配置主机服务的过程如下:
一、删除主机
点击 <ignore_js_op> ,选择删除主机,却出现“无法删除以下 1 个主机因为它(们)具有角色实例或未完全被取消配置。”如下图所示。
<ignore_js_op>
当前主机下有服务还在运行或者是当前主机配置了服务未完全删除都会导致这个问题。
在这里只可能是当前主机配置的服务未删除,因为,我们改过了IP,服务本身就没办法启动。点击页面上的服务链接。查看下,我们以前安装了什么服务,我配置的服务如下图。
<ignore_js_op>
点击操作,把服务一个个删除完,删完之后,再删除主机,这样就能成功地把主机删除。
二、重新配置主机服务
点击页面上的主机,然后选添加主机,一步步继续,到了为CDH群集安装指定主机页面(下图),输入我们改过的主机IP地址,然后搜索,之后直接继续。
<ignore_js_op>
这个过程会很快的,因为我们的机器本来就是已经装过了CDH4.1的,但是后来出现了个错误,如下图所示。
<ignore_js_op>
这个问题看起来摸不着头脑,蹦进我脑子里的第一个念头是在控制台查看cloudera-scm-agent这个服务的状态,查了网上的资料,却发现关于Cloudera Manager的中文资料是如此的少,根本没资料可以参考,很幸运,问题终于让我解决了,下面是我解决这个问题的步骤。
- 查看cloudera-scm-agent服务的状态。
- service cloudera-scm-agent status
显示:cloudera-scm-agent服务已死,但pid文件还存在。因此,我猜想,是不是以前直接把IP地址改过之后,服务未正常关闭,导致pid文件还存在。因此把pid文件删除。
- [root@client ~]# cd /var/run
- [root@client ~]# rm –f cloudera-scm-agent.pid
我们配置CDH的时候,就默认把进程文件都放在/var/run这个目录下,如果不知道这个pid文件在哪,用locate *.pid这样模糊查询,也能找到pid文件。可是删了之后,CDH还是不能正常启动。于是,只能去查看日志文件了。
查询日志文件。
- [root@client ~]# cd /var/log/cloudera-scm-agent
- [root@client ~]# vim cloudera-scm-agent.log
在日志中发现这样一条错误信息:
ERROR ENGINE Error in HTTP server: shutting down Traceback (most recent call last)
这下问题找到了,是因为httpd服务有问题。
- [root@client ~]# service httpd restart
显示:…,using 192.168.10.188 for ServerName,这就是问题的根源了,我现在主机的IP地址已经不是188了,CDH4.1本来配置服务用的188地址,因此肯定是某个地方这个IP地址没有修改。最后发现原来问题出在/etc/hosts底下,因为CDH4.1会读取/etc/hosts下的主机名和主机地址,以前配过的,却没改过来,导致http服务无法通信,cloudera-scm-agent无法启动。修改了host文件后,CDH4.1正常启动了。