配置完做测试,在准备 -put一个文件到hdfs时,遇到:WARN hdfs.DFSClient: DataStreamer Exception
刚开始以为是Datandoe出现问题,回头查看各个节点,显示均正常
又查看了current/VERSION里面的clusterID,均显示一致
后来我打开web网页,发现第一台机器的web页面里Datanode没有任何信息
出现了如下情况
我打开了第二台的页面,正常显示
这是因为从主节点拷贝完再格式化namenode之后,没有删除主从节点上面的用于保存数据的文件,导致内部namenode存在的文件系统数据对应不上.
解决办法
删除tmp下的所有文件,并格式化namenode的节点,重新拷贝namenode
1.删除tmp的dfs文件,存储目录
如图,tmp下 的dfs,内包含data与name,即datanode与namenode
cd /opt/modules/hadoop-2.7.2/data/tmp/
rm -rf ./*
注意:除了作为namenode的机器 ,其他作为datanenode的机器都要删除
2.之后格式化namenode
2.1)先启动journalnode
sbin/hadoop-daemon.sh start journalnode
2.2)格式化
bin/hdfs namenode -format
3.启动各个节点
sbin/start-dfs.sh
4.重新拷贝namenode
在机器二上拷贝主机的namenode,并启动
bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode
这时候再查看Web页面
机器二:worker1
主机:Master
恢复正常
尝试上传文件
因为两台机器都是standby状态,所以我们需要先设置一台机器为活跃状态
bin/hdfs haadmin -transitionToActive nn1
-put一个文件到hdfs
bin/hdfs dfs -mkdir -p /user/kfk/data
bin/hdfs dfs -put /opt/modules/hadoop-2.7.2/etc/hadoop/core-site.xml /user/kfk/data
上传成功