Hadoop 配置 - hdfs-site.xml:我应该在 namenode 和 datanode 上使用相同的文件吗?

Posted

技术标签:

【中文标题】Hadoop 配置 - hdfs-site.xml:我应该在 namenode 和 datanode 上使用相同的文件吗?【英文标题】:Hadoop config - hdfs-site.xml : Should I use the same file on namenode and datanode? 【发布时间】:2013-02-06 02:24:33 【问题描述】:

在分布式 Hadoop 集群上,我可以将相同的 hdfs-site.xml 文件复制到 namenodes 和 datanodes 吗?

我见过的一些设置说明(即 Cloudera)说在 datanodes 上的这个文件中有 dfs.data.dir 属性,在 namenode 上的这个文件中有 dfs.name.dir 属性。这意味着我应该有两份 hdfs-site.xml 副本,一份用于名称节点,一份用于数据节点。

但如果一切都一样,我宁愿只拥有/维护一份文件副本,并在我更改它时将其推送到所有节点。 在同一个文件中同时拥有 dfs.name.dir 和 dfs.data.dir 属性是否有任何危害/风险?如果数据节点看到 "dfs.name.dir" 的属性,可能会发生什么问题? 如果有问题,namenode 上的 hdfs-site.xml 文件中应该有哪些其他属性,而不是 datanode 上的?反之亦然。

最后,我复制到客户端计算机的 hdfs-site.xml 文件中需要包含哪些属性(不是 tasktracker 或 datanode,而是与 Hadoop 集群通信)?

我四处搜索,包括 O'reilly 操作书,但找不到任何描述配置文件需要如何在不同节点之间有所不同的好文章。 谢谢!

【问题讨论】:

【参考方案1】:

namenode 是从 masters 文件中提取的,因此本质上 FSimage 和编辑日志将仅写入 namenode 而不会写入 datanode,即使您复制了相同的 hdfs-site.xml。

对于第二个问题..如果不直接在集群上,您不一定可以与 hdfs 通信。如果您想拥有一个远程客户端,您可以尝试使用 webhdfs 并创建某些 Web 服务,您可以使用这些服务在 hdfs 中写入或访问文件

【讨论】:

那么在 namenode 和 datanode 上拥有相同的 hdfs-site.xml 副本没有害处吗?至于客户端 - 如果您安装了软件和配置文件,您可以在不运行任何服务的情况下让机器与 HDFS 对话并启动 map-reduce 作业。我按照这些说明操作,效果很好:ccp.cloudera.com/display/FREE373/… 另外——如果namenode地址完全来自“masters”文件,那么是否需要将core-site.xml复制到datanodes?

以上是关于Hadoop 配置 - hdfs-site.xml:我应该在 namenode 和 datanode 上使用相同的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

安装配置Hadoop

伪分布式安装core-site.xml和hdfs-site.xml配置文件

HBase入门配置

hdfs-site.xml配置

hadoop1.2.1三种模式配置

为啥hadoop没有将数据放在hdfs-site.xml中指定的目录中