@clickhouse_ru

Страница 666 из 723
Aleksandr
20.09.2018
11:00:12
Yuri
20.09.2018
11:00:41
это здесь к чему
> дописывать туда всякие счетчики (время сессии например) я так понял, что ты хочешь в КХ менять значения полей в записи, нет?

Aleksandr
20.09.2018
11:03:04
> дописывать туда всякие счетчики (время сессии например) я так понял, что ты хочешь в КХ менять значения полей в записи, нет?
не совсем так, я бы хотел чтобы в итоге данные схлопывались в одну запись чтобы считать статистику по пользователям не по большой таблице хитов, а по маленькой с сессиями

Google
Aleksandr
20.09.2018
11:04:06
Yuri
20.09.2018
11:04:39
не совсем так, я бы хотел чтобы в итоге данные схлопывались в одну запись чтобы считать статистику по пользователям не по большой таблице хитов, а по маленькой с сессиями
а, то есть тот движок, что схлопывать умеет, и туда добавлять записи и потом смотреть на результат. по-моему хорошая идея, только обрати внимание на особенности этого схлапывания. оно, если я не ошибаюсь, схлапывает в неопределенный момент времени

Sergey
20.09.2018
11:07:08
Подскажите, пожалуйста, кто как хранит ip адреса?

Michal
20.09.2018
11:09:07
Не сразу. А копит у себя до каких-то попугаев макс блок сайз.
А вы уверены? https://gist.github.com/filimonov/40c987677122e173b5c4f6a6906a03d0

Yuran
20.09.2018
11:10:16
UInt32
А если IPv6 тоже бывает иногда?

Egor
20.09.2018
11:10:51
А вы уверены? https://gist.github.com/filimonov/40c987677122e173b5c4f6a6906a03d0
Да, когда она была по дефолту на 65к, то кидал данные раз в 10-15 минут (рпс мелкий), но когда сделал 512 то данные кидаются почти каждую секунду.

Sergey
20.09.2018
11:11:29
UInt32
а под ipv6 строка?

Michal
20.09.2018
11:12:42
Да, когда она была по дефолту на 65к, то кидал данные раз в 10-15 минут (рпс мелкий), но когда сделал 512 то данные кидаются почти каждую секунду.
Ну я в том примере увеличил max_block_size и даже при вставке 1 строки матвью обновляется немедленно.

prll
20.09.2018
11:13:11
Все хранить как fixedstring 16, ipv4 как ::ffff:1.2.3.4

Ivan
20.09.2018
11:13:23
у нас нет IPv6 но в доке кликхауса неявно предлагают FixedString(16). т,к. есть функция: IPv6NumToString(x) Accepts a FixedString(16) value containing the IPv6 address in binary format

Google
Egor
20.09.2018
11:14:29
Данные в кафкк энжайн падают 100%

Michal
20.09.2018
11:16:43
А данные в мерджтри таблицу сразу скидывает?
А почему бы он делал иначе? См. https://gist.github.com/filimonov/40c987677122e173b5c4f6a6906a03d0

У меня цепочка кафка-кафка энжайн-мвью-мерджтри
Ну там это специфика движка Kafka, а не специфика MATERIALIZED VIEW.

Egor
20.09.2018
11:18:12
Ну там это специфика движка Kafka, а не специфика MATERIALIZED VIEW.
Ну, может на кафку тогда влияет этот параметр?

Michal
20.09.2018
11:18:35
Т.е. матвью сразу пишет данные в финальную таблицу. Ещё во время инсерта в исходную. А вот движок Кафки "изображает" эти вставки в соотвествии со всякими настройками блоков.

Egor
20.09.2018
11:19:19
Мне казалось что матвью подписывается к кафке и сам селектии

Селектит*

Michal
20.09.2018
11:20:17
Матвью в КХ правильнее было бы называть BEFORE INSERT триггерами.

Egor
20.09.2018
11:21:36
Матвью в КХ правильнее было бы называть BEFORE INSERT триггерами.
Хм, т.е. кафка энжайн говорит матвью - вот данные?

А не матвью лезет к нему?

Aliaksandr
20.09.2018
11:26:12
неожиданно, я думал что используется какая-то очередь. у нас появились проблемы с масштабированием, было год назад 6М запросов в секунду, а сейчас 9-10М мы недавно увеличили количество нод в кластере 36 -> 75 и началось много приключений связанных с записью данных в ClickHouse Например, количество ошибок ClickHouse связанных с Zookeeper выросло на порядок "Zookeeper session expired" В Яндекс.Метрике сколько нод Zookeeper используется и SSD ли? Читал какая сама конфигурация Zookeeper https://clickhouse.yandex/docs/en/operations/tips/ но не нашел деталей про setup
Если кластер вырастает до более 20 нод, то лучше шардировать его на подкластеры с < 20 нод в каждом, чтобы не упереться в сетевые ограничения / таймауты / ошибки. Например, если вероятность сетевой ошибки за определенный интервал времени для подключения к одной ноде составляет 1%, то вероятность сетевой ошибки для 75 одновременных подключений составит 1-(1-0.01)^75=53% . Вместо вероятности сетевой ошибки аналогично "масштабируется" вероятность ошибки одной ноды кластера на весь кластер. Поэтому лучше делать, как в яндексе - шардировать данные по айди клиента на небольшие подкластеры - в каждом подкластере будет своя distributed таблица поверх данных подкластера. Для one-off аналитических запросов создать в сторонке дополнительную distributed таблицу поверх всех нод всех подкластеров.

?
20.09.2018
11:31:32
а через консоль как проще всего скопировать таблицу в другую базу?

Vladimir
20.09.2018
11:40:34
insert into dst select * from src

Viske
20.09.2018
11:41:03
а можно ли поставить на cron удаление партиций?

Pavel
20.09.2018
11:41:28
Всем привет. Никто не сталкивался с тем, что при больших выборках в syslog от clickhouse прилетает за 1 секунду примерно 10 миилионов строк вида: > ../contrib/re2/re2/re2.cc:650: DFA out of memory: size 18912, bytemap range 41, list count 18369

Kirill
20.09.2018
11:42:05
Привет, я немного в замешательстве. Хочу добавить колонку: ALTER TABLE default.asks ON CLUSTER 'asg' ADD COLUMN WinNotifyUrl String; Получаю: An error occured before execution: Code: 48, e.displayText() = DB::Exception: Distributed DDL alters for replicated tables don\'t work properly yet, e.what() = DB::Exception Подскажите куда копать, плз.

Pavel
20.09.2018
11:44:51
кто-то использует тяжелые регэкспы в запросах
Это понятно, не понятно зачем столько писать в syslog

Google
Arkady
20.09.2018
11:45:57
Привет. Расскажите пожалуйста, как матчить версию, указанную в документации, и версию, показываемую функцией version(). В моем случае в доке сказано Функциональность находится в состоянии beta и доступна начиная с версии 1.1.54388. Делаю SELECT version() => 18.10.3

Aliaksandr
20.09.2018
11:45:59
это нужно спросить у разработчиков re2

Илья
20.09.2018
11:49:05
подскажите, где можно почитать про тип данных StringWithDictionary?

Michal
20.09.2018
11:50:14
Хм, т.е. кафка энжайн говорит матвью - вот данные?
ну типа того. https://github.com/yandex/ClickHouse/blob/ded83c215c4d5fdeb89d7623e6257b8fcf56866e/dbms/src/Storages/Kafka/StorageKafka.cpp#L450

Michal
20.09.2018
11:52:24
Это понятно, не понятно зачем столько писать в syslog
Возможно эта излишняя разговорчивость - баг.

Arkady
20.09.2018
11:52:51
18.x > 1.1.x
То есть версий 1.2.x нет, а вместо них перешли на именования 18.х?

papa
20.09.2018
11:52:57
да.

Arkady
20.09.2018
11:53:07
Спасибо!

Michal
20.09.2018
11:59:43
Коллеги, а есть что-то по сравнению кх и Elasticsearch? Удалось найти только https://github.com/yandex/ClickHouse/issues/14.
Специально не сравнивали, но у нас на ELK ещё до КХ был сделан сбор и анализ логов. Субъективно выскажусь так: elasticsearch нервно курит в сторонке. :)

Aliaksandr
20.09.2018
12:01:16
Возможно эта излишняя разговорчивость - баг.
Можно отключить логирование в re2 , если передать log_errors=false в Options. Но тогда в лог никогда не попадут сообщения об ошибках в re2, что не есть хорошо. Можно добавить в кликхаус опцию hide_re2_errors, выключенную по умолчанию. Тогда бы те, кому мешают сообщения об ошибках re2, могли бы включить эту опцию и жить спокойно

Mike
20.09.2018
12:10:05
Специально не сравнивали, но у нас на ELK ещё до КХ был сделан сбор и анализ логов. Субъективно выскажусь так: elasticsearch нервно курит в сторонке. :)
Хотелось бы что-то услышать/узнать о недостатках ELK. Какие с ним были проблемы, почему вообще встал вопрос о его замене? Медленно, недостаточно гибко?

Michal
20.09.2018
12:11:03
подскажите, где можно почитать про тип данных StringWithDictionary?
StringWithDictionary скорее всего будет заменен на LowCardinality(String). Есть такой доклад: https://www.youtube.com/watch?v=rqf-ILRgBdY

Илья
20.09.2018
12:13:54
StringWithDictionary скорее всего будет заменен на LowCardinality(String). Есть такой доклад: https://www.youtube.com/watch?v=rqf-ILRgBdY
тык собственно оттуда и вопрос возник :) в доке нашёл только https://clickhouse.yandex/docs/ru/changelog/#_5

Aliaksandr
20.09.2018
12:14:01
ну я так понимаю там проблема в том что для каждой строки данных тоже самое сообщение вываливается. В случае если проблема с самим регэкспом - можно было бы ограничиться однократным.
вряд ли. Надеюсь, что кликаус кэширует скомпилированные регэкспы. В этом случае ошибка бы вылезла только один раз при компиляции. В следующий раз она бы появилась после вытеснения скомпилированного регэкспа из кэша. Поэтому, скорее всего, в каждом запросе используются разные регэкспы. Вот сюда можно по-быстрому добавить опцию hide_re2_errors - https://github.com/yandex/ClickHouse/blob/ea3953018cd6408e808c62295841cf3e3a8d6909/dbms/src/Common/OptimizedRegularExpression.inl.h#L269 , прописав regexp_options.set_log_errors(!hide_re2_errors)

Michal
20.09.2018
12:17:09
Хотелось бы что-то услышать/узнать о недостатках ELK. Какие с ним были проблемы, почему вообще встал вопрос о его замене? Медленно, недостаточно гибко?
ELK? Да вопрос о замене не стоял, по-прежнему жив-здоров курилка :) Kibana красивая, много чего выкликать можно. Но если данных много то просто не долдешься результата. Скажем ещё 1/2-х дневные графики он в состоянии нарисовать, то для нескольких дней - отваливается по таймауту. При том что данных вроде бы не так чтоб страшно много, а серверов три. Из минусов ELK - если захотите чуть-чуть больше фичеров чем даёт бесплатная версия, и поинтересуетесь во сколько обойдется плагин с экстеншенами (не помню как называется - там всякие уведомления, мейлы, мониторинги, аутентификация пользователей), то будете сильно неприятно удивлены. Т.к. сумма будет с 4 нулями в баксах в год.

Vadim
20.09.2018
12:17:55
Привет всем, кто-нибудь сталкивался с тем, что КХ даже ненагруженный не успевает присылать собственные метрики, в настройках: <timeout>30</timeout> в логах - тишина ?

Google
Michal
20.09.2018
12:20:23
Какая печалька
Почему печалька?

Egor
20.09.2018
12:21:25
Почему печалька?
Мне чет казалось, что матвью данные забирает и инсертит

Michal
20.09.2018
12:22:00
Мне чет казалось, что матвью данные забирает и инсертит
Ну главное чтоб они там в конце концов оказались, верно? :)

Egor
20.09.2018
12:24:06
Michal
20.09.2018
12:31:44
вряд ли. Надеюсь, что кликаус кэширует скомпилированные регэкспы. В этом случае ошибка бы вылезла только один раз при компиляции. В следующий раз она бы появилась после вытеснения скомпилированного регэкспа из кэша. Поэтому, скорее всего, в каждом запросе используются разные регэкспы. Вот сюда можно по-быстрому добавить опцию hide_re2_errors - https://github.com/yandex/ClickHouse/blob/ea3953018cd6408e808c62295841cf3e3a8d6909/dbms/src/Common/OptimizedRegularExpression.inl.h#L269 , прописав regexp_options.set_log_errors(!hide_re2_errors)
Я так понял что регэксп там вполне себе правильный, но большой. Просто re2 пробует сначала его смачовать с помощью DFA, отваливается по памяти и переключается на NFA. И так для каждой строки... https://github.com/google/re2/blob/e6acac839be126c8a20a20183f20a23fa9f4895e/re2/re2.cc#L670 По идее лучше всего было бы как-то сообщить движку re2 после неудачного использования DFA, чтоб уже этим не пробовал заниматься.

Necromant
20.09.2018
12:32:20
Привет всем. Я нигде не могу найти, можно ли как-либо запретить DROP для некоторых пользователей БД. Кроме того, выдвигаю еще вопрос о методе создания бэкапов в КХ. Скриптами создавать дампы точно не вариант в больших базах. Логично ли использовать ФС с поддержкой снапшотов, такие как BTRFS?

Necromant
20.09.2018
12:37:33
Есть 2 настройки для пользователя: readonly и (совсем недавно добавили) allow_ddl
в идеале мне надо запретить только DROP, но разрешить читать и писать новое

Wolf
20.09.2018
12:45:31
почему-то люди же и ELK используют. Что у ELK, по-вашему, быстрее?
Кому то не нужны скорости кх, у кого то данных не много

У нас у самих есть елк для других данных, да и у елка немного другие задачи.

Alex
20.09.2018
12:46:44
Пробую создать табличку с ON CLUSTER но получаю ошибку о том, что кластер не найден. Подскажите где это имя кластера взять, смотрю в конфиге в секции remote-servers, но похоже это не то

Mike
20.09.2018
12:48:31
У нас у самих есть елк для других данных, да и у елка немного другие задачи.
Можете пояснить, в чём принципиальное отличие от кх? Основная задача елк всё-таки завязана на поиске?

Google
Wolf
20.09.2018
12:49:32
Ну а кх не завязан на поиск, основное отличие в скорости на мой взгляд, если не вдаваться в какие то дебри

Alex
20.09.2018
12:49:43
Ну кластер нужно сначале в конфиге добавить.
Ну у меня в секции <yandex> <remote-servers> есть какой-то кластер.

Wolf
20.09.2018
12:50:08
Там где у вас в других системах запросы идут минуты тут они проходят за секунды если ваши данные и запросы подходят парадигме кх

Michal
20.09.2018
12:52:43
почему-то люди же и ELK используют. Что у ELK, по-вашему, быстрее?
ELK по своему неплох. Тексты любит сильно (в отличае от КХ). КХ сильно лучше в сранировании по простым типам и группировках. С эластиксерчем нужно разговаривать какими-то странными JSON-ами, c КХ - на почти полноценном нормальном SQL (иногда значительно более удобном чем нормальный).

molo4ko
20.09.2018
12:53:02
select a,b from (select a from tableA where foo=bar all inner join (select b from tableB_replicated where x = y) using id)
Можете объяснить, за счет чего это должно работать? У меня все равно ошибка типа table default.tableB_replicated does not exist

Alex
20.09.2018
12:55:05
почему-то люди же и ELK используют. Что у ELK, по-вашему, быстрее?
Логи часто имеют произвольные поля, сидеть и по куче логов пытаться придумать схему для КХ то ещё удовольствие. С эластиком в этом плане нет проблем.

Michal
20.09.2018
12:56:39
Ну и очевидный плюс ELK - это целостная структура объединяющая несколько продуктов, написанных и поддерживаемых одной конторой, для решения конкретных задач. С использованием этих инструментов можно довольно быстро поднять сбор логов. С КХ - нужно некоторое терпение и звание магистра в велосипедостроении чтоб добиться такого же (или лучшего) результата :)

Т.е. кликхаус это только E из ELK. :)

Alex
20.09.2018
12:58:13
этот Е ещё весьма специфичный

Где кластер в конфиге настроить? Что-бы CLUSTER ON работало

Denis
20.09.2018
12:59:55
Можете объяснить, за счет чего это должно работать? У меня все равно ошибка типа table default.tableB_replicated does not exist
предположим у вас два шарда, с таблицами tableX_ и tableY_, они шардированы вместе как вы уже сказали и вам надо сджойнить локально shard1: tableX_, tableY_ shard2: tableX_, tableY_ на обоих шардах создаете дистрибьютид tableX, tableY которые смотрят на tableX_, tableY_ запускаете запрос на любом шарде select a,b from (select a from tableX where foo=bar all inner join (select b from tableY_ where x = y) using id) он будет инициатором и пошлет сам себе и второму шарды запрос select a,b from (select a from tableX_ where foo=bar all inner join (select b from tableY_ where x = y) using id)

Michal
20.09.2018
13:02:28
Где кластер в конфиге настроить? Что-бы CLUSTER ON работало
это ветка remote_servers в config.xml (в конфиге по умолчанию есть пример с настроенным кластером "test_shard_localhost" ). Плюс должен быть настроен zookeeper.

Alex
20.09.2018
13:03:25
У меня в конфиге есть кластер https://pastebin.com/RtQTSHnq и зукипер настроен

Но когда я пробую создать табличку он пишет `Received exception from server (version 18.12.14): Code: 170. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Requested cluster 'safe_cluster' not found.`

Alex
20.09.2018
13:05:18
Michal
20.09.2018
13:05:48

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