报错:
Unable to close file because the last blockBP-:blk_ does not have enough number of replicas.
解决方案:
hdfs-site.xml -hdfs客户端高级配置代码段
1 dfs.client.block.write.locateFollowingBlock.retries = 10 把client等待的次数由6次变为10次。
修改:Cloudera Manager -> HDFS -> Configuration -> Enter hdfs-site.xml in search bar, add dfs.client.block.write.locateFollowingBlock.retries = 10 in “HDFS Client Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml” 注意这个参数是加在client的hdfs-site.xml里。
hdfs-site.xml -hdfs服务高级配置代码段
2 dfs.blockreport.incremental.intervalMsec = 300 ##这个最重要
修改:Cloudera Manager -> HDFS -> Configuration -> Enter hdfs-site.xml in search bar, add dfs.blockreport.incremental.intervalMsec = 300 in “HDFS Service Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml”
这个参数是说datanode不立即回送block report给namenode,而是等300毫秒,然后一次性回送300毫秒内所有block的变化,这样可以极大减轻namenode的压力。
hdfs-site.xml -datanode高级配置代码段
3 dfs.client.socket-timeout=300000
注意这次加在service level的hdfs-site.xml里。
hdfs-site.xml -NameNode高级配置代码段
4 dfs.namenode.file.close.num-committed-allowed=1
关闭文件时,允许待关闭文件中处于COMMITTED状态的Block的数量。
默认为:0,即关闭该特性。如果开启该特性,一般建议值为1~2,不建议太大。
例如:如果该参数值为1,则表示无需等待最后一个Block状态变成COMPLETED即可关闭文件。