【发布时间】:2019-12-09 04:49:30
【问题描述】:
当程序尝试访问附加的 HDFS 中的文件时,在 Google Dataproc 上运行 Spark 作业时,我看到了很多类似以下的错误(是的,如果这很重要,我从事的是生物信息学):
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
按照here 和here 所示创建dataproc 集群时,我也尝试将dfs.client.use.datanode.hostname 设置为true,但也没有成功。
我还计划将 dfs.replication 从 Dataproc 默认的 2 增加到 3,但 Google 说 this 所以我还不确定这是否会影响性能。
有人知道发生了什么吗?
【问题讨论】:
-
在资源管理器上检查您的节点的运行状况,在我看来,您的一些数据节点变得不健康并最终出现故障/无响应,这就是您的工作因阻塞而失败的原因缺少异常。
-
@allbutlinear 谢谢!但是您知道如何为 Dataproc 执行此操作吗(指向某个文档的链接会很完美)?
-
请找Link,寻找YARN ResourceManager
-
你能把那个文件放到 GCS 上吗?
-
@KarthikPalaniappan,我实际上尝试过,结果我依赖的代码以非常低效的方式从 GCS 读取。所以我需要了解为什么会这样。不过感谢您的意见!
标签: apache-spark hadoop google-cloud-dataproc