spark流作业链接时失败

lnxxn5zx  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(331)

我正在hadoop集群上运行几个spark流作业(其中一个在前一个集群的output文件夹中查找输入),使用hdfs,以yarn集群模式运行。

job 1 --> reads from folder A outputs to folder A'
job 2 --> reads from folder A'outputs to folder B
job 3 --> reads from folder B outputs to folder C
...

当独立运行作业时,它们工作得很好。
但当它们都在等待输入,我将一个文件放在文件夹a中时,job1的状态将从running变为accepting,再变为failed。
当使用本地fs时,我不能再现这个错误,只有在集群上运行它时(使用hdfs)

Client: Application report for application_1422006251277_0123 (state: FAILED)
     INFO Client: 
     client token: N/A
     diagnostics: Application application_1422006251277_0123 failed 2 times due to AM Container for appattempt_1422006251277_0123_000002 exited with  exitCode: 15 due to: Exception from container-launch.
     Container id: container_1422006251277_0123_02_000001
   Exit code: 15
0h4hbjxa

0h4hbjxa1#

即使mapreduce忽略以开头的文件。或者,spark streaming没有。
问题是,当一个文件正在被复制或处理或其他什么,并且在hdfs上发现了一个文件的踪迹(即“somefilethatsuploading.txt.tmp”),spark会尝试处理它。
当进程开始读取文件时,它要么已经消失,要么还没有完成。
这就是为什么程序一直在爆炸。
忽略以开头的文件。或以.tmp结束修复此问题。
此外:我们一直有问题与连锁的工作。似乎只要spark注意到一个文件(即使它没有完全写入),它就会尝试处理它,忽略所有额外的数据。文件重命名操作通常是原子的,应该可以防止出现问题。

相关问题