@clickhouse_ru

Страница 680 из 723
Иван
29.09.2018
17:48:51
Аах) понятно

Ilya
29.09.2018
17:56:04
Уважаемые коллеги, какие общие рекомментации по установке max_concurrent_queries ? Хотим писать в БД очень и очень активно, стоит ли ставить перед ней какую-то очередь или можно выкрутить max_concurrent_queries на десятки тысяч?

Иван
29.09.2018
18:00:44
Проверьте, не исправлена ли эта проблема в последнем testing? (18.14.1) https://repo.yandex.ru/clickhouse/deb/testing/main/
Проверил, в 18.14.1 все работает как надо, ждем с нетерпение stable. Спасибо!

Google
Иван
29.09.2018
18:05:35
Еще вопрос, нормально что кх все время что то качает? примерно на 5гб в день?

Alexander
29.09.2018
18:05:36
в кх надо вставлять редко и много за раз, выкручивать бесполезно работат ьв итоге не будет
А вот кстати, как можно рассчитать оптимальный размер для вставки? Я тут вручную подбирал, получилось около 2-5k записей за раз.

Wolf
29.09.2018
18:06:01
ну расчитывайте на 1-4 вставки в секунду например на сервер

то есть поток за секунду поделите на 1-4 в зависимости от вкуса

Ilya
29.09.2018
18:07:02
понял, поставим очередь перед ним, спасибо!

Alexander
29.09.2018
18:07:26
понял, поставим очередь перед ним, спасибо!
Не очередь, а какой-то буффер....

Ilya
29.09.2018
18:08:11
ну, там парой: все наши сотни тысяч записей в очередь, а из очереди выгребает воркер(ы), пакует и шлет в КХ пачкой — я так это вижу

Alexander
29.09.2018
18:08:59
Кафка!

Ilya
29.09.2018
18:11:05
почему кафка?

Alexander
29.09.2018
18:11:49
Просто я с ней сейчас вожусь и она мне нравится. На самом деле просто к слову пришлось. Кроме того, у CH есть возможность интеграции с кафкой.

Ilya
29.09.2018
18:12:33
а, ну у нас кролик, тоже норм ? пока тьфу-тьфу

Alexander
29.09.2018
18:12:59
Но у меня есть вопрос к обществу. Как сделать доставку данных из кафки прямиком в CH? Сделать табличку с engine kafka и по крону делать insert .. select? Или есть более умные способы?

Я люблю ушастого, но то, с какими спецэффектами он разваливается в случае отсутствия 60% свободной памяти - меня, как админа, расстраивает.

Google
Alexander
29.09.2018
18:14:56
Ну, получается, данные будут материализоваться только по запросу клиента, или я что-то не правильно понимаю?

Michal
29.09.2018
18:16:12
а, ну у нас кролик, тоже норм ? пока тьфу-тьфу
У раббита вроде как нет гарантий доставки, и производительность пониже.

nikoinlove
29.09.2018
18:16:54
а у кого есть?)

Alexander
29.09.2018
18:17:01
У раббита вроде как нет гарантий доставки, и производительность пониже.
Вроде есть гарантия доставки. Производительность сильно пониже из-за громоздкого amqp.

Michal
29.09.2018
18:17:02
Alexander
29.09.2018
18:17:29
Если я правильно понял, то engine Kafka - это всего лишь, по факту, коннектор. Сам CH данные с кафки не забирает, пока не будет select. Соответственно кто-то должен триггерить апдейт mat view

Michal
29.09.2018
18:21:54
Можешь развернуть немного мысль?
Ну т.е. просто все что приезжает в Кафка будет видеть таблица с движком Кафки, и для каждого нового блока данных будет выполнять вставку в materialized view. Короче MV в данном сценарии позволяет просто сбрасывать поток сообщений в реальную таблицу практически в реалтайме.

Alexander
29.09.2018
18:22:22
Хм. Попробую на неделе, спасибо.

Т.е. таки это полноценный консьюмер.

Daniel
30.09.2018
09:21:17
Можно зарепортить самому

Alexander
30.09.2018
10:05:42
Привет. При использовании Kafka движка + MV, каким образом можно управлять периодичностью и объемом вставки? Например, как вставлять не менее 10к записей, не чаще одного раза в 5 сек?

Alexander
30.09.2018
10:15:12
Не очень понял. Если источник данных Kafka топик, то консьюмер при подключении сам забирает батч данных. Как часто он их запрашивает, решает сам консьюмер. В данной схеме - консьюмер это таблица КХ с движком Kafka

Roman
30.09.2018
10:22:01
Привет. При использовании Kafka движка + MV, каким образом можно управлять периодичностью и объемом вставки? Например, как вставлять не менее 10к записей, не чаще одного раза в 5 сек?
Кажется это то, что вы ищете: Для улучшения производительности полученные сообщения группируются в блоки размера max_insert_block_size. Если блок не удалось сформировать за stream_flush_interval_ms миллисекунд, то данные будут сброшены в таблицу независимо от полноты блока. https://clickhouse.yandex/docs/ru/operations/table_engines/kafka/

Alexander
30.09.2018
10:37:29
Точно, оно. Спасибо!

Wolf
30.09.2018
10:40:15
почему может не выполняться на новой версии запрос on cluster в конфиге ремоутс прописан пароль для дефолт юзера , на одном шарде выполнился а на втором нет? Progress: 2.00 rows, 116.00 B (2.05 rows/s., 118.62 B/s.) 49% Received exception from server (version 18.12.17): Code: 159. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000013 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background.

Mike
30.09.2018
12:49:02
Можно зарепортить самому
banofbot тут не хватает, вон выше умный спаммер Sweet Thang, ссылку в профиле спрятал

Vladimir
30.09.2018
14:16:03
Скажите а какой параметр отвечает за максимальный размер данных который можно пропихнуть через http запрос КХ?

Google
Kirill
30.09.2018
14:26:36
Кстати, насчет той же Kafka. А как себя поведет engine если случайно в очереди не JSON, а мусор записали? Где нибудь прикапывает такие сообщения как "unparsed" ?

Oleg
30.09.2018
14:27:43
Kirill
30.09.2018
14:28:46
принял, спасибо !

Ох, а я ведь правильно понял, что еще и exactly once не гарантируется? https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/Kafka/StorageKafka.cpp Ну то есть оффсеты не сохраняются в КХ вместе с данными и при очередном чтении просто берут из Kafka. прочитал && сложил в КХ & kill -9 && не закоммитил && at least once

я просто погрепал вызовы методов set_offset/assign partitions у librdkafka. 0 нашлось => на стороне consumer никто явно не управляет с какого оффсета на самом деле нужно читать

molo4ko
30.09.2018
15:20:43
микробатчинг и EOD вообще плохо совместимы, а если уж их запрятать в черный ящик, то лучше такого избегать

а без микробатчинга не выйдет писать, как положено, потому что либо записал и закоммитил, и куски выходят по 1 сообщению, либо рискуешь забатчить и получить at least once

когда я делал свою писалку, постарался как-то отлавливать partial failures, но до сих пор не уверен, что все работает, как нужно

high avaiability в лучшем виде)

Гурам
30.09.2018
15:29:15
Скажите а какой параметр отвечает за максимальный размер данных который можно пропихнуть через http запрос КХ?
Если я правильно понял вопрос, то скорее всего max_query_size в некотором смысле за это отвечает

Но это не относится конкретно к http

Kirill
30.09.2018
15:39:04
а без микробатчинга не выйдет писать, как положено, потому что либо записал и закоммитил, и куски выходят по 1 сообщению, либо рискуешь забатчить и получить at least once
не очень понял. offset монотонно растет, kafka engine мог читать N сообщений, напротив каждой партиции сохранять MAX(offset) вместе с данными. на старте, при инициализации consumer'a, забирать известный ему offset и проставлять явно, вне зависимости от того, что закоммичено в kafka. другое дело, если в силу особенностей КХ невозможно "транзакционно" и данные сохранить и оффсет прикопать, тогда да, ничего не поделать. разве что доп колонки напротив каждого сообщения topic:partition:offset делать

molo4ko
30.09.2018
15:42:15
не знаю, как работает kafka engine, но если атомарность вставки одного батча не гарантирована, то батчинг будет работать корректно только при условии отсутствия падений в середине записи

кажется, так

Kirill
30.09.2018
15:45:38
> атомарность вставки одного батча не гарантирована это что то новенькое, то есть INSERT не всегда атомарен? PS я только пару дней как знакомлюсь с КХ

Denis
30.09.2018
15:55:50
> атомарность вставки одного батча не гарантирована это что то новенькое, то есть INSERT не всегда атомарен? PS я только пару дней как знакомлюсь с КХ
Есть параметр max_insert_block_size, он задаёт сколько строк будет вставленно одним куском в одну партию одной таблицы. Если insert затронет две партиции, вставка будет атомарной на уровне партиции, но не самого инсерта целиком. Для insert select и кашки это регулируется другим параметром -- max_block_size, т.е. блок строк формируется при чтении. Также никаких гарантий для мат.вью, может записаться в саму таблицу и два вью из пяти.

Kirill
30.09.2018
16:02:19
понял, больше спасибо!

Denis
30.09.2018
16:06:00
Не понимаю как кто-то пользуется Кафка энжин, у меня вообще ничего не работает и не работало, даже на банальных тестах из 3 строк, но может я продьюс неправильно делаю. Или Кафка у меня не той системы.

Wolf
30.09.2018
16:31:07
@milovidov_an а может подскажете куда копать если он кластер не выполняется на втором шарде, сперва подумал в версии проблема, накатил ансиблом аналогичный тестовый стенд все выполняется он кластер без проблем , в system.clusters все реплики есть , порты все открыты клиентом и телнетом между серверам все коннектит , но на первом шарде запросы он кластер выполняются , даже если его запустить на репликах второго шарда, а на втором дает таймаут, при этом ошибок в еррор логе кх нет никаких на всех репликах , уже даже не знаю в какую сторону копать ↘️ Progress: 2.00 rows, 116.00 B (1.69 rows/s., 97.88 B/s.) 49%Received exception from server (version 18.12.17): Code: 159. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000015 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background.

при этом в дистрибьютед таблицы все запросы проходят нормально

Google
Wolf
30.09.2018
17:06:26
в целом по выводу выше видно что он не видит реплики второго шарда в активных , но как посмотреть какие активны и почему какие то не активны не очень понятно

По п.1 можно попробовать сделать select * from system.cluster
в этой таблице он не показывает какие реплики активны а какие нет.

Всем привет! У меня не работает создание таблички через CLUSTER ON, отваливается по таймауту Code: 159. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000016 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 12 unfinished hosts (0 of them are currently active), they are going to execute the query in background. Зукипер и репеликация работают. Порт 9000 и 9009 доступен всем тачкам. Все хосты резолвятся. В system.clusters все тачки есть. При старте нет ниниких ворнингов о ddl. В логах кликхауса только эксепшн: 0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x56d06c6] 1. /usr/bin/clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x22) [0x2da2d92] 2. /usr/bin/clickhouse-server(DB::DDLQueryStatusInputSream::readImpl()+0x1096) [0x4e450c6] 3. /usr/bin/clickhouse-server(DB::IProfilingBlockInputStream::read()+0x25a) [0x47680ea] 4. /usr/bin/clickhouse-server(DB::AsynchronousBlockInputStream::calculate(MemoryTracker*)+0x5e) [0x2db2f7e] 5. /usr/bin/clickhouse-server(ThreadPool::worker()+0x19e) [0x587246e] 6. /usr/bin/clickhouse-server() [0x930310f] 7. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7faea62876ba] 8. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7faea5ab041d] В логах зукипера вообще ничего не вижу. Куда копать ваще?
столкнулся с такой же проблемой удалось решить ?

Wolf
30.09.2018
17:20:04
нет
по инфе вижу что кх считает реплики второго шарда не активными , хотя с чего бы вдруг, и где это посмотреть и причины где искать тоже не понятно

Alex
30.09.2018
17:21:07
ну сообщайте если зарешаете)

Alexander
30.09.2018
18:48:02
https://github.com/Vertamedia/chproxy

Кто-нибудь пользовался?

Марат
30.09.2018
19:31:46
Извиняюсь заранее за возможно глупый вопрос. Проект написан на PHP с использованием Mysql базы данных. Проект связан с affiliate маркетингом. Как раз искали что-то подобное, т.к ожидается десятки миллионов записей в одной из таблиц. Использовали фреймворк Codeigniter. Там для работы с БД есть специальный класс. Как теперь переобуться и использовать clickhouse там, где он нужен?

https://github.com/8bitov/clickhouse-php-client

вот это я так понимаю подойдет для меня?

Gerasimov
30.09.2018
21:54:09
Подойдет скорее всего, но этот проект по живее выглядит: https://github.com/smi2/phpClickHouse

Andrey
30.09.2018
21:56:48
не понял:)
Вам выше посоветовали несколько библиотек, но важно помнить что у ClockHouse есть простой http интерфейс и с ним можно взаимодействовать напрямую. Это на случай если библиотеки не подойдут.

Andrey
30.09.2018
21:57:51
а как его найти?
Порт 8123, с ним же кстати и библиотеки эти взаимодействуют скорее всего

а как его найти?
https://clickhouse.yandex/docs/en/interfaces/http_interface/

Vadim
01.10.2018
06:54:17
Привет всем. Если на одном из серверов не хватает блоков, которые были ранее. Как заставить сервер скачать недостающие данные с реплики?

Aleksandr
01.10.2018
07:27:53
Можно CollapsingMergeTree(Sign) PARTITION BY .. ORDER BY (...)
привет, а репликация вот так ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/hits', '{replica}', sign)?

Google
Artem
01.10.2018
08:53:41
Привет всем. Если на одном из серверов не хватает блоков, которые были ранее. Как заставить сервер скачать недостающие данные с реплики?
какой engine? select показывает расхождение в данных? возможно куски смержились, вместо несколькоих старых появились новые, большего размера. Или более доугие, в зависимости от engine-а :)

terry
01.10.2018
09:26:50
добрый день а https://tabix.io/doc/Install/ , который клиент для clickhouse, может подключиться к ssl подключению clickhouse?

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