hadoop运维之jobtracker无故停止服务

11 篇文章 0 订阅
10 篇文章 8 订阅

       今天下午同事在使用hive提交查询时,抛出执行错误:


      于是打开jobtracker的管理页面,发现正在运行的job数目为零,tasktracker心跳正常,这一异常现象让我觉得jobtracker可能是停止服务了(一般很少出现集群的运行job数为零的情况),于是手动提交了一个mapred任务进行测试,运行错误信息如下:

12/07/03 18:07:22 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.EOFException
12/07/03 18:07:22 INFO hdfs.DFSClient: Abandoning block blk_-1772232086636991
458_5671628
12/07/03 18:07:28 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.EOFException
12/07/03 18:07:28 INFO hdfs.DFSClient: Abandoning block blk_-2108024038073283869_5671629
12
/07/03 18:07:34 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 192.168.1.25:50010
12/07/03 18:07:34 INFO hdfs.DFSClient: Abandoning
 block blk_-6674020380591432013_5671629
12/07/03 18:07:40 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 192.168.1.26:50010
12/07/0
3 18:07:40 INFO hdfs.DFSClient: Abandoning block blk_-3788726859662311832_5671629
12/07/03 18:07:46 WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable to create new block.
        at or
g.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3002)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
        at org.apache.hadoop.hd
fs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)

12/07/03 18:07:46 WARN hdfs.DFSClient: Error Recovery for block blk_-3788726859662311832_5671629 bad datanode[2] nodes == null
12/07
/03 18:07:46 WARN hdfs.DFSClient: Could not get block locations. Source file "/tmp/hadoop-hadoop/mapred/staging/hadoop/.staging/job_201206270914_17301/job.jar" - Aborting...
      从namenode日志中发现文件块blk_-2108024038073283869_5671629是用于jobtracker的任务jar包:

2012-07-03 18:07:27,316 INFO org.apache.hadoop.hdfs.StateChange: BLOCK* NameSystem.allocateBlock: /tmp/hadoop-hadoop/mapred/staging/
hadoop/.staging/job_201206270914_17301/job.jar. blk_-2108024038073283869_5671629
      再到相应的datanode 上去查看日志,发现没有该文件块的信息,这下问题出来了:jobtracker向namenode申请了mapred作业配置的存储资源,且namenode正确的分配了资源(datanode 列表),然后jobtracker再联系datanode时报错了,但是当时datanode还处于正常工作中(有运行中的数据加载业务),那么,是什么原因导致jobtracker在向datanode写入数据时失败了呢?

     于是再仔细查看问题发生时datanode上的日志,发现这么一条日志信息:

2012-07-03 18:07:10,274 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.1.25:50010, storageID=DS
-841642307-50010-1324273874581, infoPort=50075, ipcPort=50020):DataXceiver
java.io.IOException: xceiverCount 257 exceeds the limit of concurrent xcievers 256
    百度了下错误信息:xceiverCount 257 exceeds the limit of concurrent xcievers 256的含义,发现报错的原因主要是因为配置项:
<property>
        <name>dfs.datanode.max.xcievers</name>
        <value>256</value>
</property>
     dfs.datanode.max.xcievers 对于datanode来说,就如同linux上的文件句柄的限制,当datanode 上面的连接数操作配置中的设置时,datanode就会拒绝连接。

     好了,问题找到了,只要找机会修改集群所有datanode节点的配置,将dfs.datanode.max.xcievers参数修改大一些即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值