Hadoop中的数据复制错误
我通过以下方式在我的机器上实现Hadoop单节点群集,并遇到数据复制错误: 以下是完整的错误消息: 当我执行时:Hadoop中的数据复制错误,hadoop,replication,Hadoop,Replication,我通过以下方式在我的机器上实现Hadoop单节点群集,并遇到数据复制错误: 以下是完整的错误消息: 当我执行时: bin/stop-all.sh 它表示datanode尚未启动,因此无法停止。不过,jps的输出表示数据节点存在 我尝试格式化namenode,更改所有者权限,但似乎不起作用。希望我没有错过任何其他相关信息 提前谢谢。看看你的namenode(可能),看看它说你有多少数据节点 如果为0,则说明datanode未运行或未配置为连接到namenode 如果是1,请检查DFS中有多少可用
bin/stop-all.sh
它表示datanode尚未启动,因此无法停止。不过,jps的输出表示数据节点存在
我尝试格式化namenode,更改所有者权限,但似乎不起作用。希望我没有错过任何其他相关信息
提前谢谢。看看你的namenode(可能),看看它说你有多少数据节点
如果为0,则说明datanode未运行或未配置为连接到namenode
如果是1,请检查DFS中有多少可用空间。可能是数据节点没有任何可以写入数据的位置(data dir不存在,或者没有写入权限)。对我有效的解决方案是逐个运行namenode和datanode,而不是使用
bin/start all.sh
一起运行。使用这种方法所发生的情况是,如果在网络上设置datanodes时遇到一些问题,那么错误是显而易见的,而且stackoverflow上的许多帖子表明namenode需要一些时间启动,因此,在启动datanodes之前,应该给它一些时间启动。此外,在本例中,我遇到了namenode和datanodes的不同id的问题,为此我必须使用与namenode相同的id更改datanode的id
分步程序将是:
bin/hadoop namenode
。检查错误(如果有)bin/hadoop datanode
。检查错误(如果有)虽然已经解决了,我还是为未来的读者添加了这个。Cody关于检查namenode和datanode的开始的建议很有用,进一步的调查使我删除了hadoop store/dfs目录。这样做为我解决了这个错误。我也遇到了同样的问题,我查看了datanode日志,发现一条警告说dfs.data.dir的权限不正确。。。所以我改变了它们,一切都正常了,这有点奇怪 具体来说,我的“dfs.data.dir”被设置为“/home/hadoop/hd_tmp”,我得到的错误是:
...
...
WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /home/hadoop/hd_tmp/dfs/data, expected: rwxr-xr-x, while actual: rwxrwxr-x
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: All directories in dfs.data.dir are invalid.
...
...
所以我只是执行了这些命令:
- 我用“bin/stop all.sh”阻止了所有的恶魔
- 使用“chmod-R 755/home/hadoop/hd_tmp”更改目录的权限
- 我用“bin/hadoop namenode-format”再次为namenode指定了格式
- 我重新启动了恶魔“bin/start all.sh”
- 瞧,数据节点已经启动并运行了!(我用命令“jsp”检查了它,其中显示了一个名为DataNode的进程)
然后一切正常。我遇到了同样的问题。当我查看localhost:50070时,在集群摘要下,除了“DFS已使用%100”之外,所有属性都显示为0。通常,出现这种情况是因为HADOOP_INSTALL/conf和hosts文件下的三个*-site.xml文件中存在一些错误
在我的例子中,原因是无法解析主机名。我只需将“IP地址主机名”添加到/etc/hosts就解决了这个问题。在我的例子中,我错误地为
dfs.name.dir
和dfs.data.dir
设置了一个目标。正确的格式是
<property>
<name>dfs.name.dir</name>
<value>/path/to/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/path/to/data</value>
</property>
dfs.name.dir
/路径/到/名称
dfs.data.dir
/路径/到/数据
我删除了hdfs-site.xml中的额外属性,然后这个问题就消失了。Hadoop需要改进错误消息。我尝试了上述每一种解决方案,但都没有奏效。在我的情况下,我不得不删除:
/tmp/hadoop-
文件夹和格式,并开始使用sbin/start dfs.sh
sbin/start warn.sh
谢谢,我找到了解决方案。这是因为datanode和namenode需要时间来启动,我没有执行bin/start all.sh
,而是执行bin/hadoop namenode
,bin/hadoop datanode
,然后执行bin/start mapred.sh
。你是认真的吗?将“127.0.0.1主机名”添加到/etc/hosts可能会导致连接被拒绝错误。我不知道当时为什么写127.0.0.1。我的/etc/hosts中现在没有这样的条目。我想我是要写“主机名”而犯了一个错误。很抱歉那些被这条评论误导的人。
<property>
<name>dfs.name.dir</name>
<value>/path/to/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/path/to/data</value>
</property>