The `clickhouse-local` program enables you to perform fast processing on local files that store tables, without having to deploy and configure clickhouse-server.
The `clickhouse-local` program enables you to perform fast processing on local files that store tables, without having to deploy and configure clickhouse-server.
Программа `clickhouse-local` позволяет выполнять быструю обработку локальных файлов, хранящих таблицы, не прибегая к развертыванию и настройке clickhouse-server ...
The util copies tables data from one cluster to new tables of other (possibly the same) cluster in distributed and fault-tolerant manner.
# clickhouse-copier
Configuration of copying tasks is set in special ZooKeeper node (called the `/description` node).
Копирует данные из таблиц одного кластера в таблицы другого (или этого же) кластера.
A ZooKeeper path to the description node is specified via `--task-path </task/path>` parameter.
So, node `/task/path/description` should contain special XML content describing copying tasks.
Simultaneously many `clickhouse-copier` processes located on any servers could execute the same task.
Можно запустить несколько `clickhouse-copier` для разных серверах для выполнения одного и того же задания. Для синхронизации между процессами используется ZooKeeper.
ZooKeeper node `/task/path/` is used by the processes to coordinate their work.
You must not add additional child nodes to `/task/path/`.
Currently you are responsible for manual launching of all `cluster-copier` processes.
После запуска, `clickhouse-copier`:
You can launch as many processes as you want, whenever and wherever you want.
- Соединяется с ZooKeeper и получает:
Each process try to select the nearest available shard of source cluster and copy some part of data (partition) from it to the whole
- Задания на копирование.
destination cluster (with resharding).
- Состояние заданий на копирование.
Therefore it makes sense to launch cluster-copier processes on the source cluster nodes to reduce the network usage.
- Выполняет задания.
Каждый запущенный процесс выбирает "ближайший" шард исходного кластера и копирует данные в кластер назначения, при необходимости перешардируя их.
Since the workers coordinate their work via ZooKeeper, in addition to `--task-path </task/path>` you have to specify ZooKeeper
`clickhouse-copier` отслеживает изменения в ZooKeeper и применяет их "на лету".
cluster configuration via `--config-file <zookeeper.xml>` parameter. Example of `zookeeper.xml`:
Для снижения сетевого трафика рекомендуем запускать `clickhouse-copier` на том же сервере, где находятся исходные данные.
## Запуск clickhouse-copier
Утилиту следует запускать вручную следующим образом:
-`daemon` - запускает `clickhouse-copier` в режиме демона.
-`config` - путь к файлу `zookeeper.xml` с параметрами соединения с ZooKeeper.
-`task-path` - путь к ноде ZooKeeper. Нода используется для синхронизации между процессами `clickhouse-copier` и для хранения заданий. Задания хранятся в `$task-path/description`.
-`base-dir` - путь к логам и вспомогательным файлам. При запуске `clickhouse-copier` создает в `$base-dir` подкаталоги `clickhouse-copier_YYYYMMHHSS_<PID>`. Если параметр не указан, то каталоги будут создаваться в каталоге, где `clickhouse-copier` был запущен.
## Формат zookeeper.xml
```xml
```xml
<yandex>
<yandex>
...
@@ -30,11 +44,7 @@ cluster configuration via `--config-file <zookeeper.xml>` parameter. Example of
...
@@ -30,11 +44,7 @@ cluster configuration via `--config-file <zookeeper.xml>` parameter. Example of
</yandex>
</yandex>
```
```
When you run `clickhouse-copier --config-file <zookeeper.xml> --task-path </task/path>` the process connects to ZooKeeper cluster, reads tasks config from `/task/path/description` and executes them.
## Конфигурация заданий на копирование
## Format of task config
Here is an example of `/task/path/description` content:
```xml
```xml
<yandex>
<yandex>
...
@@ -103,7 +113,8 @@ Here is an example of `/task/path/description` content:
...
@@ -103,7 +113,8 @@ Here is an example of `/task/path/description` content:
specify partitions that should be copied in <enabled_partitions/>, they should be in quoted format like partition column of
specify partitions that should be copied in <enabled_partitions/>, they should be in quoted format like partition column of
@@ -142,15 +153,4 @@ Here is an example of `/task/path/description` content:
...
@@ -142,15 +153,4 @@ Here is an example of `/task/path/description` content:
</yandex>
</yandex>
```
```
cluster-copier processes watch for `/task/path/description` node update.
`clickhouse-copier` отслеживает изменения `/task/path/description` и применяет их "на лету". Если вы поменяете, например, значение `max_workers`, то количество процессов, выполняющих задания, также изменится.
So, if you modify the config settings or `max_workers` params, they will be updated.
Программа `clickhouse-local` позволяет выполнять быструю обработку локальных файлов, хранящих таблицы, не прибегая к развертыванию и настройке сервера ClickHouse.
Существует несколько утилит ClickHouse, которые представляют из себя отдельные исполняемые файлы:
*[clickhouse-local](clickhouse-local.md#utils-clickhouse-local) - позволяет выполнять SQL-запросы над данными без установки сервера ClickHouse подобно тому, как это делает `awk`.
*[clickhouse-copier](clickhouse-copier.md#utils-clickhouse-copier) - копирует (и перешардирует) данные с одного кластера на другой.
*`clickhouse-local` позволяет выполнять SQL-запросы над данными подобно тому, как это делает `awk`
*`clickhouse-copier` копирует (и перешардирует) неизменяемые данные с одного кластера на другой отказоустойчивым способом.