链接时 Spark 流作业失败
Spark streaming jobs fail when chained
我在 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
即使 Mapreduce 忽略以 .或者 _,Spark Streaming 没有。
问题是,当文件正在被复制或处理或其他任何情况下,并且在 HDFS 上找到文件的踪迹时(即 "somefilethatsuploading.txt.tmp")Spark 将尝试处理它。
当进程开始读取文件时,文件已经消失或尚未完成。
这就是进程不断崩溃的原因。
忽略以 . 开头的文件。或 _ 或以 .tmp 结尾修复了此问题。
加法:
我们一直对链式工作有疑问。似乎只要 Spark 注意到一个文件(即使它没有完全写入),它就会尝试处理它,而忽略所有其他数据。文件重命名操作通常是 atomic 并且应该可以防止出现问题。
我在 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
即使 Mapreduce 忽略以 .或者 _,Spark Streaming 没有。
问题是,当文件正在被复制或处理或其他任何情况下,并且在 HDFS 上找到文件的踪迹时(即 "somefilethatsuploading.txt.tmp")Spark 将尝试处理它。
当进程开始读取文件时,文件已经消失或尚未完成。
这就是进程不断崩溃的原因。
忽略以 . 开头的文件。或 _ 或以 .tmp 结尾修复了此问题。
加法: 我们一直对链式工作有疑问。似乎只要 Spark 注意到一个文件(即使它没有完全写入),它就会尝试处理它,而忽略所有其他数据。文件重命名操作通常是 atomic 并且应该可以防止出现问题。