Hadoop 数据复制错误

Hadoop Data Replication error

希望你们都度过了一个愉快的假期。我正在尝试在 Amazon EC2 上设置 Hadoop 集群。使用命令 hadoop fs -copyFromLocal d.txt /user/ubuntu/data 将数据文件从本地磁盘复制到 hdfs 时,出现数据复制错误。日志中的错误如下

15/01/06 07:40:36 WARN hdfs.DFSClient: Error Recovery for null bad datanode[0] nodes == null

15/01/06 07:40:36 WARN hdfs.DFSClient: Could not get block locations. Source file /user/ubuntu/data/d.txt" - > Aborting... copyFromLocal: java.io.IOException: File /user/ubuntu/data/d.txt could only be replicated to 0 nodes, instead of 1

15/01/06 07:40:36 ERROR hdfs.DFSClient: Failed to close file /user/ubuntu/data/d.txt

现在,我一直在查看关于这个问题的 Whosebug 和其他论坛,我发现他们中的大多数人都在谈论 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。谁能告诉我哪里出错了?如果有人帮助我解决问题,我将不胜感激。

谢谢,

发生此异常的原因有多种。这里数据没有被写入数据节点。可能的原因有。

1) 配置的安全规则不允许正常通信。

2) 数据节点存储已满。

3) 如果数据节点的名称空间 ID 与集群的名称空间 ID 不同。

4) 如果数据节点参与块扫描和报告。

5) 配置块大小的负值 (dfs.block.size in hdfs-site.xml).

如果所有配置和安全规则都正确。然后你可以做下面的任务。

1) 停止datanode进程。

2) 删除datanode目录下的内容

3) 再次启动datanode

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

注意:调试问题的最佳方法是检查数据节点和名称节点的日志。这将为您提供此错误的确切原因。

确保您可以访问数据节点(telnet 端口),以便可以从等式中排除通信问题。

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

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

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