开发者社区 问答 正文

DLA FS的OSSTransactionalOutputCommitter的流程是什么?

DLA FS的OSSTransactionalOutputCommitter的流程是什么?

展开
收起
游客qzzytmszf3zhq 2021-12-09 19:49:58 196 分享 版权
1 条回答
写回答
取消 提交回答
  • setupJob。Driver开启一个GlobalTransaction,GlobalTransaction在初始化的时候会在OSS上新建一个隐藏的属于这个GlobalTransaction的工作目录,用来存放本job的文件元数据。 setupTask。Executor使用Driver序列化过来的GlobalTransaction生成LocalTransaction。并监听文件的写入完成状态。 Executor写文件。文件的元数据信息会被LocalTransaction监听到,并储存到本地的RocksDB里面,OSS远程调用比较耗时,我们把元数据存储到本地RocksDB上等到后续一次提交能够减少远程调用耗时。 commitTask。当Executor调用LocalTransaction commit操作时,LocalTransaction会上传这个Task它所相关的元数据到OSS对应的工作目录中去,不再监听文件完成状态。 commitJob。Driver会调用GlobalTransaction的commit操作,全局事务会读取工作目录中的所有元数据中的待提交文件列表,调用OSS completeMultipartUpload接口,让所有文件对用户可见。

    2021-12-09 20:00:48
    赞同 展开评论
问答地址: