
Daniel
11.10.2018
18:32:39
В метро еду, не терпится узнать ?
Ладно, проверю напишу, если никто такого не проворачивал

Victor
11.10.2018
18:33:14

Daniel
11.10.2018
18:33:41

Google

Denis
11.10.2018
18:45:45

Alexey
11.10.2018
18:50:17

Victor
11.10.2018
18:51:10

Daniel
11.10.2018
18:56:19

Mах
11.10.2018
18:56:40
@stufently, всё-таки не могу осилить ZK. Помогите пожалуйста.
Схема 2 хоста, 2 шарда, 4 машины.
ZK должен работать на одной или на четырех?

Daniel
11.10.2018
18:57:08

Wolf
11.10.2018
18:57:29


Daniel
11.10.2018
19:09:58
@stufently, всё-таки не могу осилить ZK. Помогите пожалуйста.
Схема 2 хоста, 2 шарда, 4 машины.
ZK должен работать на одной или на четырех?
почитайте от корки до корки, там немного https://zookeeper.apache.org/doc/r3.4.5/index.html
для работы с Clickhouse нужен один кластер ZK из не менее чем 3 членов кластера ZK. В конфиге каждого кликхауса должны быть прописаны адреса каждого узла ZK.
в целом есть такая тема, что КХ вроде как лучше работает с доменными именами, а не с IP в конфигах.
не нужно поднимать DNS, достаточно на каждом сервере из комплекса прописать в hosts пару хостнейм-IP, и всё, приложения уже могут работать с доменными именами этими.
upd Мне вот 20, ответственно заявляю, ничего сложного в КХ нет, надо просто посидеть, почитать документацию, поскать по истори чата и в гугле... после реляционных немного необычно только.


Mах
11.10.2018
19:10:50
почитайте от корки до корки, там немного https://zookeeper.apache.org/doc/r3.4.5/index.html
для работы с Clickhouse нужен один кластер ZK из не менее чем 3 членов кластера ZK. В конфиге каждого кликхауса должны быть прописаны адреса каждого узла ZK.
в целом есть такая тема, что КХ вроде как лучше работает с доменными именами, а не с IP в конфигах.
не нужно поднимать DNS, достаточно на каждом сервере из комплекса прописать в hosts пару хостнейм-IP, и всё, приложения уже могут работать с доменными именами этими.
upd Мне вот 20, ответственно заявляю, ничего сложного в КХ нет, надо просто посидеть, почитать документацию, поскать по истори чата и в гугле... после реляционных немного необычно только.
Спасибо.


Wolf
11.10.2018
19:13:24
почитайте от корки до корки, там немного https://zookeeper.apache.org/doc/r3.4.5/index.html
для работы с Clickhouse нужен один кластер ZK из не менее чем 3 членов кластера ZK. В конфиге каждого кликхауса должны быть прописаны адреса каждого узла ZK.
в целом есть такая тема, что КХ вроде как лучше работает с доменными именами, а не с IP в конфигах.
не нужно поднимать DNS, достаточно на каждом сервере из комплекса прописать в hosts пару хостнейм-IP, и всё, приложения уже могут работать с доменными именами этими.
upd Мне вот 20, ответственно заявляю, ничего сложного в КХ нет, надо просто посидеть, почитать документацию, поскать по истори чата и в гугле... после реляционных немного необычно только.
Ну это же не так, кх может работать вообще без зк, может работать просто с одним сервером зк без каких либо его кластеров, может работать с кластером зк из двух зк, что тоже меньше трёх

Daniel
11.10.2018
19:14:38

Google

Wolf
11.10.2018
19:15:23
Ну я написал как минимум три варианта которые противоречат вашему отверждению причем два из них для реплик

Daniel
11.10.2018
19:16:08
пусть сразу привыкают к минимально жизнеспособным топологиям

Yuran
11.10.2018
19:16:42
Зукипер на одной ноде поднимать очень странно. Если не нужна репликация, то используйте просто MergeTree, он даже немного более удобный в эксплуатации заодно

Wolf
11.10.2018
19:17:15
Школьники делают лабораторную работу

Yuran
11.10.2018
19:17:24
А если репликация нужна, то поднимать его надо на 3 или даже 5 узлах, но ни в коем случае не на 4, потому что всегда должен быть majority

Mах
11.10.2018
19:17:47

Yuran
11.10.2018
19:17:59
Тогда на 3 нодах

Wolf
11.10.2018
19:18:01

Yuran
11.10.2018
19:18:26
Если этот 1 инстанс выйдет из строя, то будет потом больновато

Wolf
11.10.2018
19:18:48
Школьники не могут с одним зукипером поднять кх а вы ещё больше запутываете

Yuran
11.10.2018
19:18:58
В случае с 2 инстансами зукипера надежность всё еще как с одним — выйдет из строя один и всё

Mах
11.10.2018
19:19:08

Yuran
11.10.2018
19:19:15
Поэтому нужно минимум 3

Wolf
11.10.2018
19:19:15

Yuran
11.10.2018
19:19:50
Их потом могут начать цитировать и использовать уже в реальном продакшене

Wolf
11.10.2018
19:20:22
Плохой совет тут как раз ваш, когда человек пропишет один зк и у него все заработает ему станет ясно что как и куда

Yuran
11.10.2018
19:20:45
И только потом, когда всё упадет, он узнает, зачем нужно было 3 ноды

Daniel
11.10.2018
19:20:56

Google

Wolf
11.10.2018
19:22:45
Ну в итоге они слушают ваши советы и реплики соответственно у них работать не будут как всегда

Yuran
11.10.2018
19:24:37
Пусть учатся сразу делать нормально :). Очень пригодится потом при эксплуатации в реальности
Ну и к тому же зачастую КХ имеет смысл использовать вообще без репликации и зукипера

?
11.10.2018
19:25:06
да они пока не справляются :) пусть начнут с одного, все-таки

Yuran
11.10.2018
19:25:32
отдавая себе отчет в том, что потеря любого узла будет означать потерю данных
во многих кейсах использования КХ это тоже приемлемо
И эту схему настроить намного проще :)

Denis
11.10.2018
20:28:40
насколько я понимаю 4 зукипера могут быть, но просто это малосмысленно.
имхо
6 зукиперов (кворум половина+ = 4) -- переживет выход из строя 2
5 зукиперов (кворум половина+ = 3) -- переживет выход из строя 2
4 зукипера (кворум половина+ = 3) -- переживет выход из строя 1
3 зукипера (кворум половина+ = 2) -- переживет выход из строя 1
2 зукипера (кворум половина+ = 2) -- переживет выход из строя 0

Daniel
11.10.2018
20:29:38

Denis
11.10.2018
20:30:44
каждая!!! транзакция подтверждает кворумом (большей половиной).
если останется два зукипера из 4 и только два подтвердят что они готовы комитить, ничего не будет, кворума нет.

Wolf
11.10.2018
20:47:13

Yuran
11.10.2018
20:47:28
Cкажем так, конфигурации с четным числом нод довольно мало смысла имеют
Потому что в случае с четным числом машин ещё одна машина по сравнению с нечетным количеством не дает улучшения отказоустойчивости
И вводит в заблуждение, более того
Т.е. да, в случае с 4 нодами всё равно кворум будет достигаться только если есть 3 машины из 4, то есть потерять можно только одну ноду
Но вероятность потерять ноду будет выше в конфигурации с 4 узлами, чем с 3 (каждая нода может выйти из строя с одинаковой вероятностью, и для маленьких чисел вероятности будут просто складываться), поэтому лучше такую конфигурацию не делать

Denis
11.10.2018
21:09:10
4 ноды zk ВСЕГДА медленее чем 3. Больше 3 нод в ансамбле, это дополнительные тормоза.

Wolf
11.10.2018
21:11:55

Google

Denis
11.10.2018
21:12:34

Yuran
11.10.2018
21:12:36
Ну скорее всего они правда будут медленней при этом

Vladislav
11.10.2018
21:14:01
Всем привет.
У нас в структуре таблицы есть слорь(дефолт значение). После обновление КХ, идут ошибки типа
Unsupported type Nullable(Date)
Может ли из-за этого не подниматься clickhouse?
После запуска сыпет ошибки по словарям и падает
обновлялись с версии 1.1.54327

Wolf
11.10.2018
21:14:43

Denis
11.10.2018
21:16:52

Vladislav
11.10.2018
21:17:11
А может из-за этого не подниматься кликхаус?

Denis
11.10.2018
21:17:16
да

Vladislav
11.10.2018
21:17:46
У нас всегда ошибки по словарям, но они никогда к падению не приводили

Denis
11.10.2018
21:18:14
вы везучий просто, я еще ни на одну версию КХ без исправления своего кода не перешел.

Yuran
11.10.2018
21:24:00
Мы как-то раз наступили на багу, когда таблицы создавались из веб-интерфейса и он всегда дописывал FORMAT JSON в конец запроса. Несмотря на то, что при создании таблицы ответ всё равно не выдавался в формате JSON, таблицы умудрялись создаться и в sql-файлики записывался запрос с FORMAT JSON. После рестарта, кликхаус не хотел подниматься, потому что это невалидный запрос на создание таблицы :). Пришлось руками удалять эту строчку из таблиц, чтобы КХ поднялся.
Так что наверное стоит, как минимум, иметь какие-нибудь тестовые инстансы КХ, на которых вы будете тестировать новую версию со своим кодом перед тем, как катить обновления в прод.


Vladislav
11.10.2018
22:19:12
2018.10.12 01:16:11.684795 [ 54 ] <Error> ExternalDictionaries: Failed reloading '' external dictionary: Code: 50, e.displayText() = DB::Exception: Unsupported type Nullable(Date), e.what() = DB::Exception, Stack trace:
Вот в таком словаре
<structure>
<id>
<name>sourceId</name>
</id>
<range_min>
<name>dateStart</name>
</range_min>
<range_max>
<name>dateEnd</name>
</range_max>
<attribute>
<name>money</name>
<type>Float32</type>
<null_value>0.0</null_value>
</attribute>
</structure>
null в mysql нет

Denis
11.10.2018
22:23:31

Vladislav
11.10.2018
22:24:50
баг последней версии?

Denis
11.10.2018
22:25:09

Vladislav
11.10.2018
22:36:05
Кстати, как оказалось, не поднимался КХ не. из-за того что словари битые.
А похоже данные мигрировались
примерно час запускался


Konstantin
11.10.2018
23:31:39
баг последней версии?
похоже КХ и внешние словари это вечный баг ?
18.4.0 ++
18.5.1 [unixODBC]could not create SSL context: library has no ciphers
18.6.0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
18.10.3 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No address found, e.what() = No address found
18.12.13 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received
18.12.14 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received
18.12.17 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received

Google


Alexey
12.10.2018
00:46:35
похоже КХ и внешние словари это вечный баг ?
18.4.0 ++
18.5.1 [unixODBC]could not create SSL context: library has no ciphers
18.6.0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
18.10.3 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No address found, e.what() = No address found
18.12.13 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received
18.12.14 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received
18.12.17 ExternalDictionaries: Failed reloading 'campaigns' external dictionary: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received
С подключением ODBC источников может быть много особенностей. Чтобы не ломалось, можно добавить больше конфигураций в интеграционные тесты. У нас уже есть интеграционный тест с подключением Postgres-а, но получается, что он не покрывает ваш случай. Сможете описать конфигурацию (хоть текстом), чтобы мы воспроизвели неработающее подключение у себя?


Vladislav
12.10.2018
00:51:51
https://github.com/yandex/ClickHouse/issues/3284
Прошу прощения. Нет аккаунта на гитхабе. Завтра постараюсь сделать. А пока что подробности сюда:
Наша история, после обновления с 1.1.54327 до 18.12.17 появилась ошибка:
2018.10.12 01:16:11.684795 [ 54 ] <Error> ExternalDictionaries: Failed reloading ‘DictName’ external dictionary: Code: 50, e.displayText() = DB::Exception: Unsupported type Nullable(Date), e.what() = DB::Exception, Stack trace:
<layout>
<range_hashed />
</layout>
<structure>
<id>
<name>sourceId</name>
</id>
<range_min>
<name>dateStart</name>
</range_min>
<range_max>
<name>dateEnd</name>
</range_max>
<attribute>
<name>money</name>
<type>Float32</type>
<null_value>0.0</null_value>
</attribute>
</structure>
null в mysql нет, структура таблицы
CREATE TABLE RefProfit (
sourceId int(11) NOT NULL,
money decimal(5,5) unsigned NOT NULL,
dateStart date NOT NULL DEFAULT '0000-00-00',
dateEnd date NOT NULL DEFAULT '0000-00-00',
KEY dateStart (`dateStart`,`dateEnd`),
KEY sourceId (`sourceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Похоже баг последней версии связанный с range словарями. Буду очень благодарен, если подскажите, до какой версии можно откатиться


Alexey
12.10.2018
01:02:13
Прошу прощения. Нет аккаунта на гитхабе. Завтра постараюсь сделать. А пока что подробности сюда:
Наша история, после обновления с 1.1.54327 до 18.12.17 появилась ошибка:
2018.10.12 01:16:11.684795 [ 54 ] <Error> ExternalDictionaries: Failed reloading ‘DictName’ external dictionary: Code: 50, e.displayText() = DB::Exception: Unsupported type Nullable(Date), e.what() = DB::Exception, Stack trace:
<layout>
<range_hashed />
</layout>
<structure>
<id>
<name>sourceId</name>
</id>
<range_min>
<name>dateStart</name>
</range_min>
<range_max>
<name>dateEnd</name>
</range_max>
<attribute>
<name>money</name>
<type>Float32</type>
<null_value>0.0</null_value>
</attribute>
</structure>
null в mysql нет, структура таблицы
CREATE TABLE RefProfit (
sourceId int(11) NOT NULL,
money decimal(5,5) unsigned NOT NULL,
dateStart date NOT NULL DEFAULT '0000-00-00',
dateEnd date NOT NULL DEFAULT '0000-00-00',
KEY dateStart (`dateStart`,`dateEnd`),
KEY sourceId (`sourceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Похоже баг последней версии связанный с range словарями. Буду очень благодарен, если подскажите, до какой версии можно откатиться
С range словарями были такие последние изменения:
https://github.com/yandex/ClickHouse/pull/3123/commits/99560e06f85e3b0388291d655e6a03559f4d5b46
Там можно посмотреть список тегов, в которых изменение присутствует. Видно, что впервые появилось в 18.12.


Vladislav
12.10.2018
01:04:59
Получается в актуальной версии range словари ни у кого не работают?
или у нас не такой уж и стандартный вариант использования?
Может что-то в структуре словаря\таблицы можно поменять?

Alexey
12.10.2018
01:07:39

Vladislav
12.10.2018
01:10:34
Как можем помочь с изучением проблемы?
Попросить тест стенды поднять с разными версиями?
Или могу в личку дать полный файл словаря + его данные.

Alexey
12.10.2018
01:11:00
Сначала попробую с пустым, посмотрим.

Vladislav
12.10.2018
01:14:21
Спасибо. Если что, пишите, поможем чем сможем)

Alexey
12.10.2018
01:28:44
Про то, что изменения в https://github.com/yandex/ClickHouse/pull/3123 повлияли - гипотеза верная.
range словари тестирвались только для источника file.

Vladislav
12.10.2018
01:48:45
В общем, мы одни из немногих счастливчиков с range в проде:)
Насколько безопасен откат с 18.12.17 до 18.10.3?

Alexey
12.10.2018
01:50:49
Зависит от того, какие новые возможности 18.12.17 вы уже начали использовать.
Если никакие, то безопасно (проверено).


Vladislav
12.10.2018
01:52:26
Alter update не делали.
Да в целом ничего специально не делали.
Прошу прощения. Нет аккаунта на гитхабе. Завтра постараюсь сделать. А пока что подробности сюда:
Наша история, после обновления с 1.1.54327 до 18.12.17 появилась ошибка:
2018.10.12 01:16:11.684795 [ 54 ] <Error> ExternalDictionaries: Failed reloading ‘DictName’ external dictionary: Code: 50, e.displayText() = DB::Exception: Unsupported type Nullable(Date), e.what() = DB::Exception, Stack trace:
<layout>
<range_hashed />
</layout>
<structure>
<id>
<name>sourceId</name>
</id>
<range_min>
<name>dateStart</name>
</range_min>
<range_max>
<name>dateEnd</name>
</range_max>
<attribute>
<name>money</name>
<type>Float32</type>
<null_value>0.0</null_value>
</attribute>
</structure>
null в mysql нет, структура таблицы
CREATE TABLE RefProfit (
sourceId int(11) NOT NULL,
money decimal(5,5) unsigned NOT NULL,
dateStart date NOT NULL DEFAULT '0000-00-00',
dateEnd date NOT NULL DEFAULT '0000-00-00',
KEY dateStart (`dateStart`,`dateEnd`),
KEY sourceId (`sourceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Похоже баг последней версии связанный с range словарями. Буду очень благодарен, если подскажите, до какой версии можно откатиться
Но апдейт был с 1.1.54327 и серверы запускались больше часа(похоже что-то мигрировало)


Alexey
12.10.2018
02:04:12