HDFS在复制块下

Suv*_*yil 4 hadoop hdfs cloudera cloudera-manager

我在我的"群集"上使用Cloudera Manager免费版,我的单机上有所有服务.

我的机器充当datanode,namenode以及辅助namenode.

HDFS中与复制相关的设置,

dfs.replication                                   - 1
dfs.replication.min, dfs.namenode.replication.min - 1
dfs.replication.max                               - 1   
Run Code Online (Sandbox Code Playgroud)

我仍然得到重复不足的块,因此Bad Health,

Namenode日志说,

Requested replication 3 exceeds maximum 1
java.io.IOException: file /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2013_10_21-15_33_53 on client 111.222.333.444
Requested replication 3 exceeds maximum 1
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.verifyReplication(BlockManager.java:858)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1848)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:1771)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1747)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:439)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:207)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44942)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1002)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1751)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1747)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1745)
Run Code Online (Sandbox Code Playgroud)

我已更改了值,已保存,已部署的客户端配置,已重新启动.它仍然是一样的.

我需要设置什么属性才能使CM读取复制因子1而不是3?

Mar*_*app 11

直接在shell中更改复制因子

hadoop fs -setrep -R 1 /
Run Code Online (Sandbox Code Playgroud)

如果您有权限问题,对我有用的是将复制因子更改为每个文件的用户.我不得不改变oozie文件的复制因子,如下所示:

sudo -u oozie bash
hadoop fs -setrep -R 1 /
Run Code Online (Sandbox Code Playgroud)

对权限失败的每个用户重复此操作.