是否更改 dfs.blocksizeaffect 现有数据的值
Does changing the value of dfs.blocksizeaffect existing data
我的Hadoop版本是2.5.2。我正在更改主节点上 hdfs-site.xml 文件中的 dfs.blocksize。我有以下问题:
1) 这个改动会影响HDFS中已有的数据吗
2) 我需要将此更改传播到 Hadoop 集群中的所有节点还是仅在 NameNode 上就足够了
更改 hdfs 中的块大小-site.xml 只会影响新数据。
您还应该对所有从站的 hdfs-site.xml 进行更改...dfs.block 所有数据节点的大小应该一致。
您正在使用哪个发行版...通过查看您的问题看起来您正在使用 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 从 master 复制到所有 slaves
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/
1) Will this change affect the existing data in 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
我的Hadoop版本是2.5.2。我正在更改主节点上 hdfs-site.xml 文件中的 dfs.blocksize。我有以下问题:
1) 这个改动会影响HDFS中已有的数据吗 2) 我需要将此更改传播到 Hadoop 集群中的所有节点还是仅在 NameNode 上就足够了
更改 hdfs 中的块大小-site.xml 只会影响新数据。
您还应该对所有从站的 hdfs-site.xml 进行更改...dfs.block 所有数据节点的大小应该一致。
您正在使用哪个发行版...通过查看您的问题看起来您正在使用 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 从 master 复制到所有 slaves
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/
1) Will this change affect the existing data in 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