更改 Hadoop 中现有文件的块大小
Posted
技术标签:
【中文标题】更改 Hadoop 中现有文件的块大小【英文标题】:Change Block size of existing files in Hadoop 【发布时间】:2015-04-13 12:01:21 【问题描述】:考虑一个 hadoop 集群,其中 hdfs-site.xml
中的默认块大小为 64MB。但是,后来团队决定将其更改为 128MB。以下是我对上述场景的问题?
-
此更改是否需要重新启动集群,或者它会被自动占用并且所有新文件的默认块大小为 128MB?
块大小为 64M 的现有文件会怎样?配置中的更改会自动应用于现有文件吗?如果它会自动完成,那么什么时候完成 - 一旦完成更改或集群启动时?如果没有自动完成,那么如何手动进行这个块更改?
【问题讨论】:
【参考方案1】:此更改是否需要重新启动集群或将被占用 自动,所有新文件的默认块大小为 128MB
需要重新启动集群才能使此属性更改生效。
块大小为 64M 的现有文件会怎样? 配置中的更改是否适用于现有文件 自动?
现有块不会改变它们的块大小。
如果不自动完成,那么如何手动进行这个块更改?
要更改现有文件,您可以使用 distcp。它将复制具有新块大小的文件。但是,您将不得不手动删除具有较旧块大小的旧文件。这是您可以使用的命令
hadoop distcp -Ddfs.block.size=XX /path/to/old/files /path/to/new/files/with/larger/block/sizes.
【讨论】:
【参考方案2】:正如你提到的here :
-
每当您更改配置时,您都需要重新启动 NameNode 和 DataNode 以使其行为发生变化。
不,不会。它将在旧文件上保留旧块大小。为了让它接受新的块更改,您需要重写数据。您可以对数据执行 hadoop fs -cp 或 distcp。新副本将具有新的块大小,您可以删除旧数据。
查看链接了解更多信息。
【讨论】:
【参考方案3】:第 1 点 - 在 Hadoop 1.2.1 上,更改 hdfs-site.xml 文件中的 dfs.block.size 后不需要重新启动。文件块大小可以通过查看http://namenode:50070/dfshealth.jsp的Hadoop管理页面轻松验证
确保更改所有数据节点上的 dfs.block.size。
【讨论】:
以上是关于更改 Hadoop 中现有文件的块大小的主要内容,如果未能解决你的问题,请参考以下文章