@clickhouse_ru

Страница 414 из 723
Jen
08.02.2018
08:02:49
Коллеги, вижу тут посты про графану, может кто подскажет, каким образом лучше сделать расчет метрик на базе таблицы КХ для нее. Натравливать графану на таблицу с сырыми данными, в моем понимании, не очень хорошо - поскольку при каждом изменении таймлайна последняя будет делать кучу селектов в таблицу для перестроения. Правильно ли понимаю, что лучшим вариантом будет подготовка данных для графаны в фоне в другой таблице внешними средствами? То есть каждую минуту внешний скрипт будет делать селект в основную таблицу, получать метрики за минуту, и класть их в другую таблицу в КХ, с которой уже будет работать графана.

Kirill
08.02.2018
08:06:35
Мы сырые в Summing пишем, время до 5 секунд транкейтим и движок сам в фоне агрегирует

Jen
08.02.2018
08:07:15
дело в том, что мои метрики необходимо расчитывать из данных, т.е. у меня не сами метрики в КХ попадают, а данные, по которым их можно рассчитать

поэтому тут агрегировать особо ничего не получится

Google
Kirill
08.02.2018
08:09:18
дело в том, что мои метрики необходимо расчитывать из данных, т.е. у меня не сами метрики в КХ попадают, а данные, по которым их можно рассчитать
Ну, мы их тоже с данных расчитываем, всегда можно что-то схлопнуть если есть однотипные события

Jen
08.02.2018
08:09:56
Ну, мы их тоже с данных расчитываем, всегда можно что-то схлопнуть если есть однотипные события
я пробовал через AggregateMergeTree, там скорость выполнения падает больше, чем на 10% при обычном суммировании поля типа AggregateFunction

в сравнении с обычным MergeTree

+ данных у меня реально много (это IP-cессии, 40 полей)

кластер как у яндекса я себе позволить пока не могу :)

Kirill
08.02.2018
08:14:10
Ну, сделайте пару materialized View для метрик

Jen
08.02.2018
08:17:42
Ну, сделайте пару materialized View для метрик
есть где то более детальное описание, чем в доке? А то там ссылка смотри CREATE MATERIALIZE VIEW, самой страницы нет

Roman
08.02.2018
08:19:11
Коллеги, вижу тут посты про графану, может кто подскажет, каким образом лучше сделать расчет метрик на базе таблицы КХ для нее. Натравливать графану на таблицу с сырыми данными, в моем понимании, не очень хорошо - поскольку при каждом изменении таймлайна последняя будет делать кучу селектов в таблицу для перестроения. Правильно ли понимаю, что лучшим вариантом будет подготовка данных для графаны в фоне в другой таблице внешними средствами? То есть каждую минуту внешний скрипт будет делать селект в основную таблицу, получать метрики за минуту, и класть их в другую таблицу в КХ, с которой уже будет работать графана.
Как правильно заметили, Вы можете сделать view специально для графиков. Так же, если Вы будете использовать https://github.com/Vertamedia/chproxy, то сможете настроить лимиты по выполнению запросов из графаны. Например, не больше 2 запросо одновременно, не больше 20 сек на выполнение. Так же можно настроить кеширование результатов запроса и округление запрашиваемого периода времени до 10мин, например. Более подробно здесь - https://github.com/Vertamedia/clickhouse-grafana#chproxy-optional От себя скажу, что мы постоянно смотрим сырые данные непосредственно ч-з графану

Jen
08.02.2018
08:20:45
да, прокся у меня как раз эта используется

единственный пикатнтный момент - найти описание самой вьюшки :)

Kirill
08.02.2018
08:24:52
Jen
08.02.2018
08:29:18
Спасибо!

Stas
08.02.2018
08:37:30
Единственный минус вьюшек сейчас - отсутствие под запросов :(

Google
Yuran
08.02.2018
09:44:24
все-таки, в заголовке не совсем правда про то, что кликхаус не тормозит (ниже — график LA на машине с кликхаусом)



Slach
08.02.2018
09:45:53
;) тормозит все, если нагрузить сверхмеры

Yuran
08.02.2018
09:51:41
в него вливается всего порядка 500 мбит/сек батчами по 1 мб

в буфер-таблицу

Kirill
08.02.2018
09:54:09
Просто не нужно использовать буфер-таблицы (с) А что мешает сразу в MergeTree лить ?

Yuran
08.02.2018
09:57:13
Просто не нужно использовать буфер-таблицы (с) А что мешает сразу в MergeTree лить ?
потому что мы хотим очень много вставок в секунду. сильно больше 1

мы просто решили посмотреть, как оно будет справляться с 1000 одновременных потоков на запись :). Справляется очень плохо, как можно видеть выше.

Jen
08.02.2018
09:59:18
потому что мы хотим очень много вставок в секунду. сильно больше 1
в чем проблема батчить большими кусками, но редко?

Yuran
08.02.2018
09:59:40
их просто очень много :)

Kirill
08.02.2018
10:02:06
А как же старая добрая рабочая схема: валим все в Кафку, а от туда пачками растаскиваем в сервера КХ?

Ivan
08.02.2018
10:18:15
Всем известно, что в кх не стоит лить данные частыми малыми инсертами, но кто-то решает это сделать, и заявить что он тормозит. Это фича такая у базы, тормозить на таком юзкейсе :)

Ivan
08.02.2018
10:22:46
странно, что вы это сваливаете на кх :)

просто у вас слабое железо

Yuran
08.02.2018
10:25:13
просто у вас слабое железо
да нормальное вроде :)

Google
Kirill
08.02.2018
10:25:58
Если не КХ и не железо тогда что?

@yourock88 В общем не стоит так делать, КХ, на данный момент, так работать не может. Нужно искать пути как увеличить размер батча и уменьшить количество пишущих в него. Если Кафка не вариант, то что-то ведь похожее должно у вас быть?

Mike
08.02.2018
10:40:03
Написать свой батчер, делов на пару дней

Slach
08.02.2018
10:45:05
Написать свой батчер, делов на пару дней
;) и потом еще мучений на пару лет, если невнимательно собрать =)

Mike
08.02.2018
10:45:46
С чем мучения?

Slach
08.02.2018
10:53:09
С чем мучения?
с пограничными случаями "ой мы тут файловый дескриптов не закрыли" "ой а тут у нас пришел OOM и буфера не флашнулись" и еще много можно нафантазировать но я правильно понимаю что когда мы говорим "батчер" это мы имеем ввиду взяли много маленьких INSERT и потом сделали один большой ?

Sergey
08.02.2018
11:08:05
всем привет, а есть какой-то подробный туториал с примерами про типы таблиц в CH?

Kirill
08.02.2018
11:08:26
Sergey
08.02.2018
11:09:25
ага

Kirill
08.02.2018
11:10:07
https://github.com/yandex/ClickHouse/tree/master/dbms/src/Storages ;)

Aleksey
08.02.2018
11:11:23
Как вариант, но Юра писал что у них с этим тоже проблемы
Мы с Юрой как раз этим и заняты. Вместе)

Просто не очень хочется лить батчами по сотни мегабайт. Но, видимо, к этому можем и придти.

Yuran
08.02.2018
11:14:55
Батчевать мы можем на любой размер, но хочется ещё и приемлемый latency иметь.

Ivan
08.02.2018
11:48:33
@yourock88 У нас несколько сот батчей в минуту в минуту и все ок. если довести хотя бы до тысячи то начинают сыпаться ошибкаи Too many parts to merge. Вам надо попробывать просто собирать таки батчи побольше и страться придерживаться 1 батч - 1 партишн

что это у вас за график? инсерты в минуту? что вы имеете ввиду под LA?

Google
Вася
08.02.2018
11:52:51
https://ru.wikipedia.org/wiki/Load_Average

Ivan
08.02.2018
11:55:00
ага понял. Спасибо @vasya_toropov

@yourock88 а как вы данные загружаете в каком формате? сжимаете?

Kirill
08.02.2018
12:18:43
Просто не очень хочется лить батчами по сотни мегабайт. Но, видимо, к этому можем и придти.
Ну, еще можно просто шардов накинуть и писать в разные. Странно что у вас нет ничего похожего на Кафку, что сильно бы упростило вам жизнь (или наоборот:))

Какая-нибудь Kitten-Kafka )

Aleksey
08.02.2018
12:24:04
Ну, еще можно просто шардов накинуть и писать в разные. Странно что у вас нет ничего похожего на Кафку, что сильно бы упростило вам жизнь (или наоборот:))
У нас локальная персистентная прокся на каждом сервере. Они батчат отдельные инсерты и потом уже льют в КХ. Но последний стоит к syscpu, а не user/iowait. Так что попробуем батчами того же размера но в меньшее число коннектов, чтобы столько потоков КХ не запускал.

Какая-нибудь Kitten-Kafka )
Не, не, не. Вот ничего такого не хочется.

GithubReleases
08.02.2018
12:26:34
https://github.com/yandex/ClickHouse/releases/v1.1.54343-stable was tagged

Alex
08.02.2018
12:28:14
Парни полдня разбираемся... делаем инсерты в базу, небольшое количество строк заходит всегда одинаково. и суммы по колонкам (клики и показы) одинаковая. Когда объем вставляемых данных увеличиваем с 30000 до 60000 строк, по итогу количество строк в норме, но суммы кликов и показов отличаются. запросы на вывод сумм даже не меняем. вставляем по 500. При этом несколько раз вставляли (60000) одни и теже строки и всегда по разному суммы кликов и показов... полтергест.... помогите плиз...

Alex
08.02.2018
12:29:14
Ну и доброго дня всем)

Aleksey
08.02.2018
12:30:09
Так мы через nginx сейчас собираем) И лимиты на коннекты в апстримы

Артемий
08.02.2018
12:35:16
Помогите разобраться как работает Sign в CollapsingMergeTree. Он должен быть -1 ил и1, но кто его должен менять. Мне его указывать при вставке, или движок сам управляет этим значением?

papa
08.02.2018
12:35:47
указывать при вставке

Артемий
08.02.2018
12:36:17
А когда оно станет равным -1? Я же не могу менять его.

Или можно всегда указывать 1 и он будет схлапывать по этому признаку?

Kirill
08.02.2018
12:36:53
Строчку с тем же ключем записать, но с -1

Артемий
08.02.2018
12:38:44
Допустим я не знаю, вставляю ли я дубль или нет. Всталять Sign = -1?

Но знаю, что он дожен заменить предыдущую запись

Google
Kirill
08.02.2018
12:43:31
CollapsingMergeTree нужен когда точно знаете что нужно заменить запись, в противном случае просто лейте в MergeTree с дублями потом разберетесь

Vyacheslav
08.02.2018
12:44:21
Артемий
08.02.2018
12:46:47
CollapsingMergeTree нужен когда точно знаете что нужно заменить запись, в противном случае просто лейте в MergeTree с дублями потом разберетесь
Я точно знаю что нужно ее заменить. Но если у нее уже установлен Sign = 1. Но я считаю ее устаревшей, я не могу поменять ее Sign на -1. Видимо я не совсем понимаю смысла термина "старое значение". Ведь когда оно вставлялось вчера, на тот момент оно было новым.

Kirill
08.02.2018
12:50:15
Я точно знаю что нужно ее заменить. Но если у нее уже установлен Sign = 1. Но я считаю ее устаревшей, я не могу поменять ее Sign на -1. Видимо я не совсем понимаю смысла термина "старое значение". Ведь когда оно вставлялось вчера, на тот момент оно было новым.
Там есть ключ (то что вторым параметром при создании указывается в скобках или ORDER BY в новом синтаксисе партиций) и могут быть какие-то еще данные (колонки), вот чтоб "затереть" строку нужно вставить данные с темже ключем + Sign = -1

при мердже КХ удалит строку с Sign=1

Артемий
08.02.2018
12:50:58
Спасибо!

А если я вставлю sign=1, и у меня уже есть уже есть sign=1?

Kirill
08.02.2018
12:51:43
он при мердже оставит только первую строку

Страница 414 из 723