在龙芯平台上使用hadoo进行数据解析测试时,发现一个现象,hadoop总是自动停止运行,然后又自动启动。
刚开始我怀疑是这台龙芯服务器的hadoop环境没有配置好。因为还有另外一台龙芯服务器hadoop运行良好,所以我就仔细对比了两台服务器的hadoop配置。结果发现配置完全相同。
在后面继续测试的过程中,我发现刚启动hadoop的时候hadoop的运行状态是正常的,等到我的应用程序进行数据解析的时候,hadoop就会出现问题,从启动hadoop到我的应用程序启动,并进行数据解析,大概是十分钟左右的时间,于是我怀疑hadoop是不是只能正常运行十分钟左右的时间,然后就会自己挂掉,于是接下来我进行了烤机试验,也就是,启动hadoop之后,什么都不干,看看hadoop自己会不会出问题。
测试的结果是,hadoop运行了半个小时,依然正常。
在往后的测试中,有一次测试我突然发现,不启动我的应用程序的时候,hadoop运行正常,只要把我的web应用一启动,都不用执行数据解析的功能,还突破就会出现问题,那么问题基本上可以确定是因为我的应用程序引起的。
这时候我才想起来,之前在14项目中,出现过hadoop运行几个小时时间之后,namenode, datanode, secondarynamenode, jobtracker, tasktracker当中某个进程自动退出的问题,于是就在应用程序上加了一个保证措施,应用程序启动之后,会自动启动一个线程,每隔三十秒检查一下hadoop的状态,检查的方法就是查看这五个进程都在不在,如果发现某个进程不在了,那么就要重新启动hadoop。
在14项目中,hadoop版本是1.2,hadoop的五个进程的名字如上文所述,但是在这个项目中,hadoop这个版本换成了2.4,hadoop的五个进程的名字变了,变成了nodemanager和resourcemanager等,结果应用程序检查的时候发现hadoop的五个进程总是不在,于是总是要重新启动hadoop,问题就是这样产生的。
网友评论