文件 jobtracker.info 只能复制到 0 个节点,而不是 1 个
Posted
技术标签:
【中文标题】文件 jobtracker.info 只能复制到 0 个节点,而不是 1 个【英文标题】:File jobtracker.info could only be replicated to 0 nodes, instead of 1 【发布时间】:2013-03-13 05:05:21 【问题描述】:我正在尝试在Fedora 17
上设置Hadoop
集群。
当我给/bin/star-all.sh
命令时,守护进程正在主节点和从节点上启动。
但是当我在主节点上查看数据节点的日志文件时,我得到以下 EROOR
ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop1 cause:java.io.IOException: 文件 /home/hadoop1/mapred/system/jobtracker.info 只能复制到 0 个节点,而不是 1
2013-03-23 15:37:08,205 INFO org.apache.hadoop.ipc.Server: IPC Server handler 5 on 9100, call addBlock(/home/hadoop1/mapred/system/jobtracker.info, DFSClient_-838454688 , null) from 127.0.0.1:40173: error: java.io.IOException: File /home/hadoop1/mapred/system/jobtracker.info 只能复制到 0 个节点,而不是 1 java.io.IOException:文件 /home/hadoop1/mapred/system/jobtracker.info 只能复制到 0 个节点,而不是 1 个 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558) 在 org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
我也在尝试运行 wordcound 程序。使用命令将数据复制到 HDFS 时
$bin/hadoop dfs -copyFromLocal /home/hadoop1/Documents/wordcount/ /home/hadoop1/hdfs/data 我收到以下错误
WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/hadoop1/hdfs/data/wordcount/pg20417.txt 只能复制到 0 个节点,而不是 1 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558) 在 org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696) 在 sun.reflect.GeneratedMethodAccessor5.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
at org.apache.hadoop.ipc.Client.call(Client.java:1070)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
at $Proxy1.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
at $Proxy1.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3510)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3373)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2589)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2829)
13/03/23 15:41:05 WARN hdfs.DFSClient: 块空错误数据节点 [0] 节点的错误恢复 == null 13/03/23 15:41:05 警告 hdfs.DFSClient: 无法获取块位置。源文件“/home/hadoop1/hdfs/data/wordcount/pg20417.txt” - 正在中止... copyFromLocal: java.io.IOException: 文件 /home/hadoop1/hdfs/data/wordcount/pg20417.txt 只能复制到 0 个节点,而不是 1 个 13/03/23 15:41:05 错误 hdfs.DFSClient: 异常关闭文件 /home/hadoop1/hdfs/data/wordcount/pg20417.txt : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/hadoop1/hdfs/data/wordcount/pg20417.txt 只能复制到0个节点,而不是1个 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558) 在 org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696) 在 sun.reflect.GeneratedMethodAccessor5.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
感谢您在这方面的帮助..
【问题讨论】:
检查您的名称节点的日志 - 您是否连接了任何数据节点?如果没有,则检查数据节点的日志。这个问题已经问过很多次了,通常是数据节点没有运行,或者tmp目录下配置了dfs.data.dir,重启机器后清除 我检查了 datanode 日志。它显示 Retrying connect to server:localhost/127.0.0.1:9100: 已经尝试了 9 次...日志文件的最后一行是 localhost/127.0.0.1 的服务器: 9100 还没有。我是 Hadoop 的新手..这个错误的原因可能是什么.. 我尝试修改一些配置文件..现在我在 Datanode 机器上收到 NORouteToHostException..是防火墙阻塞端口的问题吗?我们在大学校园内安装了 SonicWall 防火墙... 您是要在伪集群中运行(都在同一台机器上?)还是在具有 2 台以上机器的真实集群中运行? 【参考方案1】:我出现此错误的原因是磁盘空间不足(约 200MB 不够)。
【讨论】:
【参考方案2】:这个错误的另一个原因(我遇到过)是一个混乱的 /etc/hosts 文件导致 namenode 只在环回接口上监听。
这导致 datanodes 无法连接到 namenode 并且没有达到复制级别作为副作用。有关更多详细信息,请参阅namenode rejecting connections bug。
【讨论】:
【参考方案3】:我删除了 HDFS 上的 jobtracker.info,然后它就可以工作了。 Hadoop 似乎对其进行了改造
【讨论】:
【参考方案4】:我设法解决了这个问题...
步骤 I) 主节点和从节点计算机上的防火墙处于活动状态.. 我通过以下命令禁用它“systemctl disable iptables.service”
第二步)我在 slave 的 core-sites.xml 配置文件中错误地将“hdfs://localhost:9100”分配给了“fs.default.name”。我把它改成了“hdfs://master:9100”
现在我的 Hadoop 集群已启动..
感谢克里斯的热心帮助...
【讨论】:
以上是关于文件 jobtracker.info 只能复制到 0 个节点,而不是 1 个的主要内容,如果未能解决你的问题,请参考以下文章
SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组