更改dfs.blocksizea的值是否会影响现有数据

enxuqcxy  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(302)

我的hadoop版本是2.5.2。我正在更改主节点上hdfs-site.xml文件中的dfs.blocksize。我有以下问题:
1) 这个更改会影响hdfs中的现有数据吗2)我需要将这个更改传播到hadoop集群中的所有节点上还是只在namenode上就足够了

ut6juiuv

ut6juiuv1#

您应该在hdfs-site.xml中对所有从属服务器进行更改。。。对于所有数据节点,dfs.block大小应一致。

h4cxqtbf

h4cxqtbf2#

1) 此更改是否会影响hdfs中的现有数据
不,不会的。它将保留旧文件上的旧块大小。为了使它接受新的块更改,您需要重写数据。你可以 hadoop fs -cp 或者 distcp 在你的数据上。新副本将具有新的块大小,您可以删除旧数据。
2) 我是否需要将此更改传播到hadoop集群中的所有he节点,或者仅在namenode上就足够了?
我相信在这种情况下,您只需要更改namenode。然而,这是一个非常糟糕的主意。您需要保持所有配置文件的同步,原因有很多。当您对hadoop部署更加认真时,您可能应该开始使用puppet或chef之类的工具来管理配置。
另外,请注意,无论何时更改配置,都需要重新启动namenode和datanodes,以便它们更改其行为。
有趣的注意:您可以在编写单个文件时设置其块大小,以覆盖默认的块大小。例如。, hadoop fs -D fs.local.block.size=134217728 -put a b

ghhaqwfi

ghhaqwfi3#

您正在使用的发行版。。。通过查看您的问题,看起来您正在使用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/
oxcyiej7

oxcyiej74#

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

相关问题