【发布时间】:2014-01-23 08:04:13
【问题描述】:
我需要遵循什么程序才能将 new NameNode 数据目录(dfs.name.dir、dfs.namenode.name.dir)正确添加到 现有生产集群?我在 hdfs-site.xml 文件中添加了逗号分隔列表的新路径,但是当我尝试启动 namenode 时,出现以下错误:
目录/data/nfs/dfs/nn处于不一致状态:存储目录不存在或不可访问。
在我的例子中,我有两个目录已经就位并且正在工作。 (/data/1/dfs/nn,/data/2/dfs/nn) 当我添加新目录时,我无法启动名称节点。删除新路径后,它开始就好了。我的新目录的 fstab 如下所示:
备份服务器:/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
我是否需要手动复制/复制现有名称节点目录之一中的所有文件,或者名称节点服务是否应该在启动时自动执行?
【问题讨论】:
-
/data/nfs/dfs(你的挂载点)的所有权是否允许hdfs用户进入目录? -
挂载点归root所有。 (用户和组)该目录的权限为 700。这与其他数据目录遵循的结构相同。 (/data/1/dfs 由 root 拥有,权限为 700,而 /data/1/dfs/nn 由 hdfs/hadoop 拥有)
-
很公平。还有一个愚蠢的问题:
hdfs用户和hadoop组在 NFS 服务器和客户端上是否具有相同的 uid(gid)? -
NFS 服务器是一个 Windows 2012R2 机器。我已为此特定共享打开未映射的 UNIX 用户名访问。据我了解,UUUA 会做到这一点,这样 Windows 就不会真正关心 unix uid/gid,而是随 unix 客户端告诉它的任何内容。