背景: node
单节点运行hadoop全部组件(namenode,datanode,jobtracker,tasktarcker等)运行任务后,全部任务卡死,没法继续运行。使用oozie管理job。 服务器
分析: oop
查看hadoop日志并无发现错误,所以,怀疑配置文件出现问题。逐步检查配置文件出现问题的地方。首先,检查服务器负载境况,发现服务器cpu使用率低于20%,内存占用不足50%,硬盘io tps 小于3。机器负载不重。能够分析出,hadoop中的任务卡死,不是因为硬件资源不足致使的。换句话说,就是hadoop的其余设置致使的。从而检查hadoop的配置文件中配置是否合理。检查hadoop的conf/hadoop-env.sh。发现 日志
HADOOP_HEAPSIZE的值为8192; xml
代表hadoop各个组件启动时,分配的内存足够大。不存在内存分配不足的问题。接着查看其余值发现没什么特殊的地方。使用jps查看chind数量,发现有4个,检查配置文件中的conf/mapred-site.xml,其中mapred.tasktracker.map.tasks.maximum的值刚好是4,代表tasktracker的chind中map的数量最可能是4个,而后确认了下job开始的位置,发现就是在执行map的时候开始,说明同时执行4个map时,发生竞争,致使任务不能进行下去,修改其值为合适大小(网上说能够修改成任务数/cpu核心数=1~2之间),从新模拟,克服死锁,问题成功解决。 内存