要将新的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如下所示:
备份服务器:/hadoop\u nn/data/nfs/dfs nfs tcp,soft,intr,timeo=10,retrans=10 1 2
在上面的挂载点中,我创建了一个名为nn的文件夹。该文件夹与其他两个现有文件夹具有相同的所有权和权限。
drwx-----2 hdfs hadoop 64 1月22日16:30 nn
我是否需要手动复制现有namenode目录中的所有文件,或者namenode服务在启动时是否应该自动执行此操作?
2条答案
按热度按时间qzlgjiam1#
我想我可能刚刚回答了我自己的问题。最后,我将一个现有namenode目录的全部内容复制到新的nfs namenode目录中,并且我能够启动namenode(注意,为了避免问题,我在复制之前停止了namenode)
我认为namenode会自动将现有元数据复制到新目录的假设是不正确的。
kmb7vmvb2#
在cloudera cdh 4.5.0中,只有在以下函数(从
Storage.java
,在第418行附近)返回NON_EXISTENT
. 在每种情况下都会显示一条警告,并记录更多详细信息,请从中查找日志行org.apache.hadoop.hdfs.server.common.Storage
.简言之,name节点似乎认为它不存在,不是目录,不可写,或者抛出了一个
SecurityException
.