---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/api/cpp/examples.md
  - https://ytsaurus.tech/docs/ru/api/cpp/examples.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/en/llms.txt

<!-- source: en/_includes/api/cpp/examples.md -->
# Usage examples

You need to get a [YTsaurus token](https://ytsaurus.tech/docs/en/user-guide/storage/auth.md) before running the examples.

Run the examples on `Linux`, with no arguments.


We recommend setting the log level to `INFO` or `DEBUG` to make programs output links to the web interface where you can monitor the execution.

The log level is set using an environment variable with this command (more info is available in the [documentation](https://ytsaurus.tech/docs/en/api/cpp/description.md#logging)):

```bash
export YT_LOG_LEVEL=INFO
```

For production processes, we recommend saving the most detailed `DEBUG` logs. If any problem occurs, these logs will help you find out what was happening.

## Basic level

### Simple Map (TNode version)

Suppose there is a table with logins. You want to make a table with email addresses, deriving them from the login: `email = login + "@domain"`.

To do this, you can use a simple mapper.

The example is located at [yt/cpp/mapreduce/examples/tutorial/simple_map_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/simple_map_tnode).

```c++
 'yt/cpp/mapreduce/tutorial/simple_map_tnode/main.cpp'
```

### Simple Map (Protobuf version)

If you know the structure of the table, you may use the [Protobuf](https://ytsaurus.tech/docs/en/api/cpp/protobuf.md) format, which:

- Is a bit faster.
- Prevents such errors as typos in column names or usage of wrong type for column.

The example is located at [yt/cpp/mapreduce/examples/tutorial/simple_map_protobuf](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/simple_map_protobuf).

{% code '/yt/cpp/mapreduce/examples/tutorial/simple_map_protobuf/data.proto' lang='protobuf' %}

{% code '/yt/cpp/mapreduce/examples/tutorial/simple_map_protobuf/main.cpp' lang='c++' %}

### Simple Map with Protobuf using lambda expressions in C++

Some simple operations can be represented as C++ lambda expressions with an empty capture-list (not capturing variables) using the [yt/cpp/mapreduce/library/lambda](https://ytsaurus.tech/docs/en/api/cpp/lambda.md) library.

The previous example can be rewritten as follows (`data.proto` is the same):

([yt/cpp/mapreduce/examples/tutorial/simple_map_lambda](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/simple_map_lambda))

{% code '/yt/cpp/mapreduce/examples/tutorial/simple_map_lambda/main.cpp' lang='c++' %}

### Sorting a table and a simple Reduce operation

Given the same input table, we can count how many times each name occurs. To do this we need Reduce operation. Reduce operation requires input table to be sorted, so we run the Sort operation before launching Reduce.

The example is located at [yt/cpp/mapreduce/examples/tutorial/simple_reduce_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/simple_reduce_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/simple_reduce_tnode/main.cpp' lang='c++' %}

### Composite types and Protobuf format (using Reduce as an example)

Let's say we have a table with a set of records on links occurring in web documents. This table has the following columns:

- `DocTitle`: is a string containing the document name.
- `Link` is a struct containing following fields:
  - `Host`: host part of the link url.
  - `Port`: port part of the link url.
  - `Path`: path part of the link url.
- `OccurrenceCount`: how many times link appears in the document.

Our input table is sorted by `DocTitle` column. We want to aggregate information about each document into single row of output table.

Let's describe protobuf messages of the following form:

{% code '/yt/cpp/mapreduce/examples/tutorial/protobuf_complex_types/data.proto' lang='c++' %}

`TLinkEntry` corresponds to the input table row, and `TDoc` corresponds to the output table row.

The `TDoc` fields have the following semantics:
- `Title`: Title.
- `Links`: List of links occurring in the document.
- `OccurrenceCounts`: List with the number of times the given links occur (this list has same length as the `Links` list).
- `ExtraInfo`: Additional information, which in this case includes the total number of times the links occurs.

{% note warning "Attention" %}

`(NYT.field_serialization_mode)` in `TDoc` and `TLinkEntry` messages. By default, this option equals `PROTOBUF`, which means "serialize the field as a sequence of bytes". The `YT` value we set means that the corresponding nested message will be related to the composite type in the table schema. In `TDoc`, as an example, we marked the `ExtraInfo` field with the `(NYT.serialization_mode) = PROTOBUF` option (note the type of the respective field in the output table).

{% endnote %}


The [reducer](https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/reduce.md) is straightforward.

{% code '/yt/cpp/mapreduce/examples/tutorial/protobuf_complex_types/main.cpp' lang='c++' %}

### Reduce with multiple input tables { #multiple-input-reduce-tnode }

Imagine that besides the table with users from our previous examples, there is also a second table with robots.

The following program creates a table where non-robot users are filtered out.

The example is located at [yt/cpp/mapreduce/examples/tutorial/multiple_input_reduce_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/multiple_input_reduce_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/multiple_input_reduce_tnode/main.cpp' lang='c++' %}

### Reading files from operations { #map-tnode-with-file }

The previous task can be solved in a different way: upload the table with robots directly to the machines running the operations and read it there as a whole in `yhash_set`.

In this case, you don't have to sort the table and can use Map instead of Reduce. This method is used for small tables up to several GB in size.

Input tables are the same as in the previous example: [with users](https://yt.yandex-team.ru/freud/#page=navigation&path=//home/dev/tutorial/staff_unsorted&offsetMode=row) and [with robots](https://yt.yandex-team.ru/freud/#page=navigation&path=//home/dev/tutorial/is_robot_unsorted&offsetMode=row).

The following program creates a table where non-robot users are filtered out.

The example is located at [yt/cpp/mapreduce/examples/tutorial/map_tnode_with_file](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/map_tnode_with_file).

{% code '/yt/cpp/mapreduce/examples/tutorial/map_tnode_with_file/main.cpp' lang='c++' %}

### Reduce with multiple input and output tables

Here we have a similar task as in the previous example, except this time we'll write two output tables at once: with human users and with robots.

The example is located at [yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_tnode/main.cpp' lang='c++' %}

### Reduce with multiple input and output tables (Protobuf version)

To create separate tables for human users and robots, we need to rewrite the same reducer to protobuf. The table with human users will contain the `login`, `email`, and `name` fields. The table with robots will contain the `login` and `uid` fields. We need to create separate protobuf message types for these tables.

The example is located at [yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_protobuf](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_protobuf).

{% code '/yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_protobuf/data.proto' lang='c++' %}

{% code '/yt/cpp/mapreduce/examples/tutorial/multiple_input_multiple_output_reduce_protobuf/main.cpp' lang='c++' %}

### Reading and writing tables

When writing a table you can overwrite existing data or append your data to the table. When reading a table you can read the entire table or ranges by row number or key. Learn more about [reading and writing data](https://ytsaurus.tech/docs/en/user-guide/storage/formats.md#table_data) and [tables](https://ytsaurus.tech/docs/en/user-guide/storage/objects.md#tables).

The example is located at [yt/cpp/mapreduce/examples/tutorial/table_read_write_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/table_read_write_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/table_read_write_tnode/main.cpp' lang='c++' %}

### Transferring states to jobs

Sometimes you may need to write an operation that takes certain arguments. For example, write a program that filters the source table by user name.

The example is located at [yt/cpp/mapreduce/examples/tutorial/stateful_map_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/stateful_map_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/stateful_map_tnode/main.cpp' lang='c++' %}

### MapReduce operation (Protobuf version)

YTsaurus has the [MapReduce](https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/mapreduce.md) merged operation, which works a bit faster than [Map](https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/map.md) + [Sort](https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/sort.md) + [Reduce](https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/reduce.md). Let's return to one of our first examples and once again get the statistics of how many times a name occurs in our table with users. Before we do that, we first need to standardize the names by converting all of them to lowercase so that people with the names `ARCHIE` and `Archie` are counted as one.

The example is located at [yt/cpp/mapreduce/examples/tutorial/mapreduce_protobuf](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/mapreduce_protobuf).

{% code '/yt/cpp/mapreduce/examples/tutorial/mapreduce_protobuf/main.cpp' lang='c++' %}

### MapReduce operation (version with lambda expressions)

The task is the same as in the previous example.

The example is located at [yt/cpp/mapreduce/examples/tutorial/mapreduce_lambda](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/mapreduce_lambda).

{% code '/yt/cpp/mapreduce/examples/tutorial/mapreduce_lambda/main.cpp' lang='c++' %}

### Preparing an operation in a job class { #prepare_operation }

You can set up the operation parameters by overloading the `IJob::PrepareOperation` method. For more information, see [Description](https://ytsaurus.tech/docs/en/api/cpp/description.md#prepare_operation).

{% code '/yt/cpp/mapreduce/examples/tutorial/prepare_operation/grepper.proto' lang='protobuf' %}

{% code '/yt/cpp/mapreduce/examples/tutorial/prepare_operation/main.cpp' lang='c++' %}

## Advanced level

### Running multiple operations in parallel

To run multiple operations in parallel, use the [TOperationTracker](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/library/operation_tracker/operation_tracker.h) class.

The example is located at [yt/cpp/mapreduce/examples/tutorial/operation_tracker](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/operation_tracker).

{% code '/yt/cpp/mapreduce/examples/tutorial/operation_tracker/main.cpp' lang='c++' %}

### Reduce with enable_key_guarantee=false

Suppose you want to filter a table with URLs by regular expressions that are located in a separate table with hosts (each host has its own regular expression). And while you could run Reduce on the `host` column, real data is often arranged in such a way that some hosts have a disproportionately large number of URLs. In our example, URLs from the host `https://www.youtube.com` take up more than half of the table. The job responsible for processing such a host will take a disproportionately large amount of time (keys like `https://www.youtube.com` here are also called *monster keys*).

However, you don't need all the records with the same host to go to the same machine to solve the task. You can distribute the table with URLs among several machines: note that the host must be received along with the URL.

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" width="721px" height="861px" version="1.1" content="&lt;mxfile userAgent=&quot;Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0&quot; version=&quot;7.3.7&quot; editor=&quot;www.draw.io&quot; type=&quot;dropbox&quot;&gt;&lt;diagram id=&quot;342e4d60-5584-959f-ebbe-47336cfbbd7e&quot; name=&quot;Page-1&quot;&gt;5Zpdb5swFIZ/Te6DDYZctlnXadqkaZ20awc7YNXgCJwm7a+fCaYB7I5pJc5gvSkcf4Cf1x/nnLCA6+x4X+Bd+lUQyhdgSY4L+GEBgOfDpfpXWZ5rSxhGtSEpGNGVzoYH9kK1UbdL9ozQslNRCsEl23WNschzGsuODReFOHSrbQXvPnWHE2oYHmLMTetPRmRaWyMQnu2fKEvS5skeWtUlGxw/JoXY5/p5CwC3p7+6OMNNX3qgZYqJOLRM8G4B14UQsr7KjmvKK7YNtrrdxzdKX9+7oLn8kwagbvCE+V4PPRWlVN2slXVfcN1hKZ8bNKfB0aq5t4C3h5RJ+rDDcVV6UJNB2VKZcV28ZZyvBRfFqS0kAY2Ir+ylLMQjbZVEYAMRUiXmAPQrPNFC0mPLpAd0T0VGZfGsquhSH2m4evKtdA+Hs5Ker6ukLRWbSYv15Eleez4DVBeaoZ0nHOAJZ8DTC313QP0BoGAOQCFwBzQYAOrPACjwAndA0QDQYA5Ag9Ad0NAKFMzqTAKryB3QaADoHPZQ2MBzAXRlBQpnNUNh5NBtavx++yZKsMTjIlUOOYhjG1KCNigYCakX9M95l0jtrj2YGdLQJVK7dw/nhVTxc4j0t/79VZBm4glvTs+q2he0ZC/teyHVS53vCeW0fU8Ja9/qBEXLMoJiq65gCDn0dr2h+MH52Tc5vcKlS72GwhPnGYnp6RU59NU9e/RzxYTH9PTykUO97MHVFfMpk9MrauIpJ3rZY7dpZxdg2FsB0OEJA+yx27TTCwbR0GEC7PV155RfQLBH1GWOFswyGO5PUuTSUXnjp66JB8P9WYpC6BCpGQz/OJ28YDkiy1zkqtItxxvKv4mSSSZyZY4VNKrKbytYLMb8S6+CFFWnmLPEWv1GF2yElCIbKTXRU8Nr8oRtNSKLGqBJC71LDjN0auQY8UibkBy+31scFr/NpgYMwfvVgKab8Vlsprk0/n0XvX+y+JY068UWHjT9n1rq/3PZwaAvBnAphuk61WKMmDiakBjIu+rKMI8kQ4UyxbvqsmR5wulN9TVctYmwQm0SNbZS7KtX/QuFLnCm+5F5piMLP285xudZZnZtavwC75r8zGzX1Pj1F7Bbfmb26TslewWgT1GNRnZxdOMeDcTCaHA7zBgh1WOs/Lcil/p7XOiPtOLBMPEguBRy3/QbpzZlgcMtU92evz4+lbU+8YZ3vwA=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g transform="translate(0.5,0.5)"><rect x="390" y="38" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,46.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url1</text></switch></g><rect x="390" y="121" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,129.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url3</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url3</text></switch></g><rect x="390" y="79" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,87.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url2</text></switch></g><rect x="390" y="162" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,170.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url4</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url4</text></switch></g><rect x="390" y="204" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,212.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url5</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url5</text></switch></g><rect x="390" y="245" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,253.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, url1</text></switch></g><rect x="390" y="287" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,295.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, url2</text></switch></g><rect x="390" y="328" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(431.5,336.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host3, url1</text></switch></g><rect x="80" y="78" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(116.5,86.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, data1</text></switch></g><rect x="80" y="118" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(116.5,126.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, data1</text></switch></g><rect x="80" y="161" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(116.5,169.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host3, data1</text></switch></g><rect x="20" y="612" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(56.5,620.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, data1</text></switch></g><rect x="20" y="652" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(61.5,660.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url1</text></switch></g><rect x="20" y="735" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(61.5,743.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url3</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url3</text></switch></g><rect x="20" y="693" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(61.5,701.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url2</text></switch></g><rect x="20" y="776" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(61.5,784.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url4</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host1, url4</text></switch></g><rect x="300" y="682" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(341.5,690.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, url1</text></switch></g><rect x="300" y="724" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(341.5,732.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, url2</text></switch></g><rect x="560" y="662" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(601.5,670.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host3, url1</text></switch></g><rect x="300" y="635" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(336.5,643.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host2, data1</text></switch></g><rect x="560" y="620" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(596.5,628.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">host3, data1</text></switch></g><rect x="60" y="57" width="180" height="271" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none"/><g transform="translate(129.5,40.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="41" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Table 1</div></div></foreignObject><text x="21" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Table 1</text></switch></g><rect x="370" y="16" width="180" height="372" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none"/><g transform="translate(439.5,-0.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="41" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Table 2</div></div></foreignObject><text x="21" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Table 2</text></switch></g><rect x="0" y="588" width="180" height="271" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none"/><g transform="translate(74.5,571.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 1</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Job 1</text></switch></g><rect x="280" y="589" width="180" height="271" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none"/><g transform="translate(354.5,572.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 2</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Job 2</text></switch></g><rect x="540" y="588" width="180" height="271" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none"/><g transform="translate(614.5,571.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 3</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Job 3</text></switch></g><path d="M 40 468 L 120 468 L 120 447 L 140 477 L 120 507 L 120 486 L 40 486 Z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,90,477)" pointer-events="none"/><path d="M 420 468 L 500 468 L 500 447 L 520 477 L 500 507 L 500 486 L 420 486 Z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,470,477)" pointer-events="none"/><path d="M 520 468 L 600 468 L 600 447 L 620 477 L 600 507 L 600 486 L 520 486 Z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,570,477)" pointer-events="none"/><g transform="translate(265.5,457.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="118" height="39" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 34px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 119px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Reduce</div></div></foreignObject><text x="59" y="37" fill="#000000" text-anchor="middle" font-size="34px" font-family="Helvetica">Reduce</text></switch></g><path d="M 140 468 L 220 468 L 220 447 L 240 477 L 220 507 L 220 486 L 140 486 Z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,190,477)" pointer-events="none"/></g></svg>

<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" width="826.686274766922" height="978.6470594406128" version="1.1" content="&lt;mxfile userAgent=&quot;Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0&quot; version=&quot;7.3.7&quot; editor=&quot;www.draw.io&quot; type=&quot;dropbox&quot;&gt;&lt;diagram id=&quot;342e4d60-5584-959f-ebbe-47336cfbbd7e&quot; name=&quot;Page-1&quot;&gt;7Ztbb+MoFIB/TR53ZYNvecylndFoVqq2K+3OI7FpguqYCpNe5tcvNpBgQyedHZfU1vbBxYf7dw5wgHgGV/vnTww97P6gBS5nICieZ3A9AyCMYCD+NZIXKUnTTAq2jBQq0UlwS75jJVT5tgdS4LqTkFNacvLQFea0qnDOOzLEGH3qJrujZbfWB7TFluA2R6Ut/ZsUfCelGUhP8s+YbHe65jCZy5gNyu+3jB4qVd8MwLv2T0bvkS5LdbTeoYI+GSJ4NYMrRimXof3zCpcNW41N5rt+JfbYboYr/pYMQGZ4ROVBdX1Hay6KWQnpgZWqwJq/aDRt53CTPZzB5dOOcHz7gPIm9kkYg5Dt+L5U0XekLFe0pKzNC4sYZ0Uk5DVn9B4bMRnYwCQRMXYHVBMeMeP42RCpDn3CdI85exFJVGyUKLjK+OaqhKeTJsNIJdkZWtRGi5TxbI8lnwCKgGLo5gnP8IQT4BmmkT+g0RmgYApAIfAHND4DNJoAUBDG/oAmZ4DGUwAap/6Apk6gYFJrEphn/oBmZ4BOYQ6FGp4PoHMnUDgpC4WZR7dJ+/3uSbRAHA2LVDjkIM9dSItkk8QDIQ3j/jrvE6nbtQcTQ5r6ROr27uG0kAp+HpH+0L+/CNI9fUSbtq4mP8M1+W6+Uy4adXovcInNd1wQ81UdUBiSIabqrsKSLPGosHP7B+9r3+j0dTwM86Ivtzd9wQ30+PQFPe4mQ7dvOa3dj1eiwO1bTmv7k6YeN+jH5k5p/5P0iYYeV1UwSWe9b6RJ5nHhe+UofuTOet9KE59n8Y7D+L/alRcEA7KsaCUSLUu0weUNrQkntBLiXEDDIn7ZwCI5Kr/2EnDaFIpKsnUmX6iIDeWc7gfaOsHeblSvNaY2Moc2gN62/pI67JNnrY4Bl7QRqSPqb4zmb9MGTMGvawPabsYXuhnn0Pj4LjroaTp+48AL50Nc8tr+j1T1gLe7Yx52fpVhu05SGQNeZI5IGclllWEvSZYW6h16aII1qbYlXjS/1mkmEcLEJCGx1fTQNPU/aOgd1vQoswEmLn7BEPzs05qx8Tve5VyEn33VOTZ+Se84Pkp98nOfPv1/HP9Di+9pzOt5fOQ+i7ngL87GpzCvx5HRuZ8Iev8B1ggV5vMGJbJPPaSDOcJN9ghUDS/pv0b27ebY/Ic4uaD/ENn+/xdKqt/+xMVBUOijFF3iXSbdWUpRcYA6a/J7UhRNNU4l3NGKq48OYDQM9vkbvF7wbth/YtuQiyXmZclQfo/5eRvtzmgORfRRmuOgoqwdB0NMC128WWLjhXMH3mQIuo5NxTqYLeBMQBF6FuHlsg2LngZtIGwDQn7VPqP2uTYkUIVV+lhHtXmbZ1vFMtAJ5KtMdq3DsnbxXHWrC42GBVoiw7KotqmNBBjyKyNWlnCti10bNcqiFkZ1S9WGkzxrnysVVoVICEm3nccWHhN/vCkinA90stD7LMVxWRAF72XD9sbOQo2rQq1m67xEdU3y3nrVQyJIsJd/xFvwexiGWvCtFQRhrAU3mBHR3kYFQsVC+Ey4zBWrt28d9wEX1rdZFnSxwrJcpYpVTzhiW6zvVyK3JgzUsYO0ljFcIk4eu81w4Vc13Ig1jr9+hJT2FChbrzKddGiX07MYfZ+hy5E9tsppbeHY6TeZh2bYn+LWxpwAu3ORObEs9agXsYmR+DinAWOMy2kkNQqJVazKsjCiFrPm6z2GmxH7EacGcDRbax5wGO7rTlvPe3i/37KL19PXhdJSTp9wwqt/AQ==&lt;/diagram&gt;&lt;/mxfile&gt;"><rect id="svg-9zprkrqa__backgroundrect" width="100%" height="100%" x="0" y="0" fill="none" stroke="none"/><defs/><g class="currentLayer" style=""><title>Layer 1</title><rect x="450.89215686917305" y="51.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_2" class=""/><g id="svg-9zprkrqa__svg_3" class=""><switch transform="translate(0.392157) translate(491.5, 59.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_4"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_5">host1, url1</text></switch></g><rect x="450.89215686917305" y="134.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_6" class=""/><g id="svg-9zprkrqa__svg_7" class=""><switch transform="translate(0.392157) translate(491.5, 142.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_8"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url3</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_9">host1, url3</text></switch></g><rect x="450.89215686917305" y="92.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_10" class=""/><g id="svg-9zprkrqa__svg_11" class=""><switch transform="translate(0.392157) translate(491.5, 100.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_13">host1, url2</text></switch></g><rect x="450.89215686917305" y="175.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_14" class=""/><g id="svg-9zprkrqa__svg_15" class=""><switch transform="translate(0.392157) translate(491.5, 183.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_16"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url4</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_17">host1, url4</text></switch></g><rect x="450.89215686917305" y="217.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_18" class=""/><g id="svg-9zprkrqa__svg_19" class=""><switch transform="translate(0.392157) translate(491.5, 225.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_20"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url5</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_21">host1, url5</text></switch></g><rect x="450.89215686917305" y="258.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_22" class=""/><g id="svg-9zprkrqa__svg_23" class=""><switch transform="translate(0.392157) translate(491.5, 266.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_25">host2, url1</text></switch></g><rect x="450.89215686917305" y="300.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_26" class=""/><g id="svg-9zprkrqa__svg_27" class=""><switch transform="translate(0.392157) translate(491.5, 308.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_28"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_29">host2, url2</text></switch></g><rect x="450.89215686917305" y="341.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_30" class=""/><g id="svg-9zprkrqa__svg_31" class=""><switch transform="translate(0.392157) translate(491.5, 349.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_32"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_33">host3, url1</text></switch></g><rect x="140.89215686917305" y="91.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_34" class=""/><g id="svg-9zprkrqa__svg_35" class=""><switch transform="translate(0.392157) translate(176.5, 99.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_36"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_37">host1, data1</text></switch></g><rect x="140.89215686917305" y="131.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_38" class=""/><g id="svg-9zprkrqa__svg_39" class=""><switch transform="translate(0.392157) translate(176.5, 139.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_40"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_41">host2, data1</text></switch></g><rect x="140.89215686917305" y="174.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_42" class=""/><g id="svg-9zprkrqa__svg_43" class=""><switch transform="translate(0.392157) translate(176.5, 182.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_44"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_45">host3, data1</text></switch></g><rect x="30.89215686917305" y="646.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_46" class=""/><g id="svg-9zprkrqa__svg_47" class=""><switch transform="translate(0.392157) translate(66.5, 654.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_49">host1, data1</text></switch></g><rect x="30.89215686917305" y="738.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_50" class=""/><g id="svg-9zprkrqa__svg_51" class=""><switch transform="translate(0.392157) translate(71.5, 746.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_52"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_53">host1, url1</text></switch></g><rect x="30.89215686917305" y="695.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_54" class=""/><g id="svg-9zprkrqa__svg_55" class=""><switch transform="translate(0.392157) translate(71.5, 703.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_56"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_57">host1, url2</text></switch></g><rect x="450.89215686917305" y="695.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_58" class=""/><g id="svg-9zprkrqa__svg_59" class=""><switch transform="translate(0.392157) translate(491.5, 703.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_60"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_61">host2, url1</text></switch></g><rect x="450.89215686917305" y="737.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_62" class=""/><g id="svg-9zprkrqa__svg_63" class=""><switch transform="translate(0.392157) translate(491.5, 745.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_64"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, url2</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_65">host2, url2</text></switch></g><rect x="650.892156869173" y="676.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_66" class=""/><g id="svg-9zprkrqa__svg_67" class=""><switch transform="translate(0.392157) translate(691.5, 684.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_68"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, url1</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_69">host3, url1</text></switch></g><rect x="450.89215686917305" y="648.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_70" class=""/><g id="svg-9zprkrqa__svg_71" class=""><switch transform="translate(0.392157) translate(486.5, 656.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host2, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_73">host2, data1</text></switch></g><rect x="650.892156869173" y="634.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_74" class=""/><g id="svg-9zprkrqa__svg_75" class=""><switch transform="translate(0.392157) translate(686.5, 642.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_76"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host3, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_77">host3, data1</text></switch></g><rect x="120.89215686917305" y="80.5" width="180" height="271" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_78" class=""/><g id="svg-9zprkrqa__svg_79" class=""><switch transform="translate(0.392157) translate(189.5, 63.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="41" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_80"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Table 1</div></div></foreignObject><text x="21" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_81">Table 1</text></switch></g><rect x="430.89215686917305" y="29.5" width="180" height="372" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_82" class=""/><g id="svg-9zprkrqa__svg_83" class=""><switch transform="translate(0.392157) translate(499.5, 12.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="41" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_84"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Table 2</div></div></foreignObject><text x="21" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_85">Table 2</text></switch></g><rect x="10.89215686917305" y="610.5" width="180" height="190" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_86" class=""/><g id="svg-9zprkrqa__svg_87" class=""><switch transform="translate(0.392157) translate(84.5, 593.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_88"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 1</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_89">Job 1</text></switch></g><rect x="430.89215686917305" y="610.5" width="180" height="190" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_90" class=""/><g id="svg-9zprkrqa__svg_91" class=""><switch transform="translate(0.392157) translate(504.5, 593.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_92"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 3</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_93">Job 3</text></switch></g><rect x="630.892156869173" y="610.5" width="180" height="190" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_94" class=""/><g id="svg-9zprkrqa__svg_95" class=""><switch transform="translate(0.392157) translate(704.5, 593.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_96"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 4</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_97">Job 4</text></switch></g><path d="M100.89215686917305,481.5 L180.89215686917305,481.5 L180.89215686917305,460.5 L200.89215686917305,490.5 L180.89215686917305,520.5 L180.89215686917305,499.5 L100.89215686917305,499.5 z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90, 150.892, 490.5)" pointer-events="none" id="svg-9zprkrqa__svg_98" class=""/><path d="M180.89215686917305,481.5 L260.89215686917305,481.5 L260.89215686917305,460.5 L280.89215686917305,490.5 L260.89215686917305,520.5 L260.89215686917305,499.5 L180.89215686917305,499.5 z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90, 230.892, 490.5)" pointer-events="none" id="svg-9zprkrqa__svg_99" class=""/><path d="M620.892156869173,471.5 L700.892156869173,471.5 L700.892156869173,450.5 L720.892156869173,480.5 L700.892156869173,510.5 L700.892156869173,489.5 L620.892156869173,489.5 z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90, 670.892, 480.5)" pointer-events="none" id="svg-9zprkrqa__svg_100" class=""/><rect x="240.89215686917305" y="646.5" width="140" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="none" id="svg-9zprkrqa__svg_101" class=""/><g id="svg-9zprkrqa__svg_102" class=""><switch transform="translate(0.392157) translate(276.5, 654.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_103"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, data1</div></div></foreignObject><text x="34" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_104">host1, data1</text></switch></g><rect x="240.89215686917305" y="695.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_105" class=""/><g id="svg-9zprkrqa__svg_106" class=""><switch transform="translate(0.392157) translate(281.5, 703.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_107"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url3</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_108">host1, url3</text></switch></g><rect x="240.89215686917305" y="738.5" width="140" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="none" id="svg-9zprkrqa__svg_109" class=""/><g id="svg-9zprkrqa__svg_110" class=""><switch transform="translate(0.392157) translate(281.5, 746.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="57" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_111"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 58px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">host1, url4</div></div></foreignObject><text x="29" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_112">host1, url4</text></switch></g><rect x="220.89215686917305" y="610.5" width="180" height="190" rx="27" ry="27" fill="none" stroke="#000000" pointer-events="none" id="svg-9zprkrqa__svg_113" class=""/><g id="svg-9zprkrqa__svg_114" class=""><switch transform="translate(0.392157) translate(294.5, 593.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_115"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Job 2</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_116">Job 2</text></switch></g><path d="M530.892156869173,471.5 L610.892156869173,471.5 L610.892156869173,450.5 L630.892156869173,480.5 L610.892156869173,510.5 L610.892156869173,489.5 L530.892156869173,489.5 z" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90, 580.892, 480.5)" pointer-events="none" id="svg-9zprkrqa__svg_117" class=""/><path d="M235.89215686917305,655.5 L215.89215686917305,655.5 Q205.89215686917305,655.5 205.89215686917305,665.5 L205.89215686917305,840.5 Q205.89215686917305,850.5 195.89215686917305,850.5 L185.89215686917305,850.5 Q175.89215686917305,850.5 185.89215686917305,850.5 L195.89215686917305,850.5 Q205.89215686917305,850.5 205.89215686917305,860.5 L205.89215686917305,1035.5 Q205.89215686917305,1045.5 215.89215686917305,1045.5 L235.89215686917305,1045.5 " fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(270, 205.892, 850.5)" pointer-events="none" id="svg-9zprkrqa__svg_121" class=""/><g id="svg-9zprkrqa__svg_122" class=""><switch transform="translate(0.392157) translate(0.5, 887.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="398" height="44" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_123"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 19px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 398px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Урлы с одного хоста теперь обрабатываются несколькими джобами</div></div></foreignObject><text x="199" y="32" fill="#000000" text-anchor="middle" font-size="19px" font-family="Helvetica" id="svg-9zprkrqa__svg_124">Урлы с одного хоста теперь обрабатываются несколькими джобами</text></switch></g><path d="M110.89215686917305,30.5 L137.80216053128242,78.93000030517578 " fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none" id="svg-9zprkrqa__svg_125" class=""/><path d="M140.35216358304024,83.5199966430664 L133.89215686917305,79.0999984741211 L137.80216053128242,78.93000030517578 L140.01215198636055,75.69999694824219 z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none" id="svg-9zprkrqa__svg_126" class=""/><g id="svg-9zprkrqa__svg_127" class=""><switch transform="translate(0.392157) translate(40.5, 1.5) translate(0.5, 0.5)"><foreignObject style="overflow:visible;" pointer-events="all" width="138" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" id="svg-9zprkrqa__svg_128"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 138px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Эту таблицу отмечаем как foreign</div></div></foreignObject><text x="69" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica" id="svg-9zprkrqa__svg_129">Эту таблицу отмечаем как foreign</text></switch></g><foreignObject fill="#000000" stroke="#000000" style="color: rgb(0, 0, 0); text-align: center;" stroke-dashoffset="" fill-rule="nonzero" font-size="31" font-family="Georgia, serif" letter-spacing="0" word-spacing="0" marker-start="" marker-mid="" marker-end="" id="svg-9zprkrqa__svg_1" x="334.21568975005687" y="453.72548082235807" width="116.66665315600298" height="38.196080757139356" class=""><p xmlns="http://www.w3.org/1999/xhtml" style="border: none;outline: none;font-size: inherit;line-height: 1em;padding:0;margin:0;">Reduce<br style="border: none;outline: none;font-size: inherit;line-height: 1em;padding:0;margin:0;"/></p></foreignObject><foreignObject fill="#000000" stroke="#000000" style="color: rgb(0, 0, 0); text-align: justify;" stroke-dashoffset="" fill-rule="nonzero" font-size="13" font-family="Georgia, serif" letter-spacing="0" word-spacing="0" marker-start="" marker-mid="" marker-end="" id="svg-9zprkrqa__svg_132" x="312.84313927828043" y="491.4313743118296" width="170.09801230186167" height="25.980393048684828" class=""><p xmlns="http://www.w3.org/1999/xhtml" style="border: none;outline: none;font-size: inherit;line-height: 1em;padding:0;margin:0;">enable_key_guarantee=false</p></foreignObject></g></svg>

The example is located at [yt/cpp/mapreduce/examples/tutorial/join_reduce_tnode](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/join_reduce_tnode).

{% code '/yt/cpp/mapreduce/examples/tutorial/join_reduce_tnode/main.cpp' lang='c++' %}

### Batch requests

You can execute light requests (create/delete a table, check its existence, etc.) in batches. Use this method if you need to run a large amount of uniform operations. Batch requests can save a lot of time.

The example is located at [yt/cpp/mapreduce/examples/tutorial/batch_request](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/batch_request).

{% code '/yt/cpp/mapreduce/examples/tutorial/batch_request/main.cpp' lang='c++' %}

### Delivering a table dump to a job as a file

In YTsaurus, you can deliver files to jobs (for example, as was described [earlier](#map-tnode-with-file)). A less popular method is delivering a table dump to a job. This can prove useful when a job requires a map stored in a small (a few gigabytes) table. However, don't use this approach to load large tables: if you have a table that is dozens of gigabytes in size, it won't fit on a single node of the cluster where the jobs are running.

The example is located at [yt/cpp/mapreduce/examples/tutorial/pass_table_as_file](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/pass_table_as_file).

{% code '/yt/cpp/mapreduce/examples/tutorial/pass_table_as_file/main.cpp' lang='c++' %}

### Writing and retrieving job statistics

A running operation gathers a lot of statistics (see the [documentation](https://ytsaurus.tech/docs/en/user-guide/problems/jobstatistics.md)).

Example of a simple Map with statistics collection: [yt/cpp/mapreduce/examples/tutorial/job_statistics](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/job_statistics):

{% code '/yt/cpp/mapreduce/examples/tutorial/job_statistics/main.cpp' lang='c++' %}

### Basic work with dynamic tables

YTsaurus supports [dynamic tables](https://ytsaurus.tech/docs/en/user-guide/dynamic-tables/overview.md). You can perform basic operations with such tables by using the C++ wrapper.

{% note warning "Attention" %}

Unlike the other examples, you will have to take additional steps to run this one:

- By default, users don't have the permissions to create dynamic tables, so you first need to get permissions to create and mount dynamic tables on some cluster.
- When running the example, pass the cluster name and the path to the test table (it must not exist). For more information, see the comments in the program text.

{% endnote %}

The example is located at [yt/cpp/mapreduce/examples/tutorial/dyntable_get_insert](https://github.com/ytsaurus/ytsaurus/tree/main/yt/cpp/mapreduce/examples/tutorial/dyntable_get_insert).

{% code '/yt/cpp/mapreduce/examples/tutorial/dyntable_get_insert/main.cpp' lang='c++' %}
<!-- endsource: en/_includes/api/cpp/examples.md -->