
Kirill
11.07.2018
04:07:47
Т.е. они влияют косвено

Tima
11.07.2018
05:34:29


Максим
11.07.2018
05:39:01
дайте CREATE TABLE всех таблиц и представлений, тогда будет понятней
CREATE TABLE log.AggregateEventsLog (
SysRowDate Date,
SysRowKey FixedString(36),
EntityID FixedString(36)
...
) ENGINE = Distributed(central, 'log', 'EventsLog')
CREATE TABLE log.EventsLog (
SysRowDate Date,
SysRowKey FixedString(36),
EntityID FixedString(36),
...
) ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/EventsLog',
'{replica}',
SysRowDate,
(EntityID, SysRowKey),
8192
)

Google

Eldar
11.07.2018
07:05:44
Товарищи, нигде в документации не нашел информацию о том могут ли в репликами быть разные версии кликхауса? Например такой кейс возможен при обновлении

Wolf
11.07.2018
07:12:28
вроде в докее было написано что не могут
насколько помню раньше точно не могли
и это на мой взгляд правильно

Michal
11.07.2018
07:12:58

Denis
11.07.2018
07:13:04
а как обновлять кластер тогда? весь разом? это было бы странно

Wolf
11.07.2018
07:13:48
обновляем по очереди проблем нет

Michal
11.07.2018
07:14:48

Wolf
11.07.2018
07:16:13
ну реально даже если репликация не работаеет на время обновления данные подтянутся как только оно закончится
а это реально быстрый процесс

Michal
11.07.2018
07:21:06


Андрей
11.07.2018
07:21:55
Всем привет, может сталкивался кто-то, добавлял табличку ReplicatedMergeTree на одной из нод, таббикс повис, а после рестарта стали валиться ошибки вида
2018.07.11 09:36:57.253583 [ 1 ] <Warning> ZooKeeper: Error on attempt 0: connection loss. Retry
2018.07.11 09:37:07.254277 [ 1 ] <Warning> ZooKeeper: Error on attempt 1: connection loss. Retry
2018.07.11 09:37:17.257471 [ 1 ] <Warning> ZooKeeper: Error on attempt 2: connection loss. Retry
2018.07.11 09:37:17.259287 [ 1 ] <Error> Application: zkutil::KeeperException: connection loss, path: /clickhouse
После это CH падает.

Sergei
11.07.2018
07:22:41

Google

Wolf
11.07.2018
07:24:06

Андрей
11.07.2018
07:24:48

Wolf
11.07.2018
07:27:57
ну проверьте с нее коннект до зукипера через телнет

Michal
11.07.2018
07:32:31
Блин, опяь хаки :(
Было бы круто если б можно было параметром взять лок на исходную таблицу
Не знаю какой там юзкейс у вас, но если представить себе что таблица имеет размер в несколько терабайт и данные в неё валятся со скоростью сотен тысяч строк в секунду, то идея "лока на запись" в эту таблицу пока инициализируется матвью (а оно при большой исходной таблице может часами инициализироваться) - выглядит так себе. Это можно сделать без локов, но задача не очень простая. Workaround существует и довольно тривиален, поэтому я так понимаю эта задача не приоритетна. Если вы считаете иначе - код Кликхауса открыт, пулл-реквесты принимаются :)

Denis
11.07.2018
07:34:02
достаточно ведь лочить мерджи, а не запись в таблицу. тогда можно будет точно знать, из каких партов осталось докинуть данные
мерджи и создание новых партов*
всё валить в один новый парт. вью проинициализировать из старых + текущих. потом снять лок на парты. всё.

Michal
11.07.2018
07:35:28

Sergei
11.07.2018
07:35:39

Denis
11.07.2018
07:38:16

Sergei
11.07.2018
07:38:43
Аналогичная проблема с крестами :D

Michal
11.07.2018
07:41:31
Если остановка записи допустима - то значит допустимо и отсутствие самых свежих данных в матвью. Отсюда вопрос - правда ли в этом кейсе необходим матвью?

Sergei
11.07.2018
07:43:04
Угу, на нашем объёме это минуты, плюс они не меняют структуру, они заводят под себя вьюшки, этакий self service
Eventual consistency здесь ок, а вот матвьюшки очень нужны т.к. исходный поток - события юзера, где потеря одного события может полностью исковеркать результат :(

Eldar
11.07.2018
07:45:51
Господа, а кликхаус из коробки умеет мониторить и показывать состояние кластера?

LeiDruid
11.07.2018
07:46:30
На каждом сервере есть таблицы в system

Eldar
11.07.2018
07:46:58

LeiDruid
11.07.2018
07:47:22
Мы это делаем другим способом
zabbix например

Google

LeiDruid
11.07.2018
07:47:37
Он ещё и в нотификацию умеет

Michal
11.07.2018
08:00:54
Это на самом деле часть философии UNIX - каждый инструмент должен делать одну вещь, но должен делать её хорошо. Кликхаус - это база данных для аналитики. И делает это хорошо :)
А для мониторинга есть другие инструменты :)


Yaroslav
11.07.2018
10:09:19
возможно ли для типа float64 в функции toString, например, указать нужное количество цифр после запятой?

Alex
11.07.2018
10:29:05

Yaroslav
11.07.2018
10:32:09
спасибо, но мне нужно нулями заполнить недостающие

Oleg
11.07.2018
10:41:33
Поделитесь, пожалуйста, Вашим опытом как правильно поддерживать масштабируемость и расширяемость ClickHouse c точки зрения DevOps.
Мы переезжаем на новое железо - сейчас в CH 4 ноды (2 реплики 2 шарда + куча намешанных решений, большая разрозненность).
Есть желание держать гомогенный кластер: все таблицы distributed, две реплики. Насколько это хорошая идея?
Добавление нового железа в кластер должно быть относительно простым (возможно c апдейтом weights).
Кластер может расти до десятков нод, мой вопрос: как правильно организовать фреймворк конфигов для реплик/шардов - или в любом случае это ручные изменения в .xml ?

Michal
11.07.2018
11:08:06
С ручными изменениями - уже на двух серверах начинается боль - типа тут поправили, а там забыли. Почти все можно автоматизровать с помощью соотвествующих инструментов типа puppet / chef / ansible / salt / cfengine

Wolf
11.07.2018
11:10:39
Мы ансиблом рулит, он генерит конфиги кх

Andrey
11.07.2018
11:46:31

Wolf
11.07.2018
11:46:48
нет ансибл не самописный

Andrey
11.07.2018
11:47:29

Wolf
11.07.2018
11:48:20
вроде не использую
там же конфиг простой
пару циклов и готово
ну и в целом у нас по себе кх простой

Алексей
11.07.2018
11:50:54
,

Vasilij
11.07.2018
12:21:36

Google

Vadim
11.07.2018
12:23:15
Есть 2 таблички одинаковой структуры с частично дублирующимися записями, как скопировать данные в третью, но что бы все строки были уникальными. Кто знает?

Denis
11.07.2018
12:25:54
CollapsingMergeTree ?

Michal
11.07.2018
12:26:09

Denis
11.07.2018
12:26:24
или insert as (select ... union select ...)
так если union all, то дубликаты не удалятся

Alexey
11.07.2018
12:27:10
так группирнуть надо
чтоб дубликаты схлопнуть

Michal
11.07.2018
12:27:29
Или движок Merge https://clickhouse.yandex/docs/en/table_engines/merge/ с последующим GROUP BY.

Vadim
11.07.2018
12:28:07
таблички GraphiteMergeTree
Спасибо, буду пробовать.

Michal
11.07.2018
12:33:23
Возможно так сделано чтобы не было колизий с фоновыми слияниями.
Поэтому UNION ALL + GROUP BY

Sergey
11.07.2018
12:48:37


Alexey
11.07.2018
13:03:37
Добрый день! Столкнулась с такой задачей по связи mongobd и внешних словарей. Можно ли как-то описать словарь, чтобы вытащить в атрибут вложенное поле или поле элемента массива? Например есть коллекция со структурой {"name" : "user", "details" : {"sex" : "male", "age" : 20}, "languages" : [{"name" : "java", "lines" : 10000}, {"name" : "c", "lines" : 6000}]}. Во-первых, интересует, как сделать атрибутом словаря, например, пол. Во-вторый, возможно ли сделать словарь из элементов массива languages с соответствующими атрибутами name и lines? В документации подобного не нашла, буду крайне признательна за ответ.
Добрый день. Насколько я знаю, нет способа работы с вложенными элементами.

Vitaliy
11.07.2018
14:48:34
как долго нужно ждать для удаления данных с системной таблици system.mutations ?

Alex
11.07.2018
14:56:33
Пока что записи о мутациях остаются навечно (в следующих версиях будет клинер). Если их стало слишком много, можно вручную удалить ноды из ZK.

Tima
11.07.2018
14:57:16

Alex
11.07.2018
14:58:00
Ага, это значит, что мутация полностью выполнилась. Но сама запись о мутации будет висеть.

Google

Wolf
11.07.2018
15:01:38
а кто нибудь расширял зукипер с 3 нод до 5 ? нет ли каких то проблем?

Tima
11.07.2018
15:04:48
Есть способ выполнить OPTIMIZE TABLE, который падает по памяти?
Code: 241. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 12.11 GiB (attempt to allocate chunk of 131072 bytes), maximum: 12.11 GiB: (while reading column originalUrl): (while reading from part /clickHouse/clickhouse/data/default/prodstats/20160715_20160715_61128_61128_0/ from mark 0 with max_rows_to_read = 8192).
Размер указаного парта на диске 2.1 Мб

Michal
11.07.2018
15:24:59
Странно. Он вроде во время слияний сильно память не ест. Или у вас какие-то сложные агрегации при слияниях? Да и размер части небольшой...

Tima
11.07.2018
15:28:04

Alexey
11.07.2018
15:30:33
может парт битый? select <не помню как размер посмотреть> from prodstats where _part = '20160715_20160715_61128_61128_0'
или в system.parts на этот кусок глянуть

Michal
11.07.2018
15:38:36

Tima
11.07.2018
15:38:46

Alexey
11.07.2018
15:40:26
да по идее норм

Michal
11.07.2018
15:40:29
Ну сумма и сумма :) главное что прочиталось. А в логах сервера нет чего-то интересного?

Alexey
11.07.2018
15:41:01
у меня просто когда был битый парт, не хватало оперативы сделать такой селект
я бы попробовал отцепить этот part и сделать optimize без него
ну или просто сделать detach partition и attach partition, может прочекает этот кусок, если что отцепит, скачает с другой реплики...

Tima
11.07.2018
15:43:16