Tachyon on Dataproc Master 复制错误

Tachyon on Dataproc Master Replication Error

我在安装了 Tachyon、Spark 和 Hadoop 的 Dataproc 主节点上有一个简单示例 运行。

我在从 Spark 写入 Tachyon 时遇到复制错误。有没有办法指定它不需要复制?

15/10/17 08:45:21 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/tachyon/workers/1445071000001/3/8 could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1550)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3110)

我打印的日志部分只是一个警告,但紧随其后的是 Spark 错误。

我检查了 Tachyon config docs,发现了可能导致此问题的原因:

tachyon.underfs.hdfs.impl   "org.apache.hadoop.hdfs.DistributedFileSystem"

鉴于这一切都在 Dataproc 主节点上,预装了 Hadoop 并且 HDFS 与 Spark 一起工作,我认为这是一个可以从 Tachyon 内部解决的问题。

这是一个复制问题,自然会查看工作节点的状态。

原来他们失败是因为另一个原因。修复之后,这个错误就消失了。

我想知道并愿意接受的答案是如何手动更改复制因子。

您可以通过手动将 /etc/hadoop/conf/hdfs-site.xml 内的 dfs.replication 设置为 Dataproc 默认值 2 以外的某个值来调整默认复制。仅在您的主机上设置它至少应该涵盖驱动程序调用,hadoop fs 调用,并且它似乎也正确传播到 hadoop distcp 调用中,因此您很可能不需要担心将其设置为每个工作人员,只要工作人员从作业范围的配置中获取他们的文件系统配置。

请注意,1 的复制已经意味着整个数据的单个副本,而不是 "one replica in addition to the main copy"。所以,复制不能真正低于 1。最小复制由 dfs.namenode.replication.min 控制在同一个 hdfs-site.xml 中;你可以看到它被引用 here in BlockManager.java.