Hdfs 复制因子 1 覆盖默认行为

Hdfs replication factor 1 override default behaviour

有没有办法覆盖 hdfs 上第一个副本块的默认行为?

我想做的是当我设置 dfs.replication=1

时确保块的副本在不同的数据节点上

您需要实施自己的块放置策略。但这真的一点都不难。您的 class 应该扩展 org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy。您想要实现的非常简单,所以只需复制 default block placement policy class 并修改它,使其按预期运行即可。

使用 CLI 覆盖复制和块大小:

这里我为这个文件设置复制因子 2:

~]$ hadoop fs -D dfs.replication=2 -put -f /home/cloudera/cricketers /user/cloudera/Dec_17_2017/Dec_18

这里我为这个文件设置块大小 = 128 MB:

 ~]$ hadoop fs -D dfs.block.size=134217728  -put -f /home/cloudera/cricketers /user/cloudera/Dec_17_2017/Dec_18

这里为这个文件同时设置块大小 = 128 MB 和复制 = 2:

~]$ hadoop fs -D dfs.block.size=134217728  -D dfs.replication=2 -put -f /home/cloudera/cricketers /user/cloudera/Dec_17_2017/Dec_18