我有一个运行在dataproc主节点上的简单示例,安装了tachyon、spark和hadoop。
我从spark写入超光速粒子时出现复制错误。有没有办法指定它不需要复制?
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.underfs.hdfs.impl "org.apache.hadoop.hdfs.DistributedFileSystem"
考虑到这一切都是在dataproc主节点上,预装了hadoop,hdfs与spark一起工作,我认为这是一个可以从tachyon内部解决的问题。
2条答案
按热度按时间093gszye1#
您可以通过手动设置
dfs.replication
内部/etc/hadoop/conf/hdfs-site.xml
除了dataproc的默认值2
. 把它设置在你的主机上至少可以覆盖驱动程序调用,hadoop fs
调用,并且它似乎正确地传播到hadoop distcp
调用,所以很可能您不需要担心在每个工作进程上也设置它,只要工作进程从作业范围的配置中获取文件系统配置。请注意
1
“已”是指数据的一个副本,而不是“除主副本外还有一个副本”。所以,复制不能低于1。最小复制由dfs.namenode.replication.min
在同一个地方hdfs-site.xml
; 你可以在这里看到它的引用BlockManager.java
.ar5n3qh52#
这是一个复制问题,我们自然会查看工作节点的状态。
原来他们是因为另一个原因。修正后,这个错误消失了。
我想知道并接受的答案是,如何手动更改复制因子。