hadoop平台读取文件报错

背景: 生产环境有个脚本执行读取st层表数据时出现IO错误,查看表目录下的文件,都是压缩后的文件。详细信息如下:


Task with the most failures(4):
-----
Task ID:
task_201408301703_172845_m_003505


URL:
http://master:50030/taskdetails.jsp?jobid=job_201408301703_172845&tipid=task_201408301703_172845_m_003505
-----
Diagnostic Messages for this Task:
java.io.IOException: IO error in map input file hdfs://master:9000/user/hive/warehouse/pc.db/dwd_st_pc_list/dt=startup/startup-m-03653.gz
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:242)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:216)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.io.IOException: java.io.EOFException: Unexpected end of input stream
at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:276)
at org.apache.hadoop.hive.ql.io.HiveRecordReader.doNext(HiveRecordReader.java:79)
at org.apache.hadoop.hive.ql.io.HiveRecordReader.doNext(HiveRecordReader.java:33)
at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.next(HiveContextAwareRecordReader.java:108)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:236)
... 9 more
Caused by: java.io.EOFException: Unexpected end of input stream
at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:137)
at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:77)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:134)
at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:176)
at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:43)
at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:274)
... 13 more




FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
MapReduce Jobs Launched:
Job 0: Map: 12137 Reduce: 100 Cumulative CPU: 23227.51 sec HDFS Read: 2121148099 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 days 6 hours 27 minutes 7 seconds 510 msec


查看对应的job任务日志,发现有些文件解压报错,找到对应的文件,下载到本地解压,还是报错。
考虑到hadoop的备份了几份,于是把这份出错的文件删掉,删除重试上面的脚本即可。
<think>好的,我现在需要帮助用户解决Hadoop格式化NameNode时出现的错误。用户提到了一些引用内容,我需要结合这些引用中的信息来提供解决方案。 首先,引用[1]和[2]提到了QuorumException,这可能与JournalNode未启动有关。用户可能在格式化前没有启动JournalNode进程,导致无法达成法定人数。解决方案应该是先启动JournalNode,再执行格式化。 接下来,引用[3]涉及UnknownHostException,指出主机名解析失败。这可能是因为配置文件中使用了不正确的主机名,或者/etc/hosts文件里没有正确的主机映射。需要检查core-site.xml和相关的主机名配置是否正确。 引用[4]提到环境变量中的拼写错误,比如路径中的错别字,例如将local写成lcoal。这会导致Hadoop找不到正确的目录,从而报错。用户需要仔细检查所有配置文件中的路径和变量名是否正确。 另外,用户提供的引用中还提到了zkfc格式化错误,这可能与ZooKeeper配置有关。需要确认ha.zookeeper.quorum的配置是否正确,包括主机名和端口号是否准确,以及ZooKeeper服务是否正常运行。 此外,权限问题也是一个常见原因。Hadoop的存储目录可能需要正确的读写权限,用户需要确保这些目录存在,并且Hadoop用户有权限访问。 最后,多次格式化可能导致存储目录不一致,所以需要彻底清除旧的目录后再重新格式化,避免残留文件引发问题。 总结可能的解决方案步骤:检查JournalNode是否启动,验证主机名配置,检查配置文件中的拼写和路径,确认ZooKeeper配置,检查目录权限,清理旧目录后重新格式化。需要将这些步骤按逻辑顺序整理,确保用户能够逐步排查问题。</think>### Hadoop格式化NameNode报错解决方案 #### 1. **JournalNode未启动导致QuorumException** - **现象**: 报错包含`QuorumException`或`JournalNode`相关提示 - **解决步骤**: (1) 进入Hadoop的sbin目录 (2) 执行`./hadoop-daemon.sh start journalnode`启动所有节点的JournalNode进程[^2] (3) 重新执行格式化命令 - **验证方法**: ```bash jps # 查看进程列表中应有JournalNode ``` #### 2. **主机名解析失败问题** - **现象**: 报错`UnknownHostException`或`未知的名称`[^3] - **排查重点**: (1) 检查`/etc/hosts`文件中的主机名映射 (2) 验证`core-site.xml`中`ha.zookeeper.quorum`的配置格式: ```xml <property> <name>ha.zookeeper.quorum</name> <value>主机名1:2181,主机名2:2181,主机名3:2181</value> </property> ``` (3) 使用`ping 主机名`测试网络连通性 #### 3. **路径配置错误** - **现象**: 报错包含`Storage directory...not exist`或权限问题 - **关键检查点**: (1) `hdfs-site.xml`中`dfs.namenode.name.dir`路径有效性 (2) `core-site.xml`中`hadoop.tmp.dir`路径是否存在 (3) 确认路径权限: ```bash chmod 755 /opt/hadoop-repo/tmp ``` #### 4. **配置文件拼写错误** - **典型错误**: - `fs.defaultFS`误写为`fs.defalutFS` - `localhost`拼写为`localhos`[^4] - **排查工具**: ```bash grep -rin "hadoop.tmp.dir" $HADOOP_HOME/etc/hadoop/ ``` #### 5. **多次格式化冲突** - **处理方案**: (1) 删除所有节点的`hadoop.tmp.dir`目录 (2) 清理ZKFC数据: ```bash hdfs zkfc -formatZK -force ``` (3) 完整重新格式化流程: ```bash hdfs namenode -format hdfs zkfc -formatZK ``` #### 6. **ZooKeeper配置验证** - **关键检查项**: (1) ZK集群状态: ```bash echo stat | nc 主机名1 2181 ``` (2) 确认`ha.zookeeper.quorum`使用真实主机名而非IP[^3]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值