@clickhouse_ru

Страница 543 из 723
vladimir
29.05.2018
16:04:32
Я не про бизнес-метрики
Предлагаю продолжить в Церкви

Ivan
29.05.2018
16:05:22
Предлагаю продолжить в Церкви
Предлагаю просто свернуть флуд. В церковь не пойду)

Andrew
29.05.2018
16:06:02
атеист? // простите, не удержался)

Ivan
29.05.2018
16:07:56
атеист? // простите, не удержался)
Очень давно там устроили холливар про заббиксы с Алексеем)

Google
Andrew
29.05.2018
16:08:33
вот теперь точно флуд надо сворачивать ? заббикс - вечная тема)

Alexey
29.05.2018
20:01:44
Выложена презентация с BackendConf 2018: https://yandex.github.io/clickhouse-presentations/rit2018/#

Konstantin
29.05.2018
20:40:42
@nengchak не решил свою проблему с EOF reached for partition?

Egor
29.05.2018
23:10:56
@nengchak не решил свою проблему с EOF reached for partition?
Не у меня была такая, а другая,, с кафки на таблицу данные долго падали

Konstantin
29.05.2018
23:18:44
Не у меня была такая, а другая,, с кафки на таблицу данные долго падали
все верно, у нас прилетает по 100/200 сообщений и ждать надо очень долго пока в таблицу упадет. решили проблему?

Egor
29.05.2018
23:22:13
все верно, у нас прилетает по 100/200 сообщений и ждать надо очень долго пока в таблицу упадет. решили проблему?
Нет, пока все также, если данных много на кафку прилетает то все нормально.

А где чейнжлог на 1.1.54382 ? Что там поменяли?

Alexandr
30.05.2018
03:53:16
Всем привет, ребят, есть ли какие ты right way гайды, как делать отчеты из кликхауса + любая другая DB, т.е. несколько источников данных, и по ним надо делать всякие order, group, where…

есть идея заливать в кликхаус, но эти данные подвержены частым изменениям

Wolf
30.05.2018
03:55:22
Тогда кх не для вас

А как вы сейчас меняете сотни гигабайт данных?

Vasilij
30.05.2018
05:52:00
Привет! У нас используется кворумная запись (на 3 реплики) и select_sequential_consistency. И при дропе партиции на одной из реплик, последующий запрос говорит: DB::Exception: Replica doesn't have part .... which was successfully written to quorum of other replicas. Send query to another replica or disable 'select_sequential_consistency' setting.. Как правильно дропать партиции с такими настройками? Я что-то опасаюсь дальше дропать на остальных репликах...

И заодно: как вылечить теперь эту ситуацию? На крайний случай, я могу дропнуть всю таблицу на всех репликах, скорее всего это поможет. Но это пока она новенькая и её легко перезаполнить.

Google
Stanislav
30.05.2018
06:11:30
Похоже, поменялось поведение argMax

Ранее запроc вида: SELECT datetime, argMax(runningDifference(cpu), 0) AS cpu FROM telegraf.hosting2_users WHERE login = 'login' AND datetime > '$date1' AND datetime < '$date2' GROUP BY datetime ORDER BY datetime ASC выдавал только неотрицательные значения.

Сейчас: SELECT * FROM ( SELECT datetime, argMax(runningDifference(cpu), 0) AS cpu FROM telegraf.hosting2_users WHERE (login = 'c1133') AND (datetime >= 1525750000) GROUP BY datetime ORDER BY datetime ASC ) WHERE cpu < 0 ┌────────────datetime─┬───────────────cpu─┐ │ 2018-05-27 01:31:30 │ -383.349985351786 │ └─────────────────────┴───────────────────┘

Vasilij
30.05.2018
06:25:39
Привет! У нас используется кворумная запись (на 3 реплики) и select_sequential_consistency. И при дропе партиции на одной из реплик, последующий запрос говорит: DB::Exception: Replica doesn't have part .... which was successfully written to quorum of other replicas. Send query to another replica or disable 'select_sequential_consistency' setting.. Как правильно дропать партиции с такими настройками? Я что-то опасаюсь дальше дропать на остальных репликах...
Это была последняя по времени добавления партиция, соответственно, на всех репликах она дропнулась (replication_alter_partotion_sync=2. если что), а в зоокипере по пути /clickhouse/tables/кластер/имя таблицы/quorum в параметре last_part имя этой дропнутой партиции осталось. Я так понимаю, при консистентном селекте на это и ругаются. Это баг (сделать issue?) или я просто неправильно что-то делаю?

Konstantin
30.05.2018
08:48:19
Уже вроде спрашивали, но давно и ответа не видно. В кафку падают сообщения по 100/200 в секунду. Далее импортируется в КХ движком Kafka в MergeTree. Но из-за малого объема данных импорт происходит крайне редко, вроде бы когда сообщений 65536 (но это не точно, бывает и больше и меньше). Пробовал крутить параметры librdkafka - ничего не поменялось. Да, история не совсем про КХ (с большим количеством данных), но хочу понять - данное поведение нельзя изменить для импорта малого количества данных, чтоб не ждать по пол дня?

Sergei
30.05.2018
09:28:08
есть идея заливать в кликхаус, но эти данные подвержены частым изменениям
Какого рода изменениям ? Есть такой движок aggregatedmergetree, посмотрите, может подойдёт

Vitaliy
30.05.2018
10:40:32
А где чейнжлог на 1.1.54382 ? Что там поменяли?
https://github.com/yandex/ClickHouse/blob/master/CHANGELOG.md

Egor
30.05.2018
10:57:39
Alex
30.05.2018
10:58:54
ТАм не вижу
Версия 54382 не релизилась. Можно считать, что её нет.

Slava
30.05.2018
11:02:22
а в каком номере релиза ожидается delete, в таком случае?

Alex
30.05.2018
11:09:19
В следующем.

Не номере, а релизе. Номер может быть любой больший.

Daniel
30.05.2018
11:34:49
Мы тут тестируем разного рода аварийные ситуации, заметили, что некоторые старые таблицы (возрастом больше недели), в которые давно никто не пишет и используются только для селектов, покараптились. Вычитал про Freeze partition. Есть два вопроса: 1) Почему покараптились данные? Из-за постоянных попыток слияний? Таблица MergeTree 2) Freeze partition поможет остановить write операции на старых данных, где оптимизировать-сжимать больше нечего?

Daniel
30.05.2018
11:38:17
В логах появились такие записи: 2018.05.28 12:06:07.721545 [ 1 ] <Error> testdb.log_2017_07 (Data): Detaching broken part /opt/clickhouse-data/data/testdb/log_2017_07/20170707_20170712_3491_6873_5 because it covers less than 2 parts. You need to resolve this manually

грубо говоря, сервер вынуждали зависать и выдёргивали из розетки

попробовал команду freeze на неизменяющейся таблице для одной из партиций. но почему-то вместо хардлинков в shadow был создан один файлик # ls -l total 4 -rw-r----- 1 clickhouse clickhouse 2 May 30 15:09 increment.txt чяднт?

но у нас датадир не /var/lib/clickhouse/ а свой, в /opt, права все выставлены

О, разобрался. Мануал говорит, что в FREEZE надо использовать name, я и использовал имя из колонки name из system.parts. А надо было имя из колонки partition вида 201710

Google
Pavel
30.05.2018
12:48:21
Помогите разобраться, может кто сталкивался. поднято 2 ch, как один шард с двумя репликами и 2 zookeeper, все в докере. На запрос на первом сервере CREATE TABLE zootest ON CLUSTER ch ( day Date DEFAULT toDate(created), query String, type String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/zootest', '{replica}', day, (day, type), 8192) получаю ошибку DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000000 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. По логам на втором сервере вижу только 2018.05.30 12:45:15.313603 [ 2 ] <Debug> DDLWorker: Cleaning queue 2018.05.30 12:45:15.318869 [ 2 ] <Debug> DDLWorker: Processing tasks 2018.05.30 12:45:15.339531 [ 2 ] <Debug> DDLWorker: Will not execute task query-0000000000: There is no a local address in host list 2018.05.30 12:45:15.339584 [ 2 ] <Debug> DDLWorker: Waiting a watch Понимаю, что чего-то не хватает, но чего?

Евгений
30.05.2018
13:08:41
Помогите разобраться, может кто сталкивался. поднято 2 ch, как один шард с двумя репликами и 2 zookeeper, все в докере. На запрос на первом сервере CREATE TABLE zootest ON CLUSTER ch ( day Date DEFAULT toDate(created), query String, type String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/zootest', '{replica}', day, (day, type), 8192) получаю ошибку DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000000 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. По логам на втором сервере вижу только 2018.05.30 12:45:15.313603 [ 2 ] <Debug> DDLWorker: Cleaning queue 2018.05.30 12:45:15.318869 [ 2 ] <Debug> DDLWorker: Processing tasks 2018.05.30 12:45:15.339531 [ 2 ] <Debug> DDLWorker: Will not execute task query-0000000000: There is no a local address in host list 2018.05.30 12:45:15.339584 [ 2 ] <Debug> DDLWorker: Waiting a watch Понимаю, что чего-то не хватает, но чего?
1. Зукиперов должно быть не четное число 1,3 и т.д. Так как если один отвалиться , не сможет пройти кворум 2. Реплицируемую таблицу нужно отдельно создавать на каждой ноде CH. (Без ON CLUSTER ch). И на каждой ноде макрос {replica} должен быть разный

Alexey
30.05.2018
13:12:13
2. реплицируемая таблица с макросами прекрасно создается с запросом ON CLUSTER

если все правильно настроено

Евгений
30.05.2018
13:14:54
Кластер зукипера не сможет выбрать лидера и реплицируемая таблица станет readonly

Wolf
30.05.2018
13:15:19
если два отвалится то просто встанут реплицируемые таблицы

Денис
30.05.2018
13:15:23
Wolf
30.05.2018
13:15:36
зукиперов живых должно быть больше чем мертвых не более того

если у вас 3 зк, то 2 живых минимум, если 5 зк, то три живых

Евгений
30.05.2018
13:17:24
То можно

Pavel
30.05.2018
13:51:10
1. Зукиперов должно быть не четное число 1,3 и т.д. Так как если один отвалиться , не сможет пройти кворум 2. Реплицируемую таблицу нужно отдельно создавать на каждой ноде CH. (Без ON CLUSTER ch). И на каждой ноде макрос {replica} должен быть разный
Убрать ON CLUSTER частично помогло, но похоже, что проблема была не в нем. В докер контейнер я пробрасываю фейковый hostname, чтоб было понятно, на какой машине я нахожусь, так кликхаус его использует для поднятия соединения, судя по логу: 2018.05.30 13:45:32.521258 [ 11 ] <Error> default.zootest (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found: clickhouse-1-2, e.what() = Host not found

nikoinlove
30.05.2018
14:00:57
2018.05.30 16:59:19.110988 [ 96209 ] <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, e.what() = Connection reset by peer а что это и почему у меня весь лог этим завален ?)

Alexey
30.05.2018
14:08:34
грубо говоря, сервер вынуждали зависать и выдёргивали из розетки
Да, это возможно, если данные из ФС не сбросились на диск за время жизни старых кусков, оставшихся после мержа (по-умолчанию, 8 минут). Если таблица реплицированная, то всё восстановится автоматически. Если нет - надо либо увеличить old_parts_lifetime в config.xml, секция merge_tree. См. описание в файле MergeTreeSettings.h. Либо изменить параметры в /proc/sys/vm/...

Gennady
30.05.2018
14:39:42
Алексей, расскажите, если можно, поподробнее, как данные сбрасываются на диск? Есть ли механизмы, подобные write-ahead-log + checkpoint, которые защищают от потери данных при выключении питания?

Google
Alexey
30.05.2018
15:11:39
Понятно. А есть ли какие-то тёмные стороны у уменьшения old_parts_lifetime, кроме повышения IO диска?
Наоборот, для надёжности надо увеличить old_parts_lifetime, а не уменьшить. Будет расходоваться больше места для недавно померженных данных.

Daniel
30.05.2018
15:15:12
Наоборот, для надёжности надо увеличить old_parts_lifetime, а не уменьшить. Будет расходоваться больше места для недавно померженных данных.
О, я кажется понял, что у нас случилось. Диск был очень загружен, на него шла запись из памяти померженых кусков, она ввиду тормозов диска заняла больше 8 минут, старые куски на диске удалились, а новые ещё не записались и сервер в этот момент был выключен. ?️?

Alexey
30.05.2018
15:16:45
Да.

Daniel
30.05.2018
15:31:53
Да.
old_parts_lifetime в xml указывается же в секундах? или надо в формате 15*60, как в коде? там M(SettingSeconds, old_parts_lifetime, 8 * 60)

Gennady
30.05.2018
15:36:42
Нет.
Спасибо, тогда другой вопрос: выключение питания сервера при активной записи на диск может привести к потере всех данных в таблице/партиции и можно ли застраховаться от этого?

Daniel
30.05.2018
15:38:59
Спасибо, тогда другой вопрос: выключение питания сервера при активной записи на диск может привести к потере всех данных в таблице/партиции и можно ли застраховаться от этого?
И чисто архитектурный вариант, не хранить всё в одной таблице, а разбиват данные на дневные, часовые, минутные - и их партиции фризить. Фризы из папки shadow в датадире clickhouse можно рсинкать куда-нибудь даже

Alexey
30.05.2018
15:43:01
Спасибо, тогда другой вопрос: выключение питания сервера при активной записи на диск может привести к потере всех данных в таблице/партиции и можно ли застраховаться от этого?
Может привести к потере данных, которые не были фактически записаны на диск. Обычно это - недавно записанные в таблицу данные. Для надёжной работы обязательно необходимо использовать реплики. Желательно иметь реплики в географически распределённых локациях.

Alexey
30.05.2018
15:50:05
INSERT возвращает клиенту успех после того, как данные записаны на файловую систему. При этом fsync не делается, и данные, записанные на файловую систему, могут быть ещё не записаны на диск. Данные реплицируются сразу после INSERT, то есть, могут быть реплицированы, когда ещё не записаны на диск ни на одной реплике.

Daniel
30.05.2018
15:56:06
В виде одного числа - в секундах.
Прописал, перезапустил сервис. Параметр появился в config-preprocessed.xml , но если сделать select * from system.settings where changed; изменение параметра не отображается. Или и не должно в случае с old_parts_lifetime ? ClickHouse server version 1.1.54362

Alexey
30.05.2018
15:56:47
Это не настройка запроса/пользователя/сессии. Поэтому в system.settings нет.

Kirill
30.05.2018
18:03:44
Формат хранения допустит, что что вся таблица/партиция станет логически неверной после аварии и восстановления питания?
Допустит, внутри всё хранится куда мельче чем таблица/партиция. Если на реплику кусок уехал то проблемный сервер после включения увидит что с данными не все впорядке и скачает кусок/куски с реплики и всё будет ОК

Google
Alex
30.05.2018
18:05:31
коллеги, подскажите пожалуйста а сейчас есть механизмы чистки зукипера от давно померших реплик?

Alex
30.05.2018
18:08:15
то есть костыликами?)

Maksim
30.05.2018
18:09:01
Мм, не вижу тут ничего костыльного

Alex
30.05.2018
18:09:41
ну по идее мы лезем в те структуры которые принадлежат приложению кх

Maksim
30.05.2018
18:10:11
И да и нет

Части от мертвых реплик уже не принадлежат приложению

Но они находятся в структуре кх

Alex
30.05.2018
18:11:26
ладно это религиозный спор, встроенных средств как я понимаю нет

Wolf
30.05.2018
18:12:02
Ну вариантов нет, ибо кх сам не знает что оно умерло, так как сервер с репликой видимо из за железа умер

А так прекрасно работает стандартное удаление из кх и автоматом чистится зукипер

Все таки железная смерть сервера не такое частое явление

Alex
30.05.2018
18:18:57
Все таки железная смерть сервера не такое частое явление
у меня динамический кластер, смерть это часть жизни ))

Kirill
30.05.2018
18:19:41
коллеги, подскажите пожалуйста а сейчас есть механизмы чистки зукипера от давно померших реплик?
У меня есть такая штука в рамках одного разрабатываемого проекта, её нужно доточить и вынести как отдельную тулзу

Alex
30.05.2018
18:20:13
и скажем по дефолту сделать месяц,а в динамических окружениях например пару дней хватит

Wolf
30.05.2018
18:20:52
у меня динамический кластер, смерть это часть жизни ))
Ну так перед смертью просто делайте дроп тейбл

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