Skip to main content
Version: Next

HDDS-4454: Streaming Write Pipeline

Git branch:

Currently, Ozone write pattern is bursty and involves multiple buffers copies as well multiple Ratis log syncs in a block write. The idea of the Jira is to use a zero buffer copy based Ratis streaming (RATIS-979) in Ozone write path for better performance and resource utilization.

To enable the feature, the following configuration properties need to be added to Ozone Manager's ozone-site.xml.

<property>
<name>dfs.container.ratis.datastream.enable</name>
<value>true</value>
<tag>OZONE, CONTAINER, RATIS, DATASTREAM</tag>
<description>If enable datastream ipc of container.</description>
</property>

<property>
<name>ozone.fs.datastream.enabled</name>
<value>true</value>
<tag>OZONE, DATANODE</tag>
<description>
To enable/disable filesystem write via ratis streaming.
</description>
</property>

1. Builds/intermittent test failures

No additional flaky tests have been introduced by the feature branch.

2. Documentation

Documentation was added by HDDS-7425 .

3. Design, attached the docs

The design docs can be found under the Attachments section in the umbrella Jira: HDDS-4454

4. Compatibility

Ozone Streaming Write Pipeline feature does not change any existing APIs.

5. Docker-compose / acceptance tests

New acceptance test was added by Jira: HDDS-7426

6. Support of containers / Kubernetes

No addition.

7. Coverage/code quality

HDDS-4454 feature branch coverage (65.4%) vs master branch coverage (65.9%)

8. Build time

No significant build time difference has been observed.

master branch succeeded (1h 28m 9s):

HDDS-4454 branch succeeded (1h 22m 11s):

9. Possible incompatible changes/used feature flag

There should not be any incompatible changes introduced with this feature.

A global enable/disable switch for the this feature is added in HDDS-5480 .

10. Third party dependencies/license changes

There is no third party dependencies introduced by this feature.

11. Performance

The throughput of the new Streaming Pipeline is roughly 2x and 3x of the throughput of the existing Write Pipeline for the single client case and the 3-client case, respectively.

Single client case: 20220702_Single Client - Benchmarks for Ozone Streaming.pdf

3-client case: 20220702_3 Clients - Benchmarks for Ozone Streaming.pdf