【发布时间】:2018-07-10 04:22:29
【问题描述】:
我们在 Spark 日志中得到以下信息:
java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try. (Nodes: current=[DatanodeInfoWithStorage DatanodeInfoWithStorage\
The current failed datanode replacement policy is DEFAULT, and a client may configure this via 'dfs.client.block.write.replace-datanode-on-failure.policy' in its configuration.
at org.apache.hadoop.hdfs
.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:1036)
我的 Ambari 集群只有 3 台 worker 机器,每个 worker 只有一个数据盘。
我在 Google 上搜索,发现解决方案可能是关于块复制。 HDFS 中的块复制默认配置为 3,我发现建议将“块复制”设置为 1 而不是 3。
问题:这有意义吗?
此外,我的工作机器只有一个数据磁盘这一事实是否会成为问题的一部分?
块复制 = 文件系统中的文件总数将在 dfs.replication 因子设置中指定 dfs.replication=1,表示将文件中的文件只复制一份 系统。
完整日志:
java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try. (Nodes: current=[DatanodeInfoWithStorage[34.2.31.31:50010,DS-8234bb39-0fd4-49be-98ba-32080bc24fa9,DISK], DatanodeInfoWithStorage[34.2.31.33:50010,DS-b4758979-52a2-4238-99f0-1b5ec45a7e25,DISK]], original=[DatanodeInfoWithStorage[34.2.31.31:50010,DS-8234bb39-0fd4-49be-98ba-32080bc24fa9,DISK], DatanodeInfoWithStorage[34.2.31.33:50010,DS-b4758979-52a2-4238-99f0-1b5ec45a7e25,DISK]]). The current failed datanode replacement policy is DEFAULT, and a client may configure this via 'dfs.client.block.write.replace-datanode-on-failure.policy' in its configuration.
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:1036)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:1110)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:1268)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.processDatanodeError(DFSOutputStream.java:993)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:500)
---2018-01-30T15:15:15.015 INFO [][][] [dal.locations.LocationsDataFramesHandler]
【问题讨论】:
-
将 1 设置为复制,如果出现任何问题,可能无法恢复。你为什么要这样做?
-
我认为设置它是因为我的问题中描述的日志中的错误,如果您认为“由于没有更多好的数据节点而无法替换现有管道上的坏数据节点”的其他解决方案可以尝试”我很高兴知道它
-
我看到了其他一些关于我的问题的链接 - community.hortonworks.com/questions/27153/…
-
他们建议设置以下内容:dfs.client.block.write.replace-datanode-on-failure.policy=ALWAYS dfs.client.block.write.replace-datanode-on-failure .best-effort=true ,但是在哪里设置这个值,在我的 ambari 集群中看不到它们
标签: linux hadoop apache-spark hdfs ambari