我正在学习Hortonworks的基础知识并运行一个包含以下规范的小型集群:
现在,当将/ mnt / vol1添加到dfs.datanode.data.dir(通过Ambari)时,每个节点都会获得vol1目录的副本,即使它们不存在也是如此。块也会存储在其他数据节点的这些目录中吗?我怎样才能为单个数据节点而不是其他数据节点添加额外的存储空间?
答案 0 :(得分:1)
Ambari中有一个Config Groups的概念,这里有一个概念。默认情况下,群集中的所有节点都只是一个配置组的一部分。因此,该组中的任何配置都适用于所有节点。在这种情况下,如果您将dfs.datanode.data.dir
设置为/mnt/vol1
,Ambari将在每个节点上检查此目录。如果存在,则数据节点的数据将存储在该目录中。否则,它被忽略了。
因此,在您的情况下,对于Node1,使用此目录,但对于其他节点,由于此目录不可用,因此不会使用它。如果dfs.datanode.data.dir
配置中没有提到其他目录,我想如果您的复制因子设置为3,您可能会看到复制不足。
从本质上讲,您可以做的是为具有已安装存储卷的计算机分配一个配置组,然后将dfs.datanode.data.dir
设置为/mnt/vol1
,并为其他两个节点设置另一个配置组然后在此属性中提供适当的值。这应该可以解决您的问题。
检查以下链接,了解有关配置组的更多信息: