我首先在我的机器上安装了hadoop 2.2(称为Abhishek-PC),一切正常。我能够成功运行整个系统。 (namenode和datanode)。
现在我创建了1个VM hdclient1,我想将此VM添加为数据节点。
以下是我遵循的步骤
我成功设置了SSH,我可以在没有密码的情况下进入hdclient1,我可以在没有密码的情况下从hdclient1登录到我的主机。
我在这个VM上设置了hadoop 2.2,并根据Web上的许多教程修改了配置文件。这是我的配置文件
名称节点配置
https://drive.google.com/file/d/0B0dV2NMSGYPXdEM1WmRqVG5uYlU/edit?usp=sharing
数据节点配置
https://drive.google.com/file/d/0B0dV2NMSGYPXRnh3YUo1X2Frams/edit?usp=sharing
https://drive.google.com/file/d/0B0dV2NMSGYPXOEJ3UV9SV1d5bjQ/edit?usp=sharing
正如您所看到的,这两台机器都出现在我的集群中(主要主节点和数据节点)。
虽然由于某些奇怪的原因,两者都被称为“localhost”。
这是来自名称节点
的日志https://drive.google.com/file/d/0B0dV2NMSGYPXM0dZTWVRUWlGaDg/edit?usp=sharing
以下是数据节点
中的日志https://drive.google.com/file/d/0B0dV2NMSGYPXNV9wVmZEcUtKVXc/edit?usp=sharing
http://Abhishek-PC:50070
但是这里的实时节点中的UI只显示了1个活动节点,并且没有提到hdclient1。
https://drive.google.com/file/d/0B0dV2NMSGYPXZmMwM09YQlI4RzQ/edit?usp=sharing
我可以在hdfs中成功创建一个目录hadoop fs -mkdir /small
从datanode我可以看到该目录是使用此命令创建的hadoop fs -ls /
现在,当我尝试将文件添加到我的HDFS时,我说
hadoop fs -copyFromLocal~ / Downloads / book / war_and_peace.txt / small
我收到错误消息
abhishek @ Abhishek-PC:〜$ hadoop fs -copyFromLocal 〜/ Downloads / book / war_and_peace.txt / small 14/01/04 20:07:41警告 util.NativeCodeLoader:无法加载native-hadoop库 平台...使用内置java类,适用于14/01/04 20:07:41 WARN hdfs.DFSClient:DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException):文件 /small/war_and_peace.txt。 COPYING 只能复制到0个节点 而不是minReplication(= 1)。有1个datanode正在运行和 此操作中不排除任何节点。在 org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1384) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2477) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:555)
所以我的问题是我在这里做错了什么?当我尝试将文件复制到HDFS时,为什么会出现此异常?