ClickHouse/docs/en/operations/requirements.md

60 lines
3.2 KiB
Markdown
Raw Normal View History

2020-04-03 13:23:32 +00:00
---
toc_priority: 44
toc_title: Requirements
---
2020-03-20 10:10:48 +00:00
# Requirements {#requirements}
2019-02-04 13:30:28 +00:00
2020-03-20 10:10:48 +00:00
## CPU {#cpu}
2019-02-04 13:30:28 +00:00
2020-03-20 10:10:48 +00:00
For installation from prebuilt deb packages, use a CPU with x86\_64 architecture and support for SSE 4.2 instructions. To run ClickHouse with processors that do not support SSE 4.2 or have AArch64 or PowerPC64LE architecture, you should build ClickHouse from sources.
2019-02-04 13:30:28 +00:00
ClickHouse implements parallel data processing and uses all the hardware resources available. When choosing a processor, take into account that ClickHouse works more efficiently at configurations with a large number of cores but a lower clock rate than at configurations with fewer cores and a higher clock rate. For example, 16 cores with 2600 MHz is preferable to 8 cores with 3600 MHz.
2019-02-04 13:30:28 +00:00
Use of **Turbo Boost** and **hyper-threading** technologies is recommended. It significantly improves performance with a typical load.
2020-03-20 10:10:48 +00:00
## RAM {#ram}
2019-02-04 13:30:28 +00:00
We recommend to use a minimum of 4GB of RAM in order to perform non-trivial queries. The ClickHouse server can run with a much smaller amount of RAM, but it requires memory for processing queries.
2019-02-04 13:30:28 +00:00
The required volume of RAM depends on:
- The complexity of queries.
- The amount of data that is processed in queries.
2019-02-04 13:30:28 +00:00
2020-04-03 13:23:32 +00:00
To calculate the required volume of RAM, you should estimate the size of temporary data for [GROUP BY](../sql_reference/statements/select.md#select-group-by-clause), [DISTINCT](../sql_reference/statements/select.md#select-distinct), [JOIN](../sql_reference/statements/select.md#select-join) and other operations you use.
2019-02-04 13:30:28 +00:00
2020-04-03 13:23:32 +00:00
ClickHouse can use external memory for temporary data. See [GROUP BY in External Memory](../sql_reference/statements/select.md#select-group-by-in-external-memory) for details.
2019-02-04 13:30:28 +00:00
2020-03-20 10:10:48 +00:00
## Swap File {#swap-file}
2019-02-04 13:30:28 +00:00
Disable the swap file for production environments.
2020-03-20 10:10:48 +00:00
## Storage Subsystem {#storage-subsystem}
2019-02-04 13:30:28 +00:00
You need to have 2GB of free disk space to install ClickHouse.
The volume of storage required for your data should be calculated separately. Assessment should include:
- Estimation of the data volume.
2019-02-04 13:30:28 +00:00
You can take a sample of the data and get the average size of a row from it. Then multiply the value by the number of rows you plan to store.
2019-02-04 13:30:28 +00:00
- The data compression coefficient.
2019-02-04 13:30:28 +00:00
To estimate the data compression coefficient, load a sample of your data into ClickHouse and compare the actual size of the data with the size of the table stored. For example, clickstream data is usually compressed by 6-10 times.
2019-02-04 13:30:28 +00:00
To calculate the final volume of data to be stored, apply the compression coefficient to the estimated data volume. If you plan to store data in several replicas, then multiply the estimated volume by the number of replicas.
2019-02-04 13:30:28 +00:00
2020-03-20 10:10:48 +00:00
## Network {#network}
2019-02-04 13:30:28 +00:00
If possible, use networks of 10G or higher class.
2019-02-04 13:30:28 +00:00
The network bandwidth is critical for processing distributed queries with a large amount of intermediate data. In addition, network speed affects replication processes.
2019-02-04 13:30:28 +00:00
2020-03-20 10:10:48 +00:00
## Software {#software}
2019-02-04 13:30:28 +00:00
ClickHouse is developed for the Linux family of operating systems. The recommended Linux distribution is Ubuntu. The `tzdata` package should be installed in the system.
ClickHouse can also work in other operating system families. See details in the [Getting started](../getting_started/index.md) section of the documentation.