
Олег
22.02.2017
17:48:08
Кстати, а можно как-нибудь получить SHOW CREATE TABLE в таком же симпатичном формате, в котором clickhouse-client его выводит, собственно, при создании таблицы (или VIEW): в несколько строчек, с отступами и подсветкой?

Alexander
22.02.2017
20:00:13

f1yegor
22.02.2017
21:22:09

Виктор
22.02.2017
21:22:32
?

Google

Виктор
22.02.2017
21:23:01
Ну, ничего удивительного как бы

f1yegor
22.02.2017
21:23:46
проверяли сегодня. выгребка данных в CSV - 5 секунд, в JSON - 24 секунды

Виктор
22.02.2017
21:23:51
Там же надо эскейпинг правильно сделать юникодный, всякие кавычки и скобочки дописать
Локально?
Во что упирается
Выглядит очень странно
Только http?

f1yegor
22.02.2017
21:24:42
результат получившихся файлов, для csv - 7mb, json - 12 mb
да. проверяли клиентом локально с сервером

Виктор
22.02.2017
21:25:51
Клиентом? Почему клиентом?

f1yegor
22.02.2017
21:25:54
wget

Виктор
22.02.2017
21:26:06
А. Интересно
Надо смотреть, посмотрим

Google

Bob
23.02.2017
15:40:56
Хочу стикеры clickhouse и митап в Москве ;)

Vitaliy
23.02.2017
17:47:35
Хочу стикеры clickhouse! :)

Алексей
23.02.2017
18:03:54


Alexey
23.02.2017
19:51:38
Вот смотрю на эксперимент - aggregation_memory_efficient_merge_threads = 2 работает, сильно быстрее, чем с 1, но память прям на пределе.
Потребление оперативки пропорционально зависит от aggregation_memory_efficient_merge_threads: чем больше потоков делают мерж, тем пропорциоально больше требуется оперативки.
Недавно эта настройка была выставлена в 1 по-умолчанию, так как параллельный мерж был недоработан. Но сейчас он работает корректно и количество потоков выбирается по количеству ядер.
Алгоритм мержа промежуточных данных таков, что при мерже потребляется количество оперативки, примерно в 256 раз меньше, чем размер всего состояния, умножить на число потоков для мержа. Проще говоря, данные разбиваются на 256 партиций, и соответствующие партиции мержатся по отдельности. Конечно, для очень больших состояний такого разбиения может быть недостаточно.
При распределённой обработке запроса, также следует выставить настройку distributed_aggregation_memory_efficient. Грубо говоря, она означает: при распределённой обработке запроса, читать данные и мержить по кусочкам, а не всё сразу.


Mikhail
23.02.2017
19:52:58
Спасибо
В реальности у меня не получилось работать при коэффициенте больше 1. Память всегда превышала Maxmem.

Alexey
23.02.2017
19:58:14
Хочу стикеры clickhouse и митап в Москве ;)
Митап в Москве, наверное, следующий после Санкт-Петербурга. Ориентировочно конец марта или начало апреля. Но точные даты пока ещё неизвестны.
Да, хотим сделать что-нибудь интересное :)


Олег
24.02.2017
04:29:02
А подсветка в каком виде требуется? Если просто с отступами, то копированием из терминала...
SHOW CREATE TABLE выводит без отступов. То есть, я хочу в симпатичном виде стуктуру для старых таблиц. Если я умный и скопировал вывод когда делал сам CREATE TABLE, то это слишком просто.
Вообще выглядит так, как будто clickhouse-client умеет форматировать запросы и красиво их выводить когда их делает. Вот бы попросить его делать то же самое с тем, что вернулось в SHOW CREATE TABLE.

Sasha
24.02.2017
06:40:57
Друзья, а с чего можно начать обучение работе с кх? Может курс какой есть на курсере ? Дока официальная сложной кажется, нужно что - то фундаментальное ))

Shine
24.02.2017
08:16:23
фундаментальное - как раз дока. Если уж кликхаус кажется сложным, то хз что посоветовать. Тот кто хоть немного знаком с mysql/pgsql/oracle (да и в целом с каким-нибудь диалектом sql) въехать обычно вообще не составляет труда. Другое дело, что пока из-за ограниченных возможностей sql-подобного языка приходится постоянно костылить что-то в запросах. Я не разраб и то въехал за пару-тройку дней не напрягаясь. На хабре есть статьи, есть квик старт на офиц странице, этого более чем, чтобы начать, а дальше только дока.

Sasha
24.02.2017
08:34:56
Спасибо , буьу копать )

Dmitriy
24.02.2017
10:55:18
Привет всем.
Есть такая конструкция. У меня 4 сервера. И 3 шарда. Каждый шарда это 2 реплики - один сервер разный а один одинаковый. Т.е. Один сервер содержит данные для каждого шарда.Подскажите как правильно создавать таблици на сервере под три реплики.
С конфигурационым файлом вроде все просто.

Anton
24.02.2017
11:23:40
Привет, а подскажите, пожалуйста, на митап кончились места, или же у вас есть какой-то фильтр по участникам? А то я и мои коллеги отправили заявки, коллегам подтвердили участие, а мне нет. Странно как-то.

Dmitry
24.02.2017
12:32:46

Dmitriy
24.02.2017
12:35:44
Это конструкция упрощенная от той которую мы разворачиваем. Но суть такая же.
Три сервера с быстрыми винтами, а один с медленными, но объем большой.
Рассудит так что быстрые дадут скорость,а медленные сохранность данных

Google

Dmitriy
24.02.2017
12:36:11
Рассудили*

Dmitry
24.02.2017
12:46:19
А, не понял сразу схему. Тогда все просто на первых трёх реплицируемые таблицы с одинаковым именем и номерами шардов 1, 2, 3 и своими именами реплик. На 4м три реплицируемые таблицы с разными именами
На первых трёх distributed таблица поверх 3 быстрых серверов
На 4м если надо делать запросы, то обернуть Merge таблицей
Т.е. имена таблиц на репликацию никак не влияют, влияют настройки таблиц (в т.ч. ключ в ЗК)
Рассудили*
Кстати в телеграмма можно редактировать сообщения

Dmitriy
24.02.2017
12:51:02
Ага.спасибо сейчас попробую.

Dmitry
24.02.2017
12:57:44
Значит создать Merge таблицу которая будет указывать на 3 локальных таблицы с данными

Dmitriy
24.02.2017
12:58:49
спасибо. сейчас попробуем

Alexey
24.02.2017
13:06:52

Anton
24.02.2017
13:12:04

Dmitriy
24.02.2017
14:30:04

Dmitry
24.02.2017
14:46:51
Если писать напрямую в одну из 3х реплицируемых таблиц на нем - будет

Nataliya
24.02.2017
18:32:12
Привет, а подскажите, пожалуйста, на митап кончились места, или же у вас есть какой-то фильтр по участникам? А то я и мои коллеги отправили заявки, коллегам подтвердили участие, а мне нет. Странно как-то.
Привет! Мы закрыли сегодня регистрацию, т.к. места закончились. Проверьте, пожалуйста, почту и спам. Вы в списке приглашённых, должно было прийти приглашение в понедельник-среду.

Dmitriy
24.02.2017
19:55:23

Dmitry
24.02.2017
20:06:41
А вставка через distributed таблицу реально нужна?

Dmitriy
24.02.2017
20:13:19
думаю да. мы механизмов для вставки посредсвенно в таблици не реализовывали.
а способ вставки на прямую, действительно лучше?

Dmitry
24.02.2017
20:14:00
Да, лучше

Google

Dmitry
24.02.2017
20:14:25
Если таблицы обычные MergeTree то вставлять через Distributed смысла нет
Если Replacing, Aggregatingи т.д. то уже надо

Dmitriy
24.02.2017
20:15:13
да такие

Dmitry
24.02.2017
20:16:19
Там все просто на самом деле. Каждая вставка - это новая партиция, которую серверу потом мержить + запись в ЗК для реплицируемых таблиц

Dmitriy
24.02.2017
20:16:29
Алексей на митапе от 21.11.2016 говорил что функционал, который мы хотим есть. вот только как это делается я не нашел, может не знаю где искать

Dmitry
24.02.2017
20:18:47
Ну непосредственно создать реплицируемые таблицы можно. Но вот как натравить на это distributed таблицу я не знаю и думаю что нельзя

Vladimir
24.02.2017
20:20:39

Dmitry
24.02.2017
20:20:53
Если нужно иметь функционал вставки и запросов на все машины, мне видится вариант поднять три кх на одном сервере (в каком-нибудь докере) и наставить кластер как полноценные 3 шарда и 2 реплики

Vladimir
24.02.2017
20:23:39
Указать три реплики и сделать реплицируемую таблицу?

Dmitriy
24.02.2017
20:24:57
я к стати попробовал, сделать как вы писали. У меня получается 7 серверов, два из них медленных.
получаеться что один шард это три сервера, один всегда разный два повторяются. все шардов пять
на медленных серврах, сделал таблици с разными именами, всего пять таблиц.
создал одну распеределенную таблицу, влил чучуть данных. все поделилось четко между реплецируемыми таблицами.
фигня в том что кода первый раз сделал запрос к распределенной - то оно сказало нет таблиц на медленных, которые оно должно смотреть\обращатся. Я создал Merge таблицу, которая смотрит сразу в пять реплецируемых
и когда делаю подсчет строк, через распределенную таблицу - то колю строк в таблице всегда разное.
мне кажется проблема в том что Merge смотрит сразу в пять реплецируемы таблиц
Будет кому-то это полезно если я заведу тему в ГуглГруппах?

Dmitry
24.02.2017
20:27:16
Ох, вот это схема. Я правильно понимаю, что есть 5 быстрых серверов = 5 шардов и 2 медленных?

Dmitriy
24.02.2017
20:27:35
да)

Dmitry
24.02.2017
20:27:48
Распределенная таблица должна смотреть только на 5 быстрых шардов
Если нужно делать запросы к медленным, то на них надо создать по Merge таблицы и Distributed поверх только Merge уже на этих двух
Но я лично сильно не рекомендую такие сложные схему. На этом фоне докер смотрится куда лучше

Dmitriy
24.02.2017
20:31:47
тогда в конфиге будет в каждом шарде по одной реплике? или я что то путаю
что-то плохо до меня доходит.
вероятно что-то придется думать над тем что бы запустиь свои экзепляры под свои реплики на медленнызх серверах

Dmitry
24.02.2017
20:32:04

Google


Dmitry
24.02.2017
20:32:16
Этот конфиг просто говорит Dist таблице, как делать запросы
И что у этой таблици есть копия на другом сервере
Но этот конфиг вообще никак не влияет на репликацию
Вот пример создания таблицы из доки
ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Что бы сделать реплику надо создать таблицу с аналогичным ключом в ЗК (первый параметр) и другим {replica}
Кстати не обязательно указывать переменные из macroc, можно просто задать руками
Т.е. условно таблыцы выглядят так (на примере 3х машин: fast1, fast2 и slow1)
Сервер fast1
ReplicatedMergeTree('/clickhouse/tables/1/hits', 'fast1', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Сервер fast2
ReplicatedMergeTree('/clickhouse/tables/2/hits', 'fast2', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Сервер slow1
ReplicatedMergeTree('/clickhouse/tables/1/hits', 'slow1', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
ReplicatedMergeTree('/clickhouse/tables/2/hits', 'slow1', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Надеюсь понятно объяснил


Dmitriy
24.02.2017
20:39:31
да. спасибо большое. таблици вот таким образом и создавал для быстрых и медленных, как вы написали. будет очем подумать, спасибо

Dmitry
24.02.2017
20:42:04
Но правда лучше подумать о докере и делать по виртуальной slow на каждый fast. Это позволит нормально работать с Dist таблицами
Либо вообще отказаться от какой схемы и делать честные реплики

f1yegor
24.02.2017
20:55:13

Константин
25.02.2017
07:28:50
Доброе утро! Правильно ли я понимаю, что <remote_servers incl="clickhouse_remote_servers" /> смотри в clickhouse_remote_servers.xml?

prll
25.02.2017
08:59:57
да

Alexey
25.02.2017
13:20:05
Нет.

Eduard
25.02.2017
13:21:05
?

Alexey
25.02.2017
13:25:34
Подстановки, указанные в incl="..." достаются из файла с подстановками (по-умолчанию, /etc/metrika.xml), из элемента с указанным именем.
Для примера, в /etc/metrika.xml может быть написано:
<yandex>
<clickhouse_remote_servers>
<double>
<node>
<host>127.0.0.1</host>
<port>9000</port>
</node>
<node>
<host>127.0.0.2</host>
<port>9000</port>
</node>
</double>
</clickhouse_remote_servers>
</yandex>
Нужно будет прямо в конфиге это прокомментировать, иначе может быть не очевидно.
В документации это описано здесь:
https://clickhouse.yandex/reference_ru.html#%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B

Dmitrii
25.02.2017
16:40:00
Xml в мобильном браузере еще ужаснее.