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

时间:2015-08-14 14:28:11

标签: hdfs hadoop2

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

我想要做的是确保当我设置dfs.replication = 1时,块的副本位于不同的datanode上

2 个答案:

答案 0 :(得分:0)

您需要实施自己的块放置政策。但这真的不难。你的班级应该延长org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy。您要实现的内容非常简单,因此只需复制default block placement policy class并对其进行修改,使其行为符合要求。

答案 1 :(得分:0)

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

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

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

这里我为此文件设置阻止大小= 128 MB:

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

此处设置此文件的块大小= 128 MB和复制= 2:

 var questionAnswerContentObject  = {};

questionAnswerContentObject.question.questionTitle = currentQuestion.find("questionTitle").text();

questionAnswerContentObject.answer = [];
for(var i=0;i<10;i++) {
 var ans = currentQuestion.find(i).text();
questionAnswerContentObject.answer.push(ans);
}