Skip to content

Commit 7e9be3d

Browse files
committed
Update 338 docs
1 parent aca4837 commit 7e9be3d

File tree

536 files changed

+539063
-49880
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

536 files changed

+539063
-49880
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
===================
2+
Exchange Properties
3+
===================
4+
5+
Exchanges transfer data between Presto nodes for different stages of
6+
a query. Adjusting these properties may help to resolve inter-node
7+
communication issues or improve network utilization.
8+
9+
``exchange.client-threads``
10+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
11+
12+
* **Type:** ``integer``
13+
* **Minimum value:** ``1``
14+
* **Default value:** ``25``
15+
16+
Number of threads used by exchange clients to fetch data from other Presto
17+
nodes. A higher value can improve performance for large clusters or clusters
18+
with very high concurrency, but excessively high values may cause a drop
19+
in performance due to context switches and additional memory usage.
20+
21+
``exchange.concurrent-request-multiplier``
22+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
23+
24+
* **Type:** ``integer``
25+
* **Minimum value:** ``1``
26+
* **Default value:** ``3``
27+
28+
Multiplier determining the number of concurrent requests relative to
29+
available buffer memory. The maximum number of requests is determined
30+
using a heuristic of the number of clients that can fit into available
31+
buffer space, based on average buffer usage per request times this
32+
multiplier. For example, with an ``exchange.max-buffer-size`` of ``32 MB``
33+
and ``20 MB`` already used and average size per request being ``2MB``,
34+
the maximum number of clients is
35+
``multiplier * ((32MB - 20MB) / 2MB) = multiplier * 6``. Tuning this
36+
value adjusts the heuristic, which may increase concurrency and improve
37+
network utilization.
38+
39+
``exchange.data-integrity-verification``
40+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41+
42+
* **Type:** ``string``
43+
* **Allowed values:** ``NONE``, ``ABORT``, ``RETRY``
44+
* **Default value:** ``ABORT``
45+
46+
Configure the resulting behavior of data integrity issues. By default,
47+
``ABORT`` causes queries to be aborted when data integrity issues are
48+
detected as part of the built-in verification. Setting the property to
49+
``NONE`` disables the verification. ``RETRY`` causes the data exchange to be
50+
repeated when integrity issues are detected.
51+
52+
``exchange.max-buffer-size``
53+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
54+
55+
* **Type:** ``data size``
56+
* **Default value:** ``32MB``
57+
58+
Size of buffer in the exchange client that holds data fetched from other
59+
nodes before it is processed. A larger buffer can increase network
60+
throughput for larger clusters, and thus decrease query processing time,
61+
but reduces the amount of memory available for other usages.
62+
63+
``exchange.max-response-size``
64+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
65+
66+
* **Type:** ``data size``
67+
* **Minimum value:** ``1MB``
68+
* **Default value:** ``16MB``
69+
70+
Maximum size of a response returned from an exchange request. The response
71+
is placed in the exchange client buffer, which is shared across all
72+
concurrent requests for the exchange.
73+
74+
Increasing the value may improve network throughput, if there is high
75+
latency. Decreasing the value may improve query performance for large
76+
clusters as it reduces skew, due to the exchange client buffer holding
77+
responses for more tasks, rather than hold more data from fewer tasks.
78+
79+
``sink.max-buffer-size``
80+
^^^^^^^^^^^^^^^^^^^^^^^^
81+
82+
* **Type:** ``data size``
83+
* **Default value:** ``32MB``
84+
85+
Output buffer size for task data that is waiting to be pulled by upstream
86+
tasks. If the task output is hash partitioned, then the buffer is
87+
shared across all of the partitioned consumers. Increasing this value may
88+
improve network throughput for data transferred between stages, if the
89+
network has high latency, or if there are many nodes in the cluster.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
==================
2+
General Properties
3+
==================
4+
5+
``join-distribution-type``
6+
^^^^^^^^^^^^^^^^^^^^^^^^^^
7+
8+
* **Type:** ``string``
9+
* **Allowed values:** ``AUTOMATIC``, ``PARTITIONED``, ``BROADCAST``
10+
* **Default value:** ``AUTOMATIC``
11+
12+
The type of distributed join to use. When set to ``PARTITIONED``, Presto
13+
uses hash distributed joins. When set to ``BROADCAST``, it broadcasts the
14+
right table to all nodes in the cluster that have data from the left table.
15+
Partitioned joins require redistributing both tables using a hash of the join key.
16+
This can be slower, sometimes substantially, than broadcast joins, but allows much
17+
larger joins. In particular broadcast joins are faster, if the right table is
18+
much smaller than the left. However, broadcast joins require that the tables on the right
19+
side of the join after filtering fit in memory on each node, whereas distributed joins
20+
only need to fit in distributed memory across all nodes. When set to ``AUTOMATIC``,
21+
Presto makes a cost based decision as to which distribution type is optimal.
22+
It considers switching the left and right inputs to the join. In ``AUTOMATIC``
23+
mode, Presto defaults to hash distributed joins if no cost could be computed, such as if
24+
the tables do not have statistics. This can be specified on a per-query basis using
25+
the ``join_distribution_type`` session property.
26+
27+
``redistribute-writes``
28+
^^^^^^^^^^^^^^^^^^^^^^^
29+
30+
* **Type:** ``boolean``
31+
* **Default value:** ``true``
32+
33+
This property enables redistribution of data before writing. This can
34+
eliminate the performance impact of data skew when writing by hashing it
35+
across nodes in the cluster. It can be disabled, when it is known that the
36+
output data set is not skewed, in order to avoid the overhead of hashing and
37+
redistributing all the data across the network. This can be specified
38+
on a per-query basis using the ``redistribute_writes`` session property.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
==================
2+
Logging Properties
3+
==================
4+
5+
``log.path``
6+
^^^^^^^^^^^^
7+
8+
* **Type:** ``string``
9+
* **Default value:** ``var/log/server.log``
10+
11+
The path to the log file used by Presto. The path is relative to the data
12+
directory, configured by the launcher script as detailed in
13+
:ref:`running_presto`.
14+
15+
``log.max-history``
16+
^^^^^^^^^^^^^^^^^^^
17+
18+
* **Type:** ``integer``
19+
* **Default value:** ``30``
20+
21+
The maximum number of general application log files to use, before log
22+
rotation replaces old content.
23+
24+
``log.max-size``
25+
^^^^^^^^^^^^^^^^
26+
* **Type:** ``data size``
27+
* **Default value:** ``100MB``
28+
29+
The maximum file size for the general application log file.
30+
31+
``http-server.log.enabled``
32+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
33+
34+
* **Type:** ``boolean``
35+
* **Default value:** ``true``
36+
37+
Flag to enable or disable logging for the HTTP server.
38+
39+
``http-server.log.compression.enabled``
40+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41+
42+
* **Type:** ``boolean``
43+
* **Default value:** ``true``
44+
45+
Flag to enable or disable compression of the log files of the HTTP server.
46+
47+
``http-server.log.path``
48+
^^^^^^^^^^^^^^^^^^^^^^^^
49+
50+
* **Type:** ``string``
51+
* **Default value:** ``var/log/http-request.log``
52+
53+
The path to the log file used by the HTTP server. The path is relative to
54+
the data directory, configured by the launcher script as detailed in
55+
:ref:`running_presto`.
56+
57+
``http-server.log.max-history``
58+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
59+
60+
* **Type:** ``integer``
61+
* **Default value:** ``15``
62+
63+
The maximum number of log files for the HTTP server to use, before
64+
log rotation replaces old content.
65+
66+
``http-server.log.max-size``
67+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68+
69+
* **Type:** ``data size``
70+
* **Default value:** ``unlimited``
71+
72+
The maximum file size for the log file of the HTTP server.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
============================
2+
Memory Management Properties
3+
============================
4+
5+
``query.max-memory-per-node``
6+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7+
8+
* **Type:** ``data size``
9+
* **Default value:** ``JVM max memory * 0.1``
10+
11+
This is the max amount of user memory a query can use on a worker.
12+
User memory is allocated during execution for things that are directly
13+
attributable to, or controllable by, a user query. For example, memory used
14+
by the hash tables built during execution, memory used during sorting, etc.
15+
When the user memory allocation of a query on any worker hits this limit,
16+
it is killed.
17+
18+
``query.max-total-memory-per-node``
19+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
20+
21+
* **Type:** ``data size``
22+
* **Default value:** ``JVM max memory * 0.3``
23+
24+
This is the max amount of user and system memory a query can use on a worker.
25+
System memory is allocated during execution for things that are not directly
26+
attributable to, or controllable by, a user query. For example, memory allocated
27+
by the readers, writers, network buffers, etc. When the sum of the user and
28+
system memory allocated by a query on any worker hits this limit, it is killed.
29+
The value of ``query.max-total-memory-per-node`` must be greater than
30+
``query.max-memory-per-node``.
31+
32+
``query.max-memory``
33+
^^^^^^^^^^^^^^^^^^^^
34+
35+
* **Type:** ``data size``
36+
* **Default value:** ``20GB``
37+
38+
This is the max amount of user memory a query can use across the entire cluster.
39+
User memory is allocated during execution for things that are directly
40+
attributable to, or controllable by, a user query. For example, memory used
41+
by the hash tables built during execution, memory used during sorting, etc.
42+
When the user memory allocation of a query across all workers hits this limit
43+
it is killed.
44+
45+
``query.max-total-memory``
46+
^^^^^^^^^^^^^^^^^^^^^^^^^^
47+
48+
* **Type:** ``data size``
49+
* **Default value:** ``query.max-memory * 2``
50+
51+
This is the max amount of user and system memory a query can use across the entire cluster.
52+
System memory is allocated during execution for things that are not directly
53+
attributable to, or controllable by, a user query. For example, memory allocated
54+
by the readers, writers, network buffers, etc. When the sum of the user and
55+
system memory allocated by a query across all workers hits this limit it is
56+
killed. The value of ``query.max-total-memory`` must be greater than
57+
``query.max-memory``.
58+
59+
``memory.heap-headroom-per-node``
60+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
61+
62+
* **Type:** ``data size``
63+
* **Default value:** ``JVM max memory * 0.3``
64+
65+
This is the amount of memory set aside as headroom/buffer in the JVM heap
66+
for allocations that are not tracked by Presto.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
=========================
2+
Node Scheduler Properties
3+
=========================
4+
5+
``node-scheduler.max-splits-per-node``
6+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7+
8+
* **Type:** ``integer``
9+
* **Default value:** ``100``
10+
11+
The target value for the total number of splits that can be running for
12+
each worker node.
13+
14+
Using a higher value is recommended, if queries are submitted in large batches
15+
(e.g., running a large group of reports periodically), or for connectors that
16+
produce many splits that complete quickly. Increasing this value may improve
17+
query latency, by ensuring that the workers have enough splits to keep them
18+
fully utilized.
19+
20+
Setting this too high wastes memory and may result in lower performance
21+
due to splits not being balanced across workers. Ideally, it should be set
22+
such that there is always at least one split waiting to be processed, but
23+
not higher.
24+
25+
``node-scheduler.max-pending-splits-per-task``
26+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27+
28+
* **Type:** ``integer``
29+
* **Default value:** ``10``
30+
31+
The number of outstanding splits that can be queued for each worker node
32+
for a single stage of a query, even when the node is already at the limit for
33+
total number of splits. Allowing a minimum number of splits per stage is
34+
required to prevent starvation and deadlocks.
35+
36+
This value must be smaller than ``node-scheduler.max-splits-per-node``,
37+
is usually increased for the same reasons, and has similar drawbacks
38+
if set too high.
39+
40+
``node-scheduler.min-candidates``
41+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42+
43+
* **Type:** ``integer``
44+
* **Minimum value:** ``1``
45+
* **Default value:** ``10``
46+
47+
The minimum number of candidate nodes that are evaluated by the
48+
node scheduler when choosing the target node for a split. Setting
49+
this value too low may prevent splits from being properly balanced
50+
across all worker nodes. Setting it too high may increase query
51+
latency and increase CPU usage on the coordinator.
52+
53+
``node-scheduler.policy``
54+
^^^^^^^^^^^^^^^^^^^^^^^^^
55+
56+
* **Type:** ``string``
57+
* **Allowed values:** ``uniform``, ``topology``
58+
* **Default value:** ``uniform``
59+
60+
Sets the node scheduler policy to use when scheduling splits. ``uniform`` attempts
61+
to schedule splits on the host where the data is located, while maintaining a uniform
62+
distribution across all hosts. ``topology`` tries to schedule splits according to
63+
the topology distance between nodes and splits. It is recommended to use ``uniform``
64+
for clusters where distributed storage runs on the same nodes as Presto workers.
65+
66+
``node-scheduler.network-topology.segments``
67+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68+
69+
* **Type:** ``string``
70+
* **Default value:** ``machine``
71+
72+
A comma-separated string describing the meaning of each segment of a network location.
73+
For example, setting ``region,rack,machine`` means a network location contains three segments.
74+
75+
``node-scheduler.network-topology.type``
76+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
77+
78+
* **Type:** ``string``
79+
* **Allowed values:** ``flat``, ``file``
80+
* **Default value:** ``flat``
81+
82+
Sets the network topology type. To use this option, ``node-scheduler.policy`` must be set to
83+
``topology``. ``flat`` has only one segment, with one value for each machine.
84+
``file`` loads the topology from a file as described below.
85+
86+
``node-scheduler.network-topology.file``
87+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88+
89+
* **Type:** ``string``
90+
91+
Load the network topology from a file. To use this option, ``node-scheduler.network-topology.type``
92+
must be set to ``file``. Each line contains a mapping between a host name and a
93+
network location, separated by whitespace. Network location must begin with a leading
94+
``/`` and segments are separated by a ``/``.
95+
96+
.. code-block:: none
97+
98+
192.168.0.1 /region1/rack1/machine1
99+
192.168.0.2 /region1/rack1/machine2
100+
hdfs01.example.com /region2/rack2/machine3
101+
102+
``node-scheduler.network-topology.refresh-period``
103+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
104+
105+
* **Type:** ``duration``
106+
* **Minimum value:** ``1ms``
107+
* **Default value:** ``5m``
108+
109+
Controls how often the network topology file is reloaded. To use this option,
110+
``node-scheduler.network-topology.type`` must be set to ``file``.

0 commit comments

Comments
 (0)