
M
24.05.2018
14:08:05
только версию нужно будет менять

Kukuzapa
24.05.2018
14:08:27
Добрый день, а как бд перенести на другой сервер?

Mike
24.05.2018
14:10:12
только версию нужно будет менять
Версия по доке optional?
The last optional parameter for the table engine is the version column. When merging, it reduces all rows with the same primary key value to just one row. If the version column is specified, it leaves the row with the highest version; otherwise, it leaves the last row.
А в жизни — нет?

Google

Mike
24.05.2018
14:10:53

Wolf
24.05.2018
14:14:34

Daniel
24.05.2018
14:22:01

Wolf
24.05.2018
14:22:54
ну это очевидно

Daniel
24.05.2018
14:28:42
ну это очевидно
откуда это очевидно? по метрикам документация вообще голая. скиньте почитать, если где-то расписано

Wolf
24.05.2018
14:30:33
Ну это очевидно из того как работают реплики
Шарды как таковые физически то отсутствуют

Kirill
24.05.2018
14:55:17

Wolf
24.05.2018
15:04:35
Совсем не верно , у реплики нет понятия шарда почитайте как оно работает в доке, у меня может быть прекрасно в одном как вы говорите шарде две реплицируемых таблицы и два лидера а шард то один
Реплицируемые таблицы работают через зукипер а там нет никаких записей про шарды как в конфиге кх

Stas
24.05.2018
15:12:15
а как указать формат выдачи при общении через http api? конкретно в CSV вывод интересует

Kirill
24.05.2018
15:17:24
Короче, они там завязаны на путь в ZK, но путь зависит от шарда, если не сделано что-то специально.

Google

Wolf
24.05.2018
15:19:23

Kirill
24.05.2018
15:20:31


Алексей
24.05.2018
15:30:13
Attaching to services_backend-clickhouse_1
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/config.d/docker_related_config.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/config.d/dictionaries.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/users.d/users.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_upload_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_affiliate-creative_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_creative_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_lead_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_campaign-brand_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_affiliate_dictionary.xml...
backend-clickhouse_1 | Updating config file: /etc/clickhouse-server/dictionaries.d/mysql_brand_dictionary.xml...
backend-clickhouse_1 | Starting ClickHouse server, version: 1.0.1-7050adf on node f17c80a8dd72
backend-clickhouse_1 | Include not found: clickhouse_remote_servers
backend-clickhouse_1 | Include not found: clickhouse_compression
backend-clickhouse_1 | Logging trace to /var/log/clickhouse-server/clickhouse-server.log
backend-clickhouse_1 | Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
services_backend-clickhouse_1 exited with code 70docker-compose
win10
timezone - прописал


Wolf
24.05.2018
15:32:43

prll
24.05.2018
15:37:40

Алексей
24.05.2018
15:39:21

prll
24.05.2018
15:39:59
было бы странно если бы запустилось

Алексей
24.05.2018
15:40:33
Хорошо, а как запустить? Я не очень разбираюсь в тонкостях.

prll
24.05.2018
15:41:03
по документации, из ubuntu или любой другой нормальной операционной системы

Алексей
24.05.2018
15:41:40
Те на win не пойдет?

prll
24.05.2018
15:42:47
возможно с использованием магических бубнов что-то получится, но как оно будет работать - никто не знает

Алексей
24.05.2018
15:43:34
Спасибо. Жаль.

Denis
24.05.2018
15:59:29

Daniel
24.05.2018
16:16:27

Anton
24.05.2018
16:22:01
Всем привет! Есть кластер с N шардами. На нем гоняются запросы к некоторой distributed таблице.
Есть ли способ посмотреть все выполняющиеся процессы (system.processes) на кластере одним запросом? Или нужно обходить все шарды по очереди и на каждом смотреть system.processes? (Ну и более общий вопрос, можно ли к системным таблицам обращаться поверх всего кластера, аля distributed)

Kirill
24.05.2018
16:44:35

Anton
24.05.2018
16:46:02
Понял, спасибо
А что насчет KILL QUERY в таком случае? можно сделать как-то поверх кластера?

Kirill
24.05.2018
16:46:07

Google

Anton
24.05.2018
16:47:04
Хотя вряд ли получится с одной машины убить процесс на другой..

Kirill
24.05.2018
16:48:36

Anton
24.05.2018
16:53:39
понятно, хотелось сделать более автоматическое решение)
но спасибо за помощь

Daniel
24.05.2018
16:58:15
В секции <enabled_partitions> для clickhouse-copier есть предупреждение
NOTE: In spite of this section is optional (if it is not specified, all partitions will be copied),
it is strictly recommended to specify them explicitly.
If you already have some ready paritions on destination cluster they
will be removed at the start of the copying since they will be interpeted
as unfinished data from the previous copying!!!
это получается, если я добавляю шард в существующий кластер и делаю задачу копирования партиций с решардингом из кластера в него же самого, на уже существующих серверах удалятся партиции? но как тогда они будут скопированы и перешардированы? звучит абсурдно)


Ilya
24.05.2018
19:37:07
Коллеги, добрый вечер. Такой вопрос: раскатали ClickHouse в своем Kubernetes (через HELM+StatefulSet) в конфигурации "6 шардов по одной реплике". На всех шардах один и тот-же конфиг, т.е. каждый шард знает все про весь кластер. Запросы соответственно идут через headless Service произвольно на любой шард. Все работает замечательно и быстро. Но есть проблема когда один из контейнеров падает и перезапускается — у него меняется внутренний IP и из кластера он выпадает совсем, потому что все остальные шарды однажды отрезолвили его IP и он для них теряется. Из документации:
В случае указания домена, при старте сервера делается DNS запрос, и результат запоминается на всё время работы сервера. Если DNS запрос неуспешен, то сервер не запускается. Если вы изменяете DNS-запись, перезапустите сервер.
однако есть и такое:
Как видно, движок Distributed требует прописывания кластера в конфигурационный файл; кластера из конфигурационного файла обновляются налету, без перезапуска сервера.
Источник: https://clickhouse.yandex/docs/ru/table_engines/distributed/
Вижу пока только дав решения: 1) поднять центральный сервер, хранить на нем одном конфиг с указанием шардов и ходить в кластер строго через него; 2) каким-то хуком после перезапуска контейнера прописывать новый IP на всех шардах в конфиги, которые якобы подхатятся налету.
Подскажите, возможно я что-то упускаю или действительно авторезолв DNS имен шардов и реплик из настроек такая проблема?
UPDATE: случайно нагуглил настройку disable_internal_dns_cache (https://github.com/yandex/ClickHouse/blob/master/dbms/src/Server/config.xml#L367) и запрос SYSTEM DROP DNS CACHE. Буду их пробовать. Но вообще, в документации про них ни слова ?


Daniel
24.05.2018
20:16:38


Kirill
24.05.2018
20:29:08
Коллеги, добрый вечер. Такой вопрос: раскатали ClickHouse в своем Kubernetes (через HELM+StatefulSet) в конфигурации "6 шардов по одной реплике". На всех шардах один и тот-же конфиг, т.е. каждый шард знает все про весь кластер. Запросы соответственно идут через headless Service произвольно на любой шард. Все работает замечательно и быстро. Но есть проблема когда один из контейнеров падает и перезапускается — у него меняется внутренний IP и из кластера он выпадает совсем, потому что все остальные шарды однажды отрезолвили его IP и он для них теряется. Из документации:
В случае указания домена, при старте сервера делается DNS запрос, и результат запоминается на всё время работы сервера. Если DNS запрос неуспешен, то сервер не запускается. Если вы изменяете DNS-запись, перезапустите сервер.
однако есть и такое:
Как видно, движок Distributed требует прописывания кластера в конфигурационный файл; кластера из конфигурационного файла обновляются налету, без перезапуска сервера.
Источник: https://clickhouse.yandex/docs/ru/table_engines/distributed/
Вижу пока только дав решения: 1) поднять центральный сервер, хранить на нем одном конфиг с указанием шардов и ходить в кластер строго через него; 2) каким-то хуком после перезапуска контейнера прописывать новый IP на всех шардах в конфиги, которые якобы подхатятся налету.
Подскажите, возможно я что-то упускаю или действительно авторезолв DNS имен шардов и реплик из настроек такая проблема?
У меня вопрос, скажем так, собираю некую статистику по использованию КХ не на железе: почему Kubernetes, насколько это принципиально? Почему не поднять кластер в LXC/LXD? Если будет КХ с таким же уровнем автоматизации и управления как, скажем, CockroachDB готов ли был ваш проект использовать его при условии что он (бай дизайн) обратно несовместим с ванильным КХ?


Andrew
24.05.2018
20:31:50
Привет
Скажите, а есть в планах развитие MATERIALIZED VIEW?
Сейчас при инсерте в родительскую таблицу view пересчитывается только за новую пачку. Я бы хотел использовать view для аля-оконных функций, и хорошо бы чтобы view полностью бы пересчитывался (всю таблицу) при любом инсерте?
Это вообще частый кейс, кому-то кроме меня это бывало нужно?

Kirill
24.05.2018
20:36:22
Просто, вся таблица может пересчитываться сильно долго, я, если честно, незнаю кому кроме вас нужно на каждый insert это делать )

Александр
24.05.2018
20:38:58

Andrew
24.05.2018
20:41:32
боюсь что *MergeTree мне не очень подойдут, потому что для одного класса нужны сырые данные (до агрегации), а для другого нужны агрегированные
Если точнее, то аппенды ежедневные. Таблицы неогромные, помещаются на 1-2 крупные машины. Для каждого пользователя пишется id'шник очередной наливки. И иногда нужно взять все записи с максимальным айдишником заливки для пользователя: причем заранее неизвестно какой максимальный, и для разных пользователей он разный. А иногда нужны конкретные айдишники (непоследние)
Планируем использовать массивы и лямбды, но хотели материализовывать результат

Александр
24.05.2018
20:41:55
Просто при поступлении новой пачки данных по конкретному юзеру переагрегировали данные и складывали в ReplacingMergeTree

Kirill
24.05.2018
20:42:44
PostgreSQL начал перенимать фичи ClickHouse и теперь в 11-й версии из psql можно выходить не только по \q https://www.postgresql.org/about/news/1855/

Александр
24.05.2018
20:42:47
А задача была такая, нужно было с учетом определенной логики бить поток эвентов на сессии с таймаутом в 30 минут

Andrew
24.05.2018
20:43:52
А, ну да, у нас чуть другой кейс: сессия, которая была раньше, не имеет ценности и может просто удалиться, когда приходит апдейт.

Google

Александр
24.05.2018
20:45:39
Сейчас есть некоторые неудобные моменты в виде жирных nested колонок в replacing merge tree таблицах, но есть план как это можно это обойти. Нужен POC для начала ) Есть подозрение, что 900 партиций для КХ прочитать это жирно, учитывая, что в каждой может быть дофига кусков.

Andrew
24.05.2018
20:55:10
ну тем не менее меня не покидает надежда, что это можно сделать внутри CH, а не умным препроцессингом снаружи)

Stas
24.05.2018
22:01:17

Вячеслав
25.05.2018
05:17:30
Привет. Подскажите пожалуйста на что влияет второй параметр ("имя реплики") при создании таблицы с движком ReplicatedMergeTree?

Victor
25.05.2018
05:27:38
Друзья, смежный вопрос, на clickhouse.yandex, в блоке When NOT to use ClickHouse, написано: Blob or document storage
А чтоб такое применить для такой задачи?
Документы однотипные XML, сжиматься должны прекраснейшим образом, если "поколоночно".

Wolf
25.05.2018
05:33:51

Kirill
25.05.2018
05:48:53

Вячеслав
25.05.2018
05:52:03
спасибо


Kirill
25.05.2018
06:28:30
мне бы тоже не помешало это....
Возможно вы что-то делаете не так, есть сырые данные, для остального можно использовать State, например:
CREATE TABLE RawData(
Date Date
, UserID Int64
, Price Int64
, CreatedAt DateTime
) Engine MergeTree PARTITION BY Date ORDER BY Date;
CREATE MATERIALIZED VIEW MV ENGINE = AggregatingMergeTree PARTITION BY Date ORDER BY (Date, UserID)
AS
SELECT
Date
, UserID
, sumState(Price) AS SumPrice
, maxState(CreatedAt) AS MaxCreatedAt
FROM RawData
GROUP BY Date, UserID;
INSERT INTO RawData VALUES
('2018-01-01', 1, 42, '2018-01-01 21:00:00')
, ('2018-01-01', 1, 42, '2018-01-01 22:00:00')
, ('2018-02-01', 1, 42, '2018-02-01 21:00:00')
, ('2018-02-01', 1, 42, '2018-02-01 22:00:00');
SELECT
Date
, UserID
, sumMerge(SumPrice) AS Price
, maxMerge(MaxCreatedAt) AS LastAction
FROM MV
GROUP BY Date, UserID;
┌───────Date─┬─UserID─┬─Price─┬──────────LastAction─┐
│ 2018-02-01 │ 1 │ 84 │ 2018-02-01 22:00:00 │
│ 2018-01-01 │ 1 │ 84 │ 2018-01-01 22:00:00 │
└────────────┴────────┴───────┴─────────────────────┘
2 rows in set. Elapsed: 0.005 sec.


Stas
25.05.2018
06:57:17
Возможно вы что-то делаете не так, есть сырые данные, для остального можно использовать State, например:
CREATE TABLE RawData(
Date Date
, UserID Int64
, Price Int64
, CreatedAt DateTime
) Engine MergeTree PARTITION BY Date ORDER BY Date;
CREATE MATERIALIZED VIEW MV ENGINE = AggregatingMergeTree PARTITION BY Date ORDER BY (Date, UserID)
AS
SELECT
Date
, UserID
, sumState(Price) AS SumPrice
, maxState(CreatedAt) AS MaxCreatedAt
FROM RawData
GROUP BY Date, UserID;
INSERT INTO RawData VALUES
('2018-01-01', 1, 42, '2018-01-01 21:00:00')
, ('2018-01-01', 1, 42, '2018-01-01 22:00:00')
, ('2018-02-01', 1, 42, '2018-02-01 21:00:00')
, ('2018-02-01', 1, 42, '2018-02-01 22:00:00');
SELECT
Date
, UserID
, sumMerge(SumPrice) AS Price
, maxMerge(MaxCreatedAt) AS LastAction
FROM MV
GROUP BY Date, UserID;
┌───────Date─┬─UserID─┬─Price─┬──────────LastAction─┐
│ 2018-02-01 │ 1 │ 84 │ 2018-02-01 22:00:00 │
│ 2018-01-01 │ 1 │ 84 │ 2018-01-01 22:00:00 │
└────────────┴────────┴───────┴─────────────────────┘
2 rows in set. Elapsed: 0.005 sec.
Я транспонирую данные и за один insert мне приходят только кусок данных для транспонирования, я не могу запустить расчеты ранее чем наберутся все данные для транспонирования. Если есть идея как можно это победить то было бы круто :)


Kirill
25.05.2018
06:58:59
Конечно есть - не использовать MV, дождаться пока все данные придут и посчитать их

Stas
25.05.2018
07:00:19

Гурам
25.05.2018
07:55:43
Коллеги, добрый день!
Ситуация следующая: в случае перезапуска Clickhouse и в случае если в кликхаусе находится большое кол-во таблиц, то перезапуск происходит очень долго. При запуске клик "перечитывает" все таблицы http://joxi.ru/LmGJ53DTe4dYGr и соответственно подключится к нему нет возможности ("Code: 210. DB::NetException: Connection refused: (localhost:9000, 127.0.0.1)"). Есть ли варианты более "быстрого запуска"?
И второй вопрос, после выполнения нескольких сложных запросов, клик бывает начинает сильно "тормозить", при этом ресурсов сервера хватает, и далее те запросы которые выполнялись за доли секунда начинают выполнятся за 5-10 сек, в чем может быть проблема (в какую сторону копать)?
Спасибо!

Wolf
25.05.2018
08:21:46
Первое решается репликами и дистрибьютед таблицей))

Гурам
25.05.2018
08:30:06
Спасибо!

Yuran
25.05.2018
08:30:30

Гурам
25.05.2018
08:34:08

antuan
25.05.2018
08:34:49
Сурово
Простите, не удержался

Google

Alex
25.05.2018
08:35:15

Yuran
25.05.2018
08:36:17
У нас кликхаус не особо радуется, когда на сервер приходится (в разные MergeTree таблицы) вставка чаще 10-20 раз в секунду

Alex
25.05.2018
08:38:04

Diomid
25.05.2018
08:38:11

Yuran
25.05.2018
08:38:31

Wolf
25.05.2018
08:39:18

Yuran
25.05.2018
08:40:41

Гурам
25.05.2018
08:42:41

Alex
25.05.2018
08:47:57

Kirill
25.05.2018
08:49:42
"и эти люди обвиняют меня в фашизме" (c)
Если у вас много таблиц, возможно вы что-то делаете не так. Добавлением распределенных таблиц/реплик эту ситуацию не решить
Давайте так: зачем вам столько, какая задача?

Гурам
25.05.2018
08:54:49
Есть такая необходимость

Kirill
25.05.2018
08:59:07

Kukuzapa
25.05.2018
09:58:44
А дамп бд в кликхаузе есть?

Diomid
25.05.2018
10:02:08

Kukuzapa
25.05.2018
10:11:18

Diomid
25.05.2018
10:12:20