
Pavel
09.04.2017
07:12:26
sudo service clickhouse-server restart
Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
Stop clickhouse-server service:
DONE
Start clickhouse-server service: Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
No directory, logging in with HOME=/
DONE
?
работает вроде ОК, но ошибки пугают :)

prll
09.04.2017
09:58:31
пару месяцев назад меняли директории с /opt/clickhouse на /var/lib/clickhouse/ , желательно проверить где данные на самом деле и что в конфиге осталось

Google

Andrey
09.04.2017
10:47:40
чтобы распределять нагрузку
Да, вы просто строите clickhouse кластер и при расчётах используются ресурсы всех серверов. (При правильном градировании конечно)

Vladislav
09.04.2017
10:55:14
Вы var отдельно монтируете?

nikoinlove
09.04.2017
11:00:01
А почему mysql в варлиб тебя не интересует?)

Vladislav
09.04.2017
11:02:29
Потому что это mysql

Maksim
09.04.2017
11:08:04

Andrey
09.04.2017
11:11:55

Maksim
09.04.2017
11:12:32
ок в понедельник буду разбираться. спасибо)

Mike
09.04.2017
12:12:22
всем привет!
а есть способ в запросе в колонке вывести накопительный итог?
Без зависимых подзапросов не понятно, как это сделать =(

Peter
09.04.2017
12:54:35


Alexey
09.04.2017
13:20:35
всем привет!
а есть способ в запросе в колонке вывести накопительный итог?
Есть две секретные функции:
finalizeAggregation:
/** Принимает состояние агрегатной функции. Возвращает результат агрегации.
*/
runningAccumulate:
/** Весьма необычная функция.
* Принимает состояние агрегатной функции (например runningAccumulate(uniqState(UserID))),
* и для каждой строки блока, возвращает результат агрегатной функции по объединению состояний
* от всех предыдущих строк блока и текущей строки.
*
* То есть, функция зависит от разбиения данных на блоки и от порядка строк в блоке.
*/
Пример использования:
:) SELECT EventDate, finalizeAggregation(state), runningAccumulate(state) FROM (SELECT EventDate, uniqState(UserID) AS state FROM test.hits GROUP BY EventDate ORDER BY EventDate)
SELECT
EventDate,
finalizeAggregation(state),
runningAccumulate(state)
FROM
(
SELECT
EventDate,
uniqState(UserID) AS state
FROM test.hits
GROUP BY EventDate
ORDER BY EventDate ASC
)
┌──EventDate─┬─finalizeAggregation(state)─┬─runningAccumulate(state)─┐
│ 2014-03-17 │ 36613 │ 36613 │
│ 2014-03-18 │ 36531 │ 54710 │
│ 2014-03-19 │ 36940 │ 69953 │
│ 2014-03-20 │ 36462 │ 83923 │
│ 2014-03-21 │ 35447 │ 96823 │
│ 2014-03-22 │ 31555 │ 108564 │
│ 2014-03-23 │ 31200 │ 119494 │
└────────────┴────────────────────────────┴──────────────────────────┘


f1yegor
09.04.2017
13:21:44
Добавить а reference? ^

Google

Mike
09.04.2017
13:22:10
> функция зависит от разбиения данных на блоки и от порядка строк в блоке.
а вот это что значит? :) если я сделаю order by date, то всё будет норм?

Alexey
09.04.2017
13:24:02

Mike
09.04.2017
13:26:14
Алексей, большое спасибо за ответ!
Один вопрос остался — большой это сколько? Как мне узнать, что вот сейчас конкретно он даст неверные результаты? Эмпирически?

Alexey
09.04.2017
13:31:06
Сейчас это не гарантируется. Обычно размер блока - max_block_size. Но в некоторых запросах блоки после ORDER BY получаются маленькими.

Mike
09.04.2017
13:31:50
Понял, еще раз спасибо :)

prll
09.04.2017
13:54:47
А можно узнать зачем?
есть правила расположения файлов на файловой системе, например man hier и лучше им соответствовать.

Vladislav
09.04.2017
13:55:46

Igor
09.04.2017
13:57:05

Vladislav
09.04.2017
13:57:49
Вроде как речь шла про сам сервер, а не файлы БД
БД вообще предпочитаю в отдельный маунт

Igor
09.04.2017
13:59:01
так бинарник вообще в /usr/bin ставится ж, не?

prll
09.04.2017
14:01:38
/var/lib/mysql /var/lib/postgresql /var/lib/mongodb - и было бы странно сочинять другое место
хотя в freebsd напрмиер все как всегда более правильно и
называется /var/db/

f1yegor
09.04.2017
18:27:06
в devzen упомянули КХ в связи с этос статьей. https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/. @milovidov_an хотел бы поучаствовать в одном из следующих эпизодов?

Mike
09.04.2017
18:48:06
Так хорошо, как может быть в заказной статье :) (|irony|)

Vladislav
09.04.2017
19:16:11
Очень похоже, да ?
Я все еще жду сравнение с последними версиями Vertica

Maksim
09.04.2017
20:15:41
Скажите пожалуйста есть ли другой способ выгрузить данные в кх без cat, заканчивается память т.к. при cat все данные в памяти оперативной хранятся и не получается выгрузить дамп больше 100 млн записей ((
cat table_data.tsv | clickhouse-client —database=statistics —query="INSERT INTO table FORMAT TabSeparated";

Google

Let Eat
09.04.2017
20:17:30
это точно не изза cat
clickhouse-client —database=statistics —query="INSERT INTO table FORMAT TabSeparated" < table_data.tsv
вот так без cat, но эффект будет тот же

Maksim
09.04.2017
20:27:21
tcmalloc: large alloc 1073750016 bytes == 0x48a72000 @
tcmalloc: large alloc 2147491840 bytes == 0x88a74000 @
tcmalloc: large alloc 4294975488 bytes == (nil) @
std::exception: std::bad_alloc
а что бы это могло значить?

Ivan
09.04.2017
20:41:05
можно сплитом пройтись по файлу, разбить по строкам и загружать уже несколько файлов в кх через кат

Let Eat
09.04.2017
20:52:56

Alexey
09.04.2017
20:54:12
В дампе много длинных строк. Попробуйте уменьшить max_insert_block_size.
Например, так: clickhouse-client —max_insert_block_size=65536 ...

f1yegor
09.04.2017
20:55:50
"будет весело" - говорили они

Alexey
09.04.2017
20:59:15

Maksim
09.04.2017
21:14:14

Alexey
09.04.2017
21:16:57
А насколько длинные?
ClickHouse не любит очень длинные строки. Работает, но требуется уменьшать всевозможные размеры пачек для обработки.

Maksim
09.04.2017
21:17:52
то есть вчера этот файл загружался а сегодня с установленным паролем в sha256 уже не грузится. может пароль тут непричем но ничего больше не менял

Alexey
09.04.2017
21:18:49
Пароль не при чём.

Let Eat
09.04.2017
21:19:15

Иван
09.04.2017
21:19:56

Google

Maksim
09.04.2017
21:20:30


Alexey
09.04.2017
21:21:24
Разница в порядке указания столбцов в первичном ключе есть и она очень важна. Данные в кусках сортируются лексикографически по первичному ключу. То есть, если ключ (a, b) - данные будут отсортированы по столбцу a. А для каждого множества строк с одинаковым значением столбца a - по столбцу b.
Если вы указали условие (равенство, неравенство, IN, комбинация логических связок от этих условий) на столбец a в WHERE - индекс позволит выбирать диапазоны в данных.
Если вы не указали условие на a, но указали только условие на b - индекс всё-равно может работать, но хуже и лишь при некоторых условиях - если в данных встречаются длинные диапазоны с одинаковыми значениями a - тогда в таких диапазонах ClickHouse сможет выбрать поддипазоны с нужными значениями b и пропустить остальные.
https://medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324


Maksim
09.04.2017
21:25:58
это нормально?
столько демонов

Alexey
09.04.2017
21:26:55
Это один процесс, но разные потоки. Это нормально.

Иван
09.04.2017
21:27:05

Maksim
09.04.2017
21:27:55
я делал дампы из mysql по 30 млн записей и их грузил вчера

Alexey
09.04.2017
21:29:37
Судя по этому выводу, всё Ок. В среднем строки примерно 100 байт, что немного.
Тем не менее, попробуйте ещё уменьшить max_insert_block_size в clickhouse-client.

Maksim
09.04.2017
21:32:39

Alexey
09.04.2017
21:33:10
Экспериментируйте. Возможно, проблема не в этом.

Maksim
09.04.2017
21:47:37
уменьшение этой опции не помогло. странно(

Alexey
09.04.2017
21:48:09
Разделите файл на куски и найдите минимальный кусок, для которого ошибка проявляется.

Maksim
09.04.2017
21:57:25
по htop вижу что равномерно память растет до 4 гигов и просто падает exception что памяти не хватает. как можно обойти это ограничение? не выгружать весь файл в память а как-то потоков писать из файла?

Google

Let Eat
09.04.2017
22:15:04
если вгрузить на один раз и подождать нестрашно, то может своп создать попробовать

f1yegor
09.04.2017
22:18:50

nikoinlove
09.04.2017
22:27:09
на и386:)

Alexey
09.04.2017
23:31:56

Maksim
10.04.2017
06:58:26

Vladimir
10.04.2017
11:22:45
Добрый день! А есть ли в ClickHouse какие-либо ограничения на размер массивов или строк при INSERT-е в формате JsonEachRow?
Я просто заливаю json, который гарантированно корректный, но ClickHouse ругается на "Code: 26, e.displayText() = DB::Exception: Cannot parse JSON string: expected opening quote: (at row 1), e.what() = DB::Exception", (row может быть произвольный)
Возможно, нельзя заливать массивы из одних только пустых строк или вроде того...

Felixoid
10.04.2017
11:35:36
У нас в тестинге достаточно часто вырубаются машины по питанию и появилась мысль перманентно (например, в /etc/default/clickhouse) выставлять флажок flags/force_restore_data, чтобы в случае падения машина без вмешательства эксплуатации удаляла из ZK информацию о потеряных кусках
Но возникли также разумные опасения, к чему может привезти подобная "оптимизация", @milovidov_an? Разумно ли так делать?

Vitaliy
10.04.2017
12:37:39
Есть вопросик по zookeeper
у меня есть 3 сервера в 2-х дц - т.е. 3 шарда на 1 дц
как он себя поведет, если упадет связь между дц, или упадет какая-то нода?

Alex
10.04.2017
12:40:17
а ZooKeeper так же расположен - три ноды в 2 ДЦ?

Vitaliy
10.04.2017
12:40:24
да
по три ноды на дц

Alex
10.04.2017
12:41:54
То есть всего 6 нод zookeeper-а, объединенных в 1 кластер? Или 2 кластера?

Vitaliy
10.04.2017
12:46:51
да, один кластер

Alexey
10.04.2017
12:52:55
а как вы это согласуете с "As mentioned in the ZooKeeper Getting Started Guide , a minimum of three servers are required for a fault tolerant clustered setup, and it is strongly recommended that you have an odd number of servers."

Alex
10.04.2017
12:53:43
Чётное число нод делать смысла мало - например и конфигурация из 5 нод, и конфигурация из 6 переживают падение 2 нод, но не переживают падение 3-х. Соответственно в вашем случае при недоступности одного ДЦ или потери связности оба ДЦ уйдут в readonly. Если вы назначите один из ДЦ "главным" и разместите большинство нод zookeeper-а там, то при выпадении "запасного" ДЦ, основной будет доступен.
Полностью симметричной конфигурации, чтобы при выпадении одного ДЦ, второй продолжал работать, сделать не получится.

Maksim
10.04.2017
12:54:28
Скажите пожалуйста можно ли как-то включить компрессию при дампе через clickhouse-client? опции такой нету, а нужно локально выгружить данные в native .. ?

Vitaliy
10.04.2017
12:56:00

Alex
10.04.2017
13:00:12