链接时Spark流式传输作业失败

时间:2015-01-30 15:24:52

标签: hadoop hdfs apache-spark spark-streaming

我在Hadoop集群上运行一些Spark Streaming作业(一个在前一个输出文件夹中寻找输入),使用HDFS,在Yarn-cluster模式下运行。

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会将其状态从运行更改为接受失败。

使用本地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

1 个答案:

答案 0 :(得分:0)

即使Mapreduce忽略了以...开头的文件。或_,Spark Streaming不会。

问题是,当正在复制文件或进程或其他任何文件并且在HDFS上找到文件的痕迹时(即#34; somefilethatsuploading.txt.tmp")Spark将尝试处理它。

当流程开始读取文件时,它已经消失或者尚未完成。

这就是为什么流程不断爆炸的原因。

忽略以。开头的文件。或_或以.tmp结尾修复此问题。

<强>增加: 我们一直遇到链式工作的问题。看来,只要Spark注意到一个文件(即使它没有完全写入),它就会尝试处理它,忽略所有其他数据。文件重命名操作通常是 atomic ,应该可以防止出现问题。