@clickhouse_ru

Страница 89 из 723
Vladimir
15.03.2017
07:41:08
Читая eng КХ чатик возник вопрос - я так понимаю что будет переделка вертикального алгоритма? Или это только касается того случая?

Геннадий
15.03.2017
07:50:49
после перезапуска CH, таблица удалилась

но интересно что я мог сделать не так

Vitaliy
15.03.2017
09:36:22
Читая eng КХ чатик возник вопрос - я так понимаю что будет переделка вертикального алгоритма? Или это только касается того случая?
Тут речь идет о исправлении возможно присутсвующего в нем бага, вызывающего bad size of marks file.

Google
Vladimir
15.03.2017
10:04:05
Тут речь идет о исправлении возможно присутсвующего в нем бага, вызывающего bad size of marks file.
Да я понял. Поэтому и спросил. Так как смотря тот чат и этот можно проследить увеличение подобного рода ошибок.

Alexey
15.03.2017
11:03:29
Технически проблема не совсем в вертикальном алгоритме, а кое в чём рядом. Разбираемся. Надеюсь, удастся сделать фикс в течение пары дней.

Andrew
15.03.2017
12:49:05
Привет! А нет у кого-нибудь наработок по шедулеру поверх ClickHouse? Задача такая: в очередь задач CH поступает N рассчетных задач (текстовых запросов CH), все одновременно в CH не влезают по квоте. Нужно приоритезировать, отдавать статус, иметь возможность прийти и забрать результат (большой) по готовности. Python

Геннадий
15.03.2017
12:49:21
что то я не могу понять в чём причина :) 1. Создаю таблицы CREATE TABLE wssg.sales_access_logs_local (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{logsshard}/sales_access_logs', '{replica}', Date, (TimeStamp, UserId), 8192) CREATE TABLE wssg.sales_access_logs (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = Distributed(logs, wssg, sales_access_logs, rand()); 2. начинаю писать в distributed таблицу wssg.sales_access_logs по 10к записей кликхаус возвращает 200 3. делаю запрос select count() from wssg.sales_access_logs получаю: Code: 202, e.displayText() = DB::Exception: Received from clickhouse5:9000, 192.168.231.6. DB::Exception: Received from clickhouse2:9000, 192.168.231.1. DB::Exception: Received from clickhouse5:9000, 192.168.231.6. DB::Exception: Received from clickhouse9:9000, 192.168.231.101. DB::Exception: Too much simultaneous queries. Maximum: 100. 4. вставка ломается 5. в процессах весит несколько строк вида 1 default 035982a2-a96a-4f21-ae43-b14bb58204ea ::ffff:192.168.231.106 53530 default 035982a2-a96a-4f21-ae43-b14bb58204ea ::ffff:192.168.231.106 53530 1 Clickhouse7.sys-msk.kontur-extern.ru ClickHouse Distributed_default@192%2E168%2E231%2E101:9000 1 1 54164 0 0.395845127 0 0 0 1 388 1146490 INSERT INTO wssg.sales_access_logs (Date, TimeStamp, HostName, Method, UriPath, UriParam, HttpStatus, UpstreamTime, RecieveBytes, UserId, Ip, SessionId, AuthType, AuthSource, UserIpHash, UserUriPathHash, UserUriHash, UserUriIpHash, UserSessionHash, UserSessionIpHash, UserSessionUriPathHash, UserSessionUriHash, UserSessionUriIpHash) FORMAT Values 6. запросы в другую таблицу на этом же кластере отрабатывают нормально

Геннадий
15.03.2017
12:52:50
лог с одной из нод

Andrew
15.03.2017
12:53:02
да тут сам по себе кликхаух не причем. Берите любую очередь и юзайте. Зачем уж из него комбайн то делать?
Андрей, а можете накидать примеров? Я собственно и спрашиваю про надстройку поверх)

Геннадий
15.03.2017
12:53:27
подскажите как выяснять причину?

Andrey
15.03.2017
12:54:11
Андрей, а можете накидать примеров? Я собственно и спрашиваю про надстройку поверх)
avtivemq, rabbitmq и практически любая mq с подержкой приоритетов

Dmitry
15.03.2017
13:05:48
>2. начинаю писать в distributed таблицу wssg.sales_access_logs по 10к записей на всякий случай - 10к это очень мало. Лучше 100к - 1кк

В вашем кейсе (ключ шардирования rand()) я бы вообще не рекомендовал вставлять через Distrubuted таблицу, делайте вставку напрямую в таблицу с данными на случайной реплике

Когда Distubuted таблица отдаёт 200, это не значит что данные уже вставлены в таблицы с данными. Она сохраняет данные локально, а потом асинхронно пишет данные в реплики

Это и создаёт большое количество запросов

Google
Геннадий
15.03.2017
13:12:35
Samat
15.03.2017
13:42:53
Привет. У нас в Медузе есть своя внутренняя статистика просмотров материалов. На каждый хит на клиентах мы делаем GET определенного урла. Хиты собираются в пачки и раз в пару минут инкрементят значения просмотров материалов в mysql табличке. Хитов около 60млн в месяц. Читаем из таблицы только для внутренней админки, как батч так и отдельные урлы. В батче максимум 100 урлов, максиммальный RPM = 3000 (30 пользователей внутреннней админки). Вопросы: 1) это нормальный юзкейс для кликхауса? 2) сколько нам железа потребуется?

3) на какой latency на чтение стоит рассчитывать?

Andrey
15.03.2017
13:44:30
Вам как раз summingmergetree подойдет )

Dmitry
15.03.2017
13:44:38
А в админке просто данные выводите, без агрегации?

Ну т.е. цифорки

В общем это нормальный кейс для КХ и можно вполне хранить и каждый хит отдельно

60 млн записей в месяц - это очень мало, хватит одного сервера без шардов

Естественно лучше с репликами

Andrey
15.03.2017
13:49:33
Причем сервер то даже не особо такой лютый нужен. У меня по 232млн записей по лайку фильтрует за 1.066 sec. И это на виртуалке 4CPU/20Gb Ram

Dmitry
15.03.2017
13:50:37
latency - надо смотреть на реальных запросах, порядок несколько сотен милисекунд

Samat
15.03.2017
14:29:46
Аналитикс задержка большая. Хочется отдельную простую систему, на случай непоняток

Просто это сильно не несколько сотен миллисекунд

Andrey
15.03.2017
14:32:25
Это один урл лайк за 1.066? А если несколько параллельно запросить? А батч?
Да, это один like по string полю по таблице с 232млн записями. Но у меня это все на виртуалке. Да и кейс для CH наверное не самый типичный

Dmitry
15.03.2017
14:41:14
papa
15.03.2017
14:43:26
Это один урл лайк за 1.066? А если несколько параллельно запросить? А батч?
я сделал только что по метрике по некоторому новостному сайту запрос за топ-10 урлов, по 48М просмотров отрабатывает за 2-3с.

а под батчем вы что имеете в виду?

c sample 0.1 топ тот же, время 1с.

Google
Vladimir
15.03.2017
14:45:46
Добрый день! Появился вопрос по запросу. Подскажите, пожалуйста. Если я хочу сделать выборку количества событий клиентов в некотором диапазоне времени поминутно, я делаю такой запрос: SELECT toStartOfMinute(toDateTime(ts_start)) as time, uniqCombined(client_id) as clients, sum(sign) as events FROM events WHERE dt < toDate('2017-03-15 14:10:05') AND dt >= toDate('2017-03-14 14:10:05') GROUP BY time WITH TOTALS HAVING clients < 1000 ORDER BY time ASC Но проблема в том, что, если событий за какую-то из минут не было, то в данных будет пробел. А мне необходимо получить хотя бы нулевое значение за каждую из минут диапазона. Как закрыть эти пробелы в данных нулевыми stub-данными?

Такое вообще возможно в КХ или лучше делать постобработку на каком-то языке программирования?

papa
15.03.2017
14:47:40
можно сделать left join, можно сделать его потом руками.

Vladimir
15.03.2017
14:47:50
А left join на что?

Если данных за какой-то диапазон нет совсем. А нужно получить там 0

papa
15.03.2017
14:50:03
возможно на что-то такое. SELECT arrayJoin(arrayMap(m -> (toStartOfMinute(toDateTime('2017-03-14 14:10:05')) + (m * 60)), range(1440))) AS m

точнее это должно быть слева.

а данные справа.

Xakki
15.03.2017
15:18:01
/stat@combot

Combot
15.03.2017
15:18:01
combot.org/chat/-1001080295593

Samat
15.03.2017
15:37:36
А Метрика?
Нужна простая как полено система, чтобы быть уверенным, как себя ведет основной показатель

Combot
15.03.2017
16:04:52
combot.org/chat/-1001080295593

Vladislav
15.03.2017
21:22:38
Всем привет. Подскажите, плиз, можно ли как-то штатными методами поменять формат вывода даты из 2017-03-03 18:00:00 в 03-03-2017 18:00:00+0300

Требуется из кликхауса сделать выгрузку конверсий в CVS и скормить ее adwords. Прогонять через скрипт\excel ради формата дат очень не хочется=(

select concat( toString(toDayOfMonth((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60))),'.', toString(toMonth((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60))),'.', toString(toYear((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60))),' ', toString(toHour((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60))),':', toString(toMinute((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60))),':', toString(toSecond((toDateTime(concat(toString(eventDate),' ',toString(eventHour),':00:00'))+60*60)))) from Stats Пока только так придумал

papa
15.03.2017
22:54:09
toString(eventHour) работает для 0-9?

Alexey
16.03.2017
04:42:00
См. фукнцию replaceRegexpOne, там есть пример.

Алексей
16.03.2017
08:04:45
Коллеги добрый день! Подскажите, пожалуйста, как починить DB::Exception: Database null doesn't exist, e.what() = DB::Exception

Andrey
16.03.2017
08:05:09
Привет, покажи запрос

Google
Andrey
16.03.2017
08:05:43
случайно не через webgui ходишь?

Алексей
16.03.2017
08:05:52
select * from system.replication_queue

через него

Nikita
16.03.2017
08:06:07
/stat@combot

Combot
16.03.2017
08:06:08
combot.org/chat/-1001080295593

Andrey
16.03.2017
08:06:43
попробуй выбрать слева базу, а потом запустить запрос. Ошибка говорит о том что не пришло имя базы/пришло имя null.

Алексей
16.03.2017
08:09:32
Перегрузил очередной раз клиент, сработало.

Спасибо

И еще вопрос, есть два инстанса в реплике после падения одного и восстановления получили Table is in readonly mode как починить подскажите?

Alexey
16.03.2017
09:38:25
И еще вопрос, есть два инстанса в реплике после падения одного и восстановления получили Table is in readonly mode как починить подскажите?
В конфигурационном файле нет ZK, либо в данный момент невозможно установить сессию с ZK. Посмотрите в логе по словам readonly или read-only.

Алексей
16.03.2017
10:04:18
Спасибо, clickhouse роняет ZK, причину пока не выяснили

Peter
16.03.2017
11:56:39
А правильно (возможно) ли создавать MATERIALIZED VIEW на основе select с join, и вложенными select запросами, или только на основе одной таблицы ? Потому что после того как создаю, вставка в таблицы которые задействованные в запросе выдает ошибку (DB::Exception: Not found column value in block. There are only columns)

Юрий
16.03.2017
12:05:32
/stat@combot

Combot
16.03.2017
12:05:33
combot.org/chat/-1001080295593

Dmitriy
16.03.2017
12:21:26
Доброго времени суток. Подскажите пожалуйста, где можно подробно почитать как настраивать CH с graphite. немогу понять к чему относяться вот эти параметры *regexp* и *function* <graphite_rollup_example> <pattern> <regexp>click_cost</regexp> <function>any</function> <retention> <age>0</age> <precision>3600</precision> </retention> <retention> <age>86400</age> <precision>60</precision> </retention> </pattern> Я добился того что кликхаус пишет в graphite, но как бы понять правильно ли он это делает.

Dmitry
16.03.2017
12:22:59
что значит КХ с графит? Нужно что бы КХ отправлял свои метрики в графит?

Dmitry
16.03.2017
12:46:37
rollup это вообще для другого

Это для таблиц GraphiteMergeTree, которые нужны что бы использовать КХ как хранилище для графита

Google
Dmitry
16.03.2017
12:47:21
Что бы отправлять в графит достаточно примерно вот такого конфига <yandex> <use_graphite>true</use_graphite> <graphite> <host>127.0.0.1</host> <use_fqdn>true</use_fqdn> <port>42000</port> <root_path>one_min</root_path> <timeout>0.1</timeout> </graphite> </yandex>

метрики будут привезжать в root_path.имя_хоста.CLickHouse

Dmitriy
16.03.2017
12:48:44
ага. в графите я вижу вот такое



Dmitry
16.03.2017
12:49:30
Да, всё верно

Dmitriy
16.03.2017
12:58:52
спасибо. буду теперь добавлять графики в графану.

к стати когда меняешь эти параметры <yandex> <use_graphite>true</use_graphite> <graphite> <host>127.0.0.1</host> <use_fqdn>true</use_fqdn> <port>42000</port> <root_path>one_min</root_path> <timeout>0.1</timeout> </graphite> </yandex> то приходится перезагружать службу КХ что зработало

Dmitry
16.03.2017
13:15:30
Не все изменения применяются без рестарта

Геннадий
16.03.2017
14:44:51
@milovidov_an Алексей, здравствуйте. Поясните, пожалуйста, такой момент. 1. создал две таблицы CREATE TABLE wssg.sales_access_logs_local (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{logsshard}/sales_access_logs', '{replica}', Date, (TimeStamp, UserId), 8192) CREATE TABLE wssg.sales_access_logs (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = Distributed(logs, wssg, sales_access_logs, rand()); 2. начал писать в Distributed таблицу и select из неё же, появились ошибки, что типа привышен лимит одновременных запросов. В списке процессов были вставки в Distributed таблицу. 3. мне подсказали, что лучше вставлять в локальные таблицы. 4. решил удалить созданные талицы. Локальные удалились нормально, а вот Distributed только после перезапуска нод clickhouse. После этого в списке процессов было пусто. 5. создал снова таблицы. сделал show processlist, и там опять вставка в Distributed таблицу. что то я не понимаю как работает система :) Расскажите, пожалуйста.

*после 4-го пункта я не запускал запись

Dmitriy
16.03.2017
14:51:53
А разве можно так создавать распределенную таблицу? CREATE TABLE ontime_all AS ontime_local ENGINE = Distributed(perftest_3shards_1replicas, default, ontime_local, rand()); пример с хабра. А чем вы инсертите данные?

Геннадий
16.03.2017
14:54:20
По http, .net клиентом

У меня таким же образом заливается другая таблица, все норм

меня больше удивляет от куда взялись запросы на вставку после пересоздания. Может какой то oplog надо почистить

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