首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop数据复制错误

Hadoop数据复制错误
EN

Stack Overflow用户
提问于 2015-01-06 01:11:24
回答 3查看 245关注 0票数 0

希望你们都有一个美好的假期。我正在亚马逊EC2上安装Hadoop集群。当使用命令hadoop fs -copyFromLocal d.txt /user/ubuntu/data将数据文件从本地磁盘复制到hdfs时,我得到的是数据复制错误。来自日志的错误如下

15/01/06 07:40:36警告hdfs.DFSClient:错误恢复为空坏数据节点== null 15/01/06 07:40:36警告hdfs.DFSClient:无法获得阻塞位置。源文件/user/ubuntu/data/d.txt“->中止. copyFromLocal: java.io.IOException: file /user/ubuntu/data/d.txt只能复制到0节点,而不是1 15/01/06 07:40:36错误hdfs.DFSClient:未能关闭文件/user/ubuntu/data/d.txt

现在,我一直在检查StackOverFlow和其他论坛中有关这个问题的内容,我发现大多数论坛都在谈论DataNodeTaskTracker,而不是将其作为可能的原因&相关的解决方案。但这些东西在我的设计中运行得很好。JPS命令http://i.imgur.com/vS6kRPP.png的屏幕截图

从HadooWiki来看,其他可能的原因是DataNode无法与服务器对话,通过网络或Hadoop配置问题,或者某些配置问题阻碍了有效的双向通信。

我按照教程http://tinyurl.com/l2wv6y9配置了hadoop-env.sh、core-site.xml、hdfs-site.xml和mapred-site.xml。有人能告诉我我哪里出错了吗?如果有人帮我解决这个问题,我将非常感激。

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-07 22:31:45

问题出在安全组织里。当我创建EC2实例时,我创建了一个新的安全组,在这个组中,我没有配置允许端口为连接打开的规则。

在创建具有默认选项的组时,必须在端口22处为SSH添加规则。为了获得TCP和ICMP的访问权限,我们需要添加2条额外的安全规则。在入站规则中添加“All”、“All ICMP”和“SSH(22)”,这应该可以正常工作。

如果我们使用的是现有的安全组,我们应该检查入站和出站规则。

票数 1
EN

Stack Overflow用户

发布于 2015-01-06 09:21:56

此异常可能由于以下几个原因而发生。在这里,数据不会被写入datanode。可能的原因可能是。

1)配置的安全规则不允许适当的通信。

2)数据节点存储已满。

3)如果datanode具有不同于集群的名称空间id。

4)如果datanode参与块扫描和报告。

5)块大小的负值配置(HDFS-site.xml中的dfs.block.size)。

如果所有的配置和安全规则都是正确的。然后,您可以执行以下任务。

1)停止datanode进程。

2)删除datanode目录中的内容。

3)再次启动datanode。

上面的步骤是为了使集群id在datanode中正确。

注意:调试问题的最好方法是检查datanode和namenode的日志。这将给出这个错误的确切原因。

票数 0
EN

Stack Overflow用户

发布于 2015-01-06 23:56:57

确保您可以到达数据节点(telnet端口),以便从等式中丢弃通信问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27790609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档