Ozone Streaming方式的写优化

本文探讨了Ozone利用Ratis Streaming优化数据写出过程,以减少RPC调用并提升性能。Ozone现有写出涉及多次transaction,而Ratis Streaming通过流式传输减少RPC,采用netty实现zero buffer copy,降低数据拷贝开销。设计包括无transaction流写出和数据Pipeline优化。在流数据写出失败时,采取提前提交保证正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


在Ozone目前数据写出的过程,是基于从对象文件的block,再从block到chunk粒度进行数据的写出的。每次Ozone写完一个chunk后,对应着会触发一次write chunk的RPC call。当我们写入的数据文件对象很大的时候,过程中将会涉及到很多次write chunk PRC的操作调用。这个RPC call的频繁调用意味着相应更多的transaction的发生。对于Ozone Datanode里使用Raft协议做数据一致性同步过程的影响而言,则意味着更多的raft log需要被apply以及对应Ratis snapshot的take操作也会变得更加频繁。在一定程度上,这会影响到Datanode节点本身的数据写出操作。最近社区提出了利用Ratis Streaming的特性来优化Ozone数据写出的流程。本文笔者来简单聊聊Ozone Streaming这种全新方式的数据写出过程,目前此功能处于有一个初步的设计方案阶段。

Ozone Streaming的实现背景:Ratis Streaming


首先我们来聊聊Ozone Streaming的一个大的背景,Ozone Streaming想法的提出源自于Ratis Streaming特性。Ratis Streaming,顾名思义,指的是能用流的方式将数据写出去而不是通过传统RPC模式,将数据一点一点写出去。

在Ratis Streaming功能中,除了其能够减少数据写过程中的RPC数,还有另外一个改进是它使用了netty作为底层流原理的实现,能够做到数据传输过程中的的zero buffer copy的功效。同时在streaming方式的数据写出过程里,写出操作是在一个流里进行的,因此不会涉及到频繁的流关闭操

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值