栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【大数据】-- Spark 创建 tmp 目录的原因

【大数据】-- Spark 创建 tmp 目录的原因

一、背景

       数据流向:Spark 读取 ODPS 数据,然后写入阿里云 OSS。

       现象:在使用阿里云 dataworks 调度 Spark 任务时,发现Spark task 全部结束5分钟以后,整体的 job 没有显示 SUCCESSED。于是去查看程序对应的 OSS 输出目录,发现 _temporary 目录下的文件正在复制到目标目录,而不是 move 操作,导致花费时间过多。

       PS:输出到 OSS 的文件数量要合适,太多会导致过多的花费!

二、问题

       为什么 spark 在将结果保存到文件系统(块存储、文件存储和对象存储)时,会将结果文件上传到 _temporary 目录,然后将它们移动(或者复制)到目标文件夹,而不是直接将它们上传到输出文件夹?

三、分析
    两阶段过程是在使用文件系统时确保最终结果的一致性的最简单方法之一。您必须记住,每个执行器线程都写出其结果集独立于其他线程,并且可以在不同的时刻执行写入,甚至可以重用相同的资源集。在 Spark 写数据的那一刻,他无法确定所有写入是否会成功。

    如果失败,可以通过删除临时目录来回滚更改。如果成功,可以通过移动临时目录来提交更改。该模型的另一个好处是在进行中的写入和最终输出之间的区别。因此,它可以轻松地与简单的工作流管理工具集成,而无需具有单独的状态管理或其他同步机制。此模型简单,可靠,适用于设计的文件系统。遗憾的是,它与对象存储没有良好的对象存储,这不支持移动,只能复制。

参考:Spark _temporary creation reason - Stack Overflow

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号