1、拷贝NameNode上的hadoop home 目录到新的datanode(包括配置文件等)。
2、启动新的datanode
hadoop-daemon.sh start datanode
datanode 与 namenode通信成功,成功创建数据目录。
[hadoop@laodeng2 current]$ ls -l
total 8
drwx------ 4 hadoop hadoop 4096 Dec 2 20:07 BP-1446562160-127.0.0.1-1417496109738
-rw-rw-r-- 1 hadoop hadoop 229 Dec 2 20:02 VERSION
[hadoop@laodeng2 current]$ more VERSION
#Tue Dec 02 20:02:39 CST 2014
storageID=DS-bc5ecbbd-0542-41f6-a273-854d44f537c0
clusterID=CID-118021aa-dc88-4fa3-81db-f203b3502726
cTime=0
datanodeUuid=91493e2e-8525-4971-bd06-3248dc3b8787
storageType=DATA_NODE
layoutVersion=-55
但是在namenode上使用hdfs dfsadmin -report 看不到新增加的datanode。
查看datanode日志:
2014-12-02 18:48:42,046 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool BP-1446562160-127.0.0.1-1417496109738 (Data
node Uuid null) service to /172.16.110.133:9000 beginning handshake with NN
2014-12-02 18:48:42,123 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool BP-1446562160-12
7.0.0.1-1417496109738 (Datanode Uuid null) service to /172.16.110.133:9000 Datanode denied communication with namenode because hostn
ame cannot be resolved (ip=172.16.110.132, hostname=172.16.110.132): DatanodeRegistration(0.0.0.0, datanodeUuid=91493e2e-8525-4971-b
d06-3248dc3b8787, infoPort=50075, ipcPort=50020, storageInfo=lv=-55;cid=CID-118021aa-dc88-4fa3-81db-f203b3502726;nsid=1575155189;c=0
)
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:874)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:4514)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1017)
at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTrans
latorPB.java:92)
at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtoco
lProtos.java:28057)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
问题解决:
在每台datanode的hosts文件里设置ip和主机名的对应关系,然后将datanode主机名和ip关系都添加到namenode的hosts文件中,在做hadoop的集群配置时要给每台主机配置主机名