@clickhouse_ru

Страница 568 из 723
Dmitry
26.06.2018
10:38:38
сбрасывать после прочистки

Ihor
26.06.2018
10:39:07
Может уже задавали этот вопрос, но я спрошу еще раз. Как скейлить кликхаус, на данный момент есть 3 шарда по 2 реплики в каждом, нужно добавлять шарды или реплики?

Ihor
26.06.2018
10:42:26
Вы о чем спросить хотите?
Собственно как скейлится ?

Google
Kirill
26.06.2018
10:43:03
Собственно как скейлится ?
Что значит склеиться?

Ihor
26.06.2018
10:46:12
Что значит склеиться?
Масштабироватся, увеличивать размер кластера. Текущий кластер достаточно нагружен и запаса по ресурсам почти не осталось, вопрос в том как правильно добавить серверов в кликхаус кластер?

Kirill
26.06.2018
10:49:40
Надо смотреть запросы в первую очередь и то, как у вас данные лежат. Если "ничего не помагает" то в случае памяти реплики не помогут, можно попробовать разбить данные на более мелкие куски, хотя это и странно, возможно нужно просто правильно настройки выставить

Aleksandr
26.06.2018
11:31:55
Здравствуйте. Изучаю сейчас словари и не могу понять правильно ли я понимаю словари или нет. В КХ в таблице есть поле status_id UInt8 , в MySQL есть другое поле с 3 колонками: id, name, description хотелось бы что бы при выборке с КХ вместо status_id подставлялось name с таблицы в MySQL , но не могу понять что тогда нужно писать в настройке: <where> или его можно просто не заполнять?

и то что разные типы данных в КХ и в MySQL это проблема или нет?

Edya
26.06.2018
11:35:18
спасибо!

Aleksandr
26.06.2018
11:35:27
имеется ввиду то что в КХ это UInt8 а в мускуле это int(11)

Tima
26.06.2018
11:37:03
В конфиге можно указать правило преобразования, так что не должно быть проблем

Google
nikita
26.06.2018
11:38:17
подскажите, для ReplacingMergeTree есть "новая" форма записи, при создании, через partition, order by и settings, как для MergeTree: create materialized view ... engine = MergeTree partition by ... order by (...) settings index_granularity = 8192

Aleksandr
26.06.2018
11:39:23
спасибо, буду дальше разбираться ?

Vladimir
26.06.2018
12:26:19
Да - просто пишите ReplacingMergeTree вместо MergeTree.
А как ему название поля с версией передать корректно?

Kirill
26.06.2018
12:28:04
А как ему название поля с версией передать корректно?
Просто первые 2-а параметра уехало в PARTITION BY/ORDER BY все остальное как обычно

Aleksandr
26.06.2018
12:29:50
Как так ?
в мускуле таблица проектировалась давно и под одно кол-во записей, а по факту оказалось совершенно другое кол-во, сейчас проектируем таблицу в КХ и поняли что смысла в int(11) в КХ нету, достаточно будет UInt8

а обновлять в мускуле таблицу как обычно времени нету ?

А подскажите пожалуйста еще такой момент, как лучше хранить user agent?

Tima
26.06.2018
12:36:12
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?
Зависит от того, для чего вам нужен. Можете хранить сам user agent как строку и отдельные столбцы с вычислеными параметрами (платформа, версия и т.п.)

Alexey
26.06.2018
12:37:03
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?
String Но - для всего, что вы можете из него вычислить, стоит сделать ещё дополнительно отдельные аккуратные столбцы - это сильно ускорит запросы по этим параметрам. Например, у нас это - BrowserID UInt16, OSID UInt16, MobilePhoneVendor UInt16, MobilePhoneModel String, BrowserVersion1 UInt16, BrowserVersion2 UInt16, ...

Aleksandr
26.06.2018
12:38:04
понял, спасибо большое, в целом так и думал

Alexey
26.06.2018
12:38:34
Привет! Подскажите, в чем грабли: если стартовать КХ с выводом в консоль, все ок: sudo clickhouse-server start —config-file=/etc/clickhouse-server/config.xml а вот если как демона: sudo service clickhouse-server start —config-file=/etc/clickhouse-server/config.xml то сервер завершается, толком не стартовав: 2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt) Полный лог: 2018.06.26 12:32:19.244877 [ 1 ] <Information> : Starting daemon with revision 54385 2018.06.26 12:32:19.247361 [ 1 ] <Information> Application: starting up 2018.06.26 12:32:19.250623 [ 1 ] <Debug> Application: Set max number of file descriptors to 1048576 (was 1024). 2018.06.26 12:32:19.250637 [ 1 ] <Debug> Application: Initializing DateLUT. 2018.06.26 12:32:19.250645 [ 1 ] <Trace> Application: Initialized DateLUT with time zone `UTC'. 2018.06.26 12:32:19.251261 [ 1 ] <Debug> Application: Configuration parameter 'interserver_http_host' doesn't exist or exists and empty. Will use 'testch1' as replica host. 2018.06.26 12:32:19.252195 [ 1 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/users.xml' 2018.06.26 12:32:19.254327 [ 1 ] <Information> Application: Loading metadata. 2018.06.26 12:32:19.258321 [ 1 ] <Information> DatabaseOrdinary (system): Total 0 tables. 2018.06.26 12:32:19.258335 [ 1 ] <Information> DatabaseOrdinary (system): Starting up tables. 2018.06.26 12:32:19.261874 [ 1 ] <Information> DatabaseOrdinary (default): Total 0 tables. 2018.06.26 12:32:19.261889 [ 1 ] <Information> DatabaseOrdinary (default): Starting up tables. 2018.06.26 12:32:19.261975 [ 1 ] <Debug> Application: Loaded metadata. 2018.06.26 12:32:19.262367 [ 2 ] <Debug> DDLWorker: Started DDLWorker thread 2018.06.26 12:32:19.262702 [ 1 ] <Information> Application: Listening http://[::1]:8123 2018.06.26 12:32:19.269322 [ 1 ] <Information> Application: Listening tcp: [::1]:9000 2018.06.26 12:32:19.269361 [ 1 ] <Information> Application: Listening interserver http: [::1]:9009 2018.06.26 12:32:19.269384 [ 1 ] <Information> Application: Listening http://127.0.0.1:8123 2018.06.26 12:32:19.269403 [ 1 ] <Information> Application: Listening tcp: 127.0.0.1:9000 2018.06.26 12:32:19.269420 [ 1 ] <Information> Application: Listening interserver http: 127.0.0.1:9009 2018.06.26 12:32:19.269640 [ 1 ] <Information> Application: Available RAM = 7.79 GiB; physical cores = 4; threads = 4. 2018.06.26 12:32:19.269651 [ 1 ] <Information> Application: Ready for connections. 2018.06.26 12:32:19.354425 [ 2 ] <Trace> ZooKeeper: initialized, hosts: 172.19.161.109:2181,172.19.161.108:2181,172.19.161.82:2181 2018.06.26 12:32:19.450133 [ 2 ] <Debug> DDLWorker: Processing tasks 2018.06.26 12:32:19.452768 [ 2 ] <Debug> DDLWorker: Waiting a watch 2018.06.26 12:32:21.271772 [ 3 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/config.xml' 2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt) 2018.06.26 12:32:37.328029 [ 1 ] <Debug> Application: Received termination signal. 2018.06.26 12:32:37.328050 [ 1 ] <Debug> Application: Waiting for current connections to close. 2018.06.26 12:32:38.795104 [ 1 ] <Debug> Application: Closed all listening sockets. 2018.06.26 12:32:38.795142 [ 1 ] <Debug> Application: Closed connections. 2018.06.26 12:32:38.795495 [ 1 ] <Information> Application: Shutting down storages. 2018.06.26 12:32:38.798538 [ 1 ] <Debug> Application: Shutted down storages. 2018.06.26 12:32:38.799510 [ 1 ] <Debug> Application: Destroyed global context. 2018.06.26 12:32:38.799631 [ 1 ] <Information> Application: shutting down 2018.06.26 12:32:38.799642 [ 1 ] <Debug> Application: Uninitializing subsystem: Logging Subsystem 2018.06.26 12:32:38.799670 [ 4 ] <Information> BaseDaemon: Stop SignalListener thread

Aleksandr
26.06.2018
12:39:54
проверьте доступ к папке с clickhouse

запускаете вы скорее всего от имени root

а демон стартует (как минимум под debian) от имени clickhouse

Maxim
26.06.2018
12:41:24
Привет, есть какой-то движок, который не позволит одинаковые записи инсертить в таблицу по первичному ключу?

Alexey
26.06.2018
12:43:27
Привет! Подскажите, в чем грабли: если стартовать КХ с выводом в консоль, все ок: sudo clickhouse-server start —config-file=/etc/clickhouse-server/config.xml а вот если как демона: sudo service clickhouse-server start —config-file=/etc/clickhouse-server/config.xml то сервер завершается, толком не стартовав: 2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt) Полный лог: 2018.06.26 12:32:19.244877 [ 1 ] <Information> : Starting daemon with revision 54385 2018.06.26 12:32:19.247361 [ 1 ] <Information> Application: starting up 2018.06.26 12:32:19.250623 [ 1 ] <Debug> Application: Set max number of file descriptors to 1048576 (was 1024). 2018.06.26 12:32:19.250637 [ 1 ] <Debug> Application: Initializing DateLUT. 2018.06.26 12:32:19.250645 [ 1 ] <Trace> Application: Initialized DateLUT with time zone `UTC'. 2018.06.26 12:32:19.251261 [ 1 ] <Debug> Application: Configuration parameter 'interserver_http_host' doesn't exist or exists and empty. Will use 'testch1' as replica host. 2018.06.26 12:32:19.252195 [ 1 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/users.xml' 2018.06.26 12:32:19.254327 [ 1 ] <Information> Application: Loading metadata. 2018.06.26 12:32:19.258321 [ 1 ] <Information> DatabaseOrdinary (system): Total 0 tables. 2018.06.26 12:32:19.258335 [ 1 ] <Information> DatabaseOrdinary (system): Starting up tables. 2018.06.26 12:32:19.261874 [ 1 ] <Information> DatabaseOrdinary (default): Total 0 tables. 2018.06.26 12:32:19.261889 [ 1 ] <Information> DatabaseOrdinary (default): Starting up tables. 2018.06.26 12:32:19.261975 [ 1 ] <Debug> Application: Loaded metadata. 2018.06.26 12:32:19.262367 [ 2 ] <Debug> DDLWorker: Started DDLWorker thread 2018.06.26 12:32:19.262702 [ 1 ] <Information> Application: Listening http://[::1]:8123 2018.06.26 12:32:19.269322 [ 1 ] <Information> Application: Listening tcp: [::1]:9000 2018.06.26 12:32:19.269361 [ 1 ] <Information> Application: Listening interserver http: [::1]:9009 2018.06.26 12:32:19.269384 [ 1 ] <Information> Application: Listening http://127.0.0.1:8123 2018.06.26 12:32:19.269403 [ 1 ] <Information> Application: Listening tcp: 127.0.0.1:9000 2018.06.26 12:32:19.269420 [ 1 ] <Information> Application: Listening interserver http: 127.0.0.1:9009 2018.06.26 12:32:19.269640 [ 1 ] <Information> Application: Available RAM = 7.79 GiB; physical cores = 4; threads = 4. 2018.06.26 12:32:19.269651 [ 1 ] <Information> Application: Ready for connections. 2018.06.26 12:32:19.354425 [ 2 ] <Trace> ZooKeeper: initialized, hosts: 172.19.161.109:2181,172.19.161.108:2181,172.19.161.82:2181 2018.06.26 12:32:19.450133 [ 2 ] <Debug> DDLWorker: Processing tasks 2018.06.26 12:32:19.452768 [ 2 ] <Debug> DDLWorker: Waiting a watch 2018.06.26 12:32:21.271772 [ 3 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/config.xml' 2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt) 2018.06.26 12:32:37.328029 [ 1 ] <Debug> Application: Received termination signal. 2018.06.26 12:32:37.328050 [ 1 ] <Debug> Application: Waiting for current connections to close. 2018.06.26 12:32:38.795104 [ 1 ] <Debug> Application: Closed all listening sockets. 2018.06.26 12:32:38.795142 [ 1 ] <Debug> Application: Closed connections. 2018.06.26 12:32:38.795495 [ 1 ] <Information> Application: Shutting down storages. 2018.06.26 12:32:38.798538 [ 1 ] <Debug> Application: Shutted down storages. 2018.06.26 12:32:38.799510 [ 1 ] <Debug> Application: Destroyed global context. 2018.06.26 12:32:38.799631 [ 1 ] <Information> Application: shutting down 2018.06.26 12:32:38.799642 [ 1 ] <Debug> Application: Uninitializing subsystem: Logging Subsystem 2018.06.26 12:32:38.799670 [ 4 ] <Information> BaseDaemon: Stop SignalListener thread
Кто-то со стороны (какой-то скрипт на вашем сервере) сам отправляет процессу clickhouse-server сигнал Interrupt. Также это может быть сам сервер - но тогда ищите Exception в логе.

Google
Victor
26.06.2018
12:46:15
Такого движка нет
а если ReplacingMergeTree с версией, которая будет уменьшаться со временем?

Kirill
26.06.2018
12:46:48
Он со временем по PK удалит дубликаты

Victor
26.06.2018
12:49:46
CollapsingMergeTree я ещё не познал, кейса придумать не могу

Alexey
26.06.2018
12:51:33
проверьте доступ к папке с clickhouse
Да, дело в правах. Спасибо!

Aleksandr
26.06.2018
12:51:54
не за что ?

nikita
26.06.2018
12:54:09
Просто первые 2-а параметра уехало в PARTITION BY/ORDER BY все остальное как обычно
как обычно - т.е. в скобках ReplacingMergeTree(столбец_с_версией). спасибо, получилось!

Michal
26.06.2018
13:02:32
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?
А мы сделали словарь с UserAgent'ами, перед вставкой в КХ. В качестве ключа - xxHash( user_agent ) + counter (для предотвращения колизий в хэше). Специфика useragentов такова что при всем их разнообразии бОльшая часть трафика создается совсем небольшим количество useragent-ов. Туда же в словарь вынесли и дополнительную информацию типа браузер/версия/платформа. Данных сколько-то там миллиардов в мес, в словаре с useragent от начала года несколько десятков млн записей. В Clickhouse настроен как ComplexKeyCache на 150 тысяч записей, сейчас посмотрел - hit_rate примерно 0.98 (маловато). В таком решении есть явные плюсы, но и минусы тоже очевидны (для нас минусы пока вполне терпимы, т.к. аналитики на useragent немного у нас).

Wolf
26.06.2018
13:05:00
Зависит от того, для чего вам нужен. Можете хранить сам user agent как строку и отдельные столбцы с вычислеными параметрами (платформа, версия и т.п.)
если нужен полный юзерагент, то отдельное поле полный юзерагент и много колонок по кускам юзерагента по которым вы далаете выборки

Maxim
26.06.2018
13:06:52
Поддерживаю Puma. + Если не ошибаюсь, то кх жмет повторяющиеся записи в столбцах. Так что наличие большого кол-ва одинаковых UA не должно как-то сильно влиять на объем занимаемого места. Я прав?

Wolf
26.06.2018
13:09:10
ну просто если вам целый юзер агент не нужен, то проще его не хранить и побить по колонкам данные с него по которым идет выборка , а так все данные жмутся но в чистом виде юзераагенты все таки довльно разные

Michal
26.06.2018
13:27:14
Поддерживаю Puma. + Если не ошибаюсь, то кх жмет повторяющиеся записи в столбцах. Так что наличие большого кол-ва одинаковых UA не должно как-то сильно влиять на объем занимаемого места. Я прав?
Да жмет неплохо. Если не нужен полный UserAgent то и так лучше его не хранить, а сделать так как пишет Puma, тогда будет жаться замечательно.

Andrew
26.06.2018
13:32:17
Скажите, а следующий митап в Берлине еще не запланирован? Имею в виду после 3 числа, чтобы заранее спланировать поездку, а то этот был обьявлен всего за неделю

Alexander
26.06.2018
13:34:21
Andrew
26.06.2018
13:35:07
Alexander
26.06.2018
13:36:00
В шапке канала висит тут с 14го июня.

Maxim
26.06.2018
14:07:21
Какой самый оптимальный способ избавляться от дублей в таблице? Например, делать materialized view поверх таблицы с дистинктом будет ок? Или есть что-то лучше?

Maxim
26.06.2018
14:09:58
Нужно чтобы в реалтайме не было дублей. А ReplacingMergeTree запускается периодически, как я понял

Дмитрий
26.06.2018
14:10:21
select с final в неё делайте. Медленнее но без дублей

Google
Дмитрий
26.06.2018
14:14:38
Извиняюсь, это про CollapsingMergeTree, когда дубликаты вы сами контролируете.

Michal
26.06.2018
14:40:07
Какой самый оптимальный способ избавляться от дублей в таблице? Например, делать materialized view поверх таблицы с дистинктом будет ок? Или есть что-то лучше?
MATERIALIZED VIEW будет честно копировать новые данные. Т.е. если дубликат придет позднее то и так вставится в матвью дубликат. Если вы используете какой-то из движков который "схлапывает" данные то они (когда-нибудь) схлопнутся. Но уж лучше сразу в такой движок писать, т.е. матвью вам ничего не дает.

Maxim
26.06.2018
14:41:09
Мы предполагаем делать матвью с дистинктом / либо с LIMIT N BY

Michal
26.06.2018
14:45:12
Ну матвью работают приблизительно так. Для каждого нового фрагмента данных запускается ваш запрос (с дистинктом) и вставляется в другую таблицу. При следующей вставке история повторяется. Т.е. если вы обещаете что будете всегда вставлять ВСЕ дубликаты одним инсертом - то всё заработает :) Но если это будут 2 инсерта, то в первом матвью выберет все неповторяющиеся и во втором выберет все не повторяющиеся и сделает два инсерта в нижележащую таблицу.

При этом проверять "а не было ли уже этих данных" в нижележащей таблице не будет.

Maxim
26.06.2018
14:46:35
??

Michal
26.06.2018
14:47:00
Это отлично работает если например нужно скопировать отфильтрованные данные. Или сделать агрегацию, но дубликаты удалить таким образом не получится.

Vitaliy
26.06.2018
15:37:21
Подскажите, а механизм Delete в MergeTree уже запилили?

Wolf
26.06.2018
15:44:20
в мастере были

Vitaliy
26.06.2018
15:52:00
в 1.1.54385. нет такой возможности....

Wolf
26.06.2018
15:58:01
ну можно всегда собрать с мастера самому если ждать лень

таймаут увеличить в конфиге

Kirill
26.06.2018
16:13:05
Подскажите, а механизм Delete в MergeTree уже запилили?
В следующем релизе будет https://github.com/yandex/ClickHouse/blob/8eee32cdd250d34499a60fb90eb72a528695c8b2/CHANGELOG_RU.md

Vladimir
26.06.2018
17:34:01
Господа, а есть возможность как-то гарантировать, что после вставки в таблицу данные сразу отразятся в materialized view?

Дмитрий
26.06.2018
17:36:07
Господа, а есть возможность как-то гарантировать, что после вставки в таблицу данные сразу отразятся в materialized view?
Вставка данных триггерит вставку в мат.вью, если вставка прошла успешно данные должны быть в матвьюхе

Vladimir
26.06.2018
17:36:47
Вставка данных триггерит вставку в мат.вью, если вставка прошла успешно данные должны быть в матвьюхе
Это будет видно сразу, без задержек? То есть, можно рассчитывать на атомарность операции вставки при таком раскладе?

nikita
26.06.2018
17:36:48
атомарно и синхронно? не может быть

Дмитрий
26.06.2018
17:43:53
Да, должно быть атомарно и синхронно. Из скитаний по коду помню, что сперва идет вставка в привязанные к таблице мат.вью и только затем в основную таблицу

Evgeny
26.06.2018
18:30:23
Коллеги, а кто работает с КХ из ноды - вы какой драйвер используете?

Vladimir
26.06.2018
18:45:30
альпу

Google
Evgeny
26.06.2018
18:46:55
А вы пробовали через него загружать массивы или запрашивать данные через промисы? Судя по коды оно не может работать (у меня и не работает)

Vladimir
26.06.2018
19:16:20
через querying?

у нас работает

но только чтение

и наверное не очень больших объемов

Evgeny
26.06.2018
19:19:44
syncParser: true?

Lex
26.06.2018
20:28:25
Итс лук лайк спам

Vladimir
26.06.2018
20:33:11
Anton
26.06.2018
22:08:49
Всем привет, а есть какой-нибудь способ сделать что-то вроде mysqldump?

Andrey
26.06.2018
22:18:31
Всем привет, а есть какой-нибудь способ сделать что-то вроде mysqldump?
Что-то вроде такого: clickhouse-client --query="SELECT * FROM table FORMAT Native" > table.native

формат по желанию

Anton
26.06.2018
22:19:04
Не, ну тут ок, а обратно?)

Andrey
26.06.2018
22:19:44
Не, ну тут ок, а обратно?)
clickhouse-client --query="INSERT INTO table FORMAT Native" < table.native

Anton
26.06.2018
22:19:55
Логично

Спасибо

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