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
有没有办法覆盖 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