51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

spark 丢失临时文件问题

spark 丢失临时文件问题

HHH 日志改造问题

背景

目前 HHH 日志初筛程序由于 RPC 处理时间过长,需要优化改造成 SparkStreaming 处理;

同时,HHH 日志解析后续 DP、DK、DEL 表生成同样适用MR 处理,浪费大量资源,可改造合并到 Spark Streaming 中一块处理。但在合并初筛、HHH 日志解析、DP、DK、DEL 时,碰到一些问题,请大家帮忙解
决一下。

Spark 版本:2.1.3

问题描述
Spark Streaming 处理时,落盘到 HDFS 时,会报错找不到临时文件,具体如
下截图:

尝试解决方法
更改 xceiverCount 值

参考链接:https://blog.csdn.net/xiaolang85/article/details/19683815在测试集群中增大 xceiverCount 值为 65536.更改后还是会报同样的错。

更改 repartition 为 partitionBy

更改如下图:

使用 partitionBy 代替 repartition,减少同时操作文件数

实验结果:还是会报同样错

取消 repartition、partitionBy
去除 repartition 和 partitionBy,发现落盘时会报同样错。
猜测 batch 过大,增大 executer 内存 和 设置 peRegionServerist 级别为
MEMORY_AND_DISK_SER
没有解决

取消多目录输出 saveAsHadoopFile
为方便后续处理文件,本次改造时,按不同目录对初筛、DP、DK、DEL 文件
输出。更改 saveAsHadoopFile 为
saveAsNewAPIHadoopFile[TextOutputFormat[String,String]](outPath)
发现落盘时会报同样错

麻烦大家看一下这个问题,找出解决方法。
问题原因确认
问题原因

由于 spark 代码中设置了 spark.streaming.concurrentJobs 参数,该参数的作用为 spark 多时间窗口 job 并发执行数量,启用改参数后,在相同输出目录下,多个 job 的临时目录是一样的,在其中一个 job 执行完成后,会删除临时目录,其他执行中的 job 则找不到该临时目录,导致报错

解决方式
根据时间窗当前时间,设置时间戳子目录,使每个时间窗 job 拥有自己的独立目录,保证多个 job 的临时目录是独自使用的

注意:子目录必须在输出数据前设置好,不能在自定义的分目录输出中设置

赞(0)
未经允许不得转载:工具盒子 » spark 丢失临时文件问题