【问题标题】:Does changing the value of dfs.blocksizeaffect existing data更改 dfs.block 大小的值是否会影响现有数据
【发布时间】:2015-02-19 01:38:18
【问题描述】:

我的 Hadoop 版本是 2.5.2。我正在更改主节点上 hdfs-site.xml 文件中的 dfs.blocksize。我有以下问题:

1) 此更改是否会影响 HDFS 中的现有数据 2)我需要将此更改传播到 Hadoop 集群中的所有节点还是仅在 NameNode 上就足够了

【问题讨论】:

    标签: hadoop hdfs microsoft-distributed-file-system


    【解决方案1】:

    1) 这个改动会不会影响HDFS中已有的数据

    不,不会。它将保留旧文件上的旧块大小。为了让它接受新的块更改,您需要重写数据。您可以对您的数据执行hadoop fs -cp 或distcp。新副本将具有新的块大小,您可以删除旧数据。

    2) 我需要将此更改传播到 Hadoop 集群中的所有节点还是仅在 NameNode 上就足够了?

    我相信在这种情况下您只需要更改 NameNode。然而,这是一个非常非常糟糕的主意。出于多种原因,您需要保持所有配置文件同步。当您对 Hadoop 部署更加认真时,您可能应该开始使用 Puppet 或 Chef 之类的工具来管理您的配置。

    另外,请注意,每当您更改配置时,都需要重新启动 NameNode 和 DataNode 以使它们改变行为。

    有趣的提示:您可以在编写单个文件时设置它们的块大小以覆盖默认块大小。例如,hadoop fs -D fs.local.block.size=134217728 -put a b

    【讨论】:

      【解决方案2】:

      您还应该在所有从站的 hdfs-site.xml 中进行更改... dfs.block 大小应该在所有数据节点上保持一致。

      【讨论】:

      • 谢谢。在所有节点上更改的首选方式是什么 [集群中节点 30+ 的数量]
      • 您正在使用哪个发行版...通过查看您的问题,您似乎正在使用 apache 发行版..我能找到的最简单的方法是编写一个 shell 脚本首先删除从站中的 hdfs-site.xml如下所示
      【解决方案3】:

      更改 hdfs-site.xml 中的块大小只会影响新数据。

      【讨论】:

      • 我需要更改所有 ndo 上的块大小还是仅在 masternode 上?
      【解决方案4】:

      您正在使用哪个发行版...通过查看您的问题,您似乎正在使用 apache 发行版..我能找到的最简单的方法是编写一个 shell 脚本来首先删除从服务器中的 hdfs-site.xml

      ssh username@domain.com 'rm /some/hadoop/conf/hdfs-site.xml'
      ssh username@domain2.com 'rm /some/hadoop/conf/hdfs-site.xml'
      ssh username@domain3.com 'rm /some/hadoop/conf/hdfs-site.xml'

      稍后将 hdfs-site.xml 从主服务器复制到所有从服务器

      scp /hadoop/conf/hdfs-site.xml username@domain.com:/hadoop/conf/ 
      scp /hadoop/conf/hdfs-site.xml username@domain2.com:/hadoop/conf/ 
      scp /hadoop/conf/hdfs-site.xml username@domain3.com:/hadoop/conf/ 

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-21
      • 2015-03-14
      • 2015-10-23
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多