有没有办法覆盖hdfs上第一个副本块的默认行为?
我想要做的是确保当我设置dfs.replication = 1时块的副本位于不同的datanode上
您需要实施自己的块放置策略。但这真的不难。你的班级应该扩展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