我在google dataproc上运行Spark作业时会看到很多错误,而该程序试图访问随附的HDFS中的文件(是的,我在BioInformatics中,如果那样重要(:
Caused by:
org.apache.hadoop.hdfs.BlockMissingException:
Could not obtain block:
BP-605637428-10.128.0.34-1564425505397:blk_1073741871_1047
file=/reference/Homo_sapiens_assembly38.fasta
当我解析日志时,例外是反复抱怨访问4〜5个块。该文件为〜3GB,HDFS上的块大小设置为〜138MB。
然后我去了hadoop fsck /reference/Homo_sapiens_assembly38.fasta
,并得到了以下
.Status: HEALTHY
Total size: 3249912778 B
Total dirs: 0
Total files: 1
Total symlinks: 0
Total blocks (validated): 25 (avg. block size 129996511 B)
Minimally replicated blocks: 25 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 2.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 8
Number of racks: 1
我还尝试将dfs.client.use.datanode.hostname
设置为true
,在此处和此处所示,创建数据proc群集时,但没有成功。
我还计划将dfs.replication
从DataProc默认2增加到3,但是Google说了这一点,所以我不确定是否会影响性能。
任何人都对发生的事情有所了解吗?
我也遇到了这个问题,问题是输入文件已损坏。我刚将文件上传到HDFS,并且效果很好。