我有一个在Dataproc主节点上运行的简单示例,其中安装了Tachyon,Spark和Hadoop。
我有一个从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内部可以解决的问题。
答案 0 :(得分:2)
您可以通过手动将dfs.replication
内的/etc/hadoop/conf/hdfs-site.xml
设置为Dataproc默认值2
以外的某个值来调整默认复制。只在主人身上设置它应至少涵盖司机通话,hadoop fs
通话,并且它似乎也正确地传播到hadoop distcp
通话中,因此您很可能不必担心也会将其设置为只要工作人员从作业范围的配置中获取文件系统配置,每个工作者都可以。
请注意,1
的复制已经意味着总共有一个数据副本,而不是“主副本之外的一个副本”。因此,复制实际上不能低于1.最小复制由同一dfs.namenode.replication.min
中的hdfs-site.xml
控制;你可以看到它被引用here in BlockManager.java
。
答案 1 :(得分:1)
这是一个复制问题,人们自然会看到工作节点的状态。
原来他们因为另一个原因而失败了。修好之后,这个错误就消失了。
我想知道并接受作为答案的是如何手动更改复制因子。