为了将新的NameNode数据目录(dfs.name.dir,dfs.namenode.name.dir)正确添加到现有 生产环境 群集,我需要遵循哪些步骤?我已将新路径添加到hdfs-site.xml文件中以逗号分隔的列表中,但是当我尝试启动namenode时,我收到以下错误:
目录/ data / nfs / dfs / nn处于不一致状态:存储目录不存在或无法访问 .
在我的情况下,我已经有两个目录并且正常工作 . (/ data / 1 / dfs / nn,/ data / 2 / dfs / nn)当我添加新目录时,我无法启动namenode . 删除新路径后,它就会正常启动 . 我对新目录的fstab如下所示:
backup-server:/ hadoop_nn / data / nfs / dfs nfs tcp,soft,intr,timeo = 10,retrans = 10 1 2
在上面的挂载点中,我创建了一个名为nn的文件夹 . 该文件夹与nn文件夹中的其他两个现有位置具有相同的所有权和权限 .
drwx ------ 2 hdfs hadoop 64 Jan 22 16:30 nn
我是否需要手动复制/复制现有namenode目录中的所有文件,或者namenode服务在启动时是否自动执行?
2 回答
我相信我可能刚刚回答了我自己的问题 . 我最终将一个现有namenode目录的全部内容复制到新的NFS namenode目录,然后我就可以启动namenode了 . (注意我在复制之前停止了namenode以避免出现问题)
我想我的假设是namenode会自动将现有的元数据复制到新目录是不正确的 .
在Cloudera CDH 4.5.0中,只有当以下函数(来自
Storage.java
,第418行)返回NON_EXISTENT
时才会发生该错误 . 在每种情况下都会显示一条警告,其中包含更多详细信息,从org.apache.hadoop.hdfs.server.common.Storage
查找日志行 .简而言之,似乎名称节点认为它不存在,不是目录,不可写或以其他方式抛出
SecurityException
.