使用临时目录sphark交易写操作

问题描述 投票:0回答:2
根据Databricks的this

博客,Spark依赖于Hadoop的“提交协议”类,因此,如果由于某些故障输出目录而没有完成工作,则如果没有完成工作(部分输出文件不会发生)。 我的问题是; to does spark阻止部分写作在发生故障的情况下(HDFS,S3等)?

是否有可能在最终写操作之前使用相同的临时位置使用相同的位置?

有可能使用不止一次的同一临时位置提交的同一火花作业?

这是一个非常有趣的问题,也是您如何以不可避免的失败为基础实施数据分析的基础。

HADOOPV1算法
apache-spark amazon-s3 hdfs
2个回答
9
投票
O(1)

要执行任务,有弹性,可以在任务提交中失败。职位提交是〜

O(files)

,有很多文件;如果它失败了,则输出状态未知。

S3:

O(data)

提起任务,提交工作很慢(对于整个作业的输出)。缺乏原子质重命名的潜在危险。
hadoop v2提交算法
HDFS:

O(data)

执行任务,无法处理失败。工作提交是O(1)

O(files)
呼叫。 s3:
touch _SUCCESS
要执行任务,无法处理失败,并且在较长的副本操作下进行提交,任务犯下失败的机会更高。 我个人不认为V2算法的失败语义; MapReduce和Spark都假定可以重复一个在提交过程中失败的任务...这在这里不存在。

有一些您不想知道的额外细节,例如驾驶员如何结论一项任务失败,MapReduce如何决定它已经从纱线中分配了,因此一定不能承诺,但总的来说,这一切都取决于心跳和心跳和一旦任务就无法重新铺设的假设。如果您自己实施了提交算法,请确保悬挂在整个工作之后挂起的任务委员

对于对象存储:

databricks dbio。看不到代码,听起来像是他们将dynamoDB用于XAS.

IBMStocator:阅读纸张,
Stocator:Spark
的高性能对象存储连接器。重点是最大程度地减少HTTP请求,并能够从失败的工作/任务提交中回滚。
hadoop3.1的S3A提交者,请阅读:
零重命名committer

。提交任务的时间取决于选择哪个参数。最糟糕的时间将数据从VM上传到S3。任务失败可恢复。作业提交:每个文件创建的一个 *http帖子,可行的,所以

O(data)

)。工作期间的失败不可恢复。

对于Azure和GCS,请使用manifestcommitter。这解决了工作提交中的Azure量表问题(加上可以触发的重命名故障模式),并且缺乏GCS中的目录重命名。

正在进行的工作仅采用清单格式,[Apache Iceberg]是最受欢迎的

Apachehudi
    uber's,而
  • deltalake
  • 是databrick的同等学历。
  • 上面的火花事务提交只能应用于HDF,因为有重命名目录的概念。在S3中,没有重命名的概念,因此,一旦数据写入S3 TEMP位置,它再次将数据复制到新文件夹(以S3双复制)
  • 
    
    to does spark阻止部分写作在发生故障的情况下(HDFS,S3等)?
  • 没有火花不会阻止特定的写入,如果它失败,我们需要手动处理它。 是否有可能在最终写操作之前使用相同的临时位置使用相同的位置?

临时位置位于最终的目标文件夹中,temp作为subsubfolder 有可能使用不止一次的同一临时位置提交的同一火花作业? 是的,他们使用外源/临时工作为目的地


3
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.