有没有办法覆盖hdfs上第一个副本块的默认行为?
我想要做的是确保当我设置dfs.replication = 1时,块的副本位于不同的datanode上
答案 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);
}