如何做电子海报在网站,定制手机网站建设,什么是百度快照,怎么注册一个企业邮箱最近由于重装了系统#xff0c;需要对之前搭建的集群要做些改动。在对每个虚拟机的网络进行正确的配置之后#xff0c;重新执行hadoop/sbin/start-dfs.sh命令来启动HDFS#xff0c;然而namenode却无法识别datanode。 后来通过对之前学过的知识进行回顾和梳理发现了问题的所…最近由于重装了系统需要对之前搭建的集群要做些改动。在对每个虚拟机的网络进行正确的配置之后重新执行hadoop/sbin/start-dfs.sh命令来启动HDFS然而namenode却无法识别datanode。 后来通过对之前学过的知识进行回顾和梳理发现了问题的所在 由于场景的改变造成了虚拟机IP地址的改变在这里虽然在虚拟机中配置网络的IP也做了相应的改变但是Hadoop集群中的一些自动生成旧文件的内容依旧和你以前的IP地址有关这就造成NameNode无法识别之前的DataNode。 解决办法 首先了解下namenode初始化工作目录的形成我们在执行hdfs namenode -format 时只是初始化了namenode的工作目录而datanode的工作目录是在datanode启动后自己初始化的。所以在这里首先要把各个DataNode下的工作目录进行删除即HDFS的文件存储目录hddata/dfs/current目录下的内容全部进行删除。如果某个DataNode的工作目录未进行删除则通过相应的web网页去看HDFS的存储内存时依旧观察不到该DataNode
其次namenode在format初始化的时候会形成两个标识 blockPoolId clusterId 新的datanode加入时会获取这两个标识作为自己工作目录中的标识一旦namenode重新format后namenode的身份标识已变而datanode如果依然持有原来的id就不会被namenode识别。 所以只需要我们把各个DataNode上的工作目录进行删除后然后在对hadoop的bin目录下执行namenode-format命令即可识别DataNode。