connecting to resoucemanager
retrying ....
retrying .....
hdfs namenode -format 只是初始化了namenode的工作目录
而datanode的工作目录是在datanode启动后自己初始化的
namenode在format初始化的时候会形成两个标识:
blockPoolId:
clusterId:
datanode不是一下线就会被namenode认定为下线的,有一个超时时间
副本数由客户端的参数dfs.replication决定(优先级: conf.set > 自定义配置文件 > jar包中的hdfs-default.xml)
timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。
而默认的heartbeat.recheck.interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。
a、在服务器的终端命令行使用jps查看相关进程
(namenode1个节点 datanode3个节点 secondary namenode1个节点)
b、如果已经知道了启动失败的服务进程,进入到相关进程的日志目录下,查看日志,分析异常的原因
1)配置文件出错,saxparser exception; ——找到错误提示中所指出的配置文件检查修改即可
2)unknown host——主机名不认识,配置/etc/hosts文件即可,或者是配置文件中所用主机名跟实际不一致
(注:在配置文件中,统一使用主机名,而不要用ip地址)
3)directory 访问异常—— 检查namenode的工作目录,看权限是否正常
a)查看datanode的日志,看是否有异常,如果没有异常,手动将datanode启动起来
sbin/hadoop-daemon.sh start datanode
b)很有可能是slaves文件中就没有列出需要启动的datanode
c)排除上述两种情况后,基本上,能在日志中看到异常信息:
1、配置文件
2、ssh免密登陆没有配置好
3、datanode的身份标识跟namenode的集群身份标识不一致(删掉datanode的工作目录)
集群启动时(namenode启动时)必定会进入安全模式,然后过一段时间会自动退出安全模式(原因是datanode汇报的过程有一段持续时间)
原因:block确实有缺失
措施:可以手动让namenode退出安全模式,bin/hdfs dfsadmin -safemode leave
或者:调整safemode门限值: dfs.safemode.threshold.pct=0.999f
某个节点由于网络故障或者DataNode进程死亡,被NameNode判定为死亡,HDFS马上自动开始数据块的容错拷贝;当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏,所以造成了HDFS上某些block的备份数超过了设定的备份数。通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉,那么这个时间取决于什么呢?
该时间的长短跟数据块报告的间隔时间有关。Datanode会定期将当前该结点上所有的BLOCK信息报告给Namenode,参数dfs.blockreport.intervalMsec就是控制这个报告间隔的参数。
其中3600000为默认设置,3600000毫秒,即1个小时,也就是说,块报告的时间间隔为1个小时,所以经过了很长时间这些多余的块才被删除掉。通过实际测试发现,当把该参数调整的稍小一点的时候(60秒),多余的数据块确实很快就被删除了。