【问题标题】:Are Big Data Jobs Idempotent?大数据工作是幂等的吗?
【发布时间】:2019-11-03 11:40:40
【问题描述】:

我已经看到,当我们使用 MR、Spark 或 Tez 作为执行引擎编写大数据作业时,作业是幂等的。

作业首先将数据写入临时目录,即“.hivestaging...”或“_temporary”

然后,FileOutputCommitter 使用以下标准将数据合并到其最终目的地:

  • 如果目标位置已有目录,则将其丢弃。
  • 目录从临时位置移动到目标位置。

我的问题是为什么我们说作业是幂等的,要么成功要么失败?会不会有一些数据被移到垃圾箱,作业无法将文件从临时目录移动到目的地,从而导致作业失败和数据丢失的情况?

【问题讨论】:

    标签: apache-spark mapreduce bigdata apache-tez


    【解决方案1】:

    大数据作业有时是幂等的,有时不是幂等的。就像编程的许多方面一样。

    来自以下网址What is an idempotent operation?

    在计算中,幂等操作是指使用相同的输入参数多次调用它时不会产生额外影响的操作。例如,从集合中删除一个项目可以被认为是对集合的幂等操作。

    这些作业不会修改提供给它们的原始输入文件,因此如果唯一的结果是输出文件,则这些作业是幂等的。对相同文件调用这些作业要么失败,要么提供相同(尽管顺序可能不同)的结果。

    但是,如果您的工作是对外部源进行一些操作(例如上传到数据库),重复运行可能会添加额外的数据。因此,在这种情况下它不是幂等的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2015-05-25
      相关资源
      最近更新 更多