Skip to content

Conversation

@elek
Copy link
Member

@elek elek commented Jul 19, 2021

JIRA: https://issues.apache.org/jira/browse/HDDS-5462

What changes were proposed in this pull request?

Freon does have an offline generator test suite to generate quickly local data (rocksdb + container) for load testing.

But today, the datanode generator doesn't support different replication sets for the same node. Containers are generated in a way where the replication sets ("pipelines") are always include the same nodes:

image

In this case, if node1 is down, only node2 and node3 can be used as the source of the nodes.

With multi-raft option enabled, it's possible to have a placement were more than two nodes are used as source.

This patch uses a very simple permutation based approach to have similar layout but still keep the generation to be predictable.

With the new --overlap argument, different containers can have slightly different replication set / pipelines:

image
Please replace this section with the link to the Apache JIRA)

How was this patch tested?

Unit test is added for the new placement calculation.

@elek elek changed the title Multi-raft style placement with permutations for offline data generator HDDS-5462. Multi-raft style placement with permutations for offline data generator Jul 19, 2021
int parallelPipelines = maxDatanodes / 3;
int startOffset = (int) ((containerId % parallelPipelines) * 3);

int pipelineLevel = (int) (containerId / parallelPipelines);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the variable name pipelineLevel is a little indirect to me. If we can find a better name for it...

@jojochuang
Copy link
Contributor

I'll merge this change now if there's no objection.

@jojochuang jojochuang merged commit d3fe588 into apache:master Jul 27, 2021
errose28 added a commit to errose28/ozone that referenced this pull request Jul 30, 2021
* master: (48 commits)
  HDDS-5514. Skip check for UNHEALTHY containers for datanode finalize. (apache#2469)
  HDDS-5279. OFS mkdir -p does not work when Volume is not pre-created (apache#2412)
  HDDS-5328. Remove delete container command from admin CLI (apache#2456)
  HDDS-5382. Increase default container report interval to 60 mins (apache#2363)
  HDDS-5378 Add APIs to retrieve Namespace Summary from Recon (apache#2417)
  HDDS-5466. Refactor BlockOutputStream. (apache#2442)
  HDDS-5465. Delete redundant code when set、add and remove bucket acl (apache#2439)
  HDDS-5184. Use separate DB profile for Datanodes. (apache#2214)
  HDDS-5494. Reduce retry in Kubernetes test (apache#2461)
  HDDS-5414. Data buffers incorrectly filtered for Ozone Insight (apache#2387)
  HDDS-5450. Avoid refresh pipeline for S3 headObject (apache#2431)
  HDDS-5500. New k3s version breaks kubernetes test (apache#2464)
  HDDS-5489. Install OS-specific flekszible (apache#2462)
  Multi-raft style placement with permutations for offline data generator (apache#2434)
  HDDS-5484. Intermittent failure in TestReplicationManager#testMovePrerequisites (apache#2454)
  HDDS-5443 Create and then recreate a bucket with a randomized name (apache#2436)
  HDDS-5492. Disable failing kubernetes test (apache#2459)
  HDDS-4330. Bootstrap new OM node (apache#1494)
  HDDS-5418. Let Recon send reregisterCommand to Datanodes if DatanodeDetails changed (apache#2392)
  HDDS-5479. s3g bucket list failed when there is non-english key name. (apache#2450)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants