
Alexey
31.08.2017
10:21:23
Сейчас выбираем вариант доклада для Highload++. Надо не просто так, а чтобы проголосовали :) (например, вы).
О чём вы хотите больше послушать? Есть, например, такой вариант:
Эффективное использование ClickHouse.
ClickHouse чуть более года доступен в open-source. За это время накоплен опыт его использования в российских и зарубежных компаниях. В некоторых из них объёмы данных и нагрузки превышают те, с которыми мы имеем дело в Яндексе. Так как ClickHouse является специализированной системой, при его использовании важно учитывать особенности его архитектуры. В своём докладе я расскажу о примерах типичных ошибок при использовании ClickHouse, которые могут привести к неэффективной работе. На примерах из практики будет показано, как выбор той или иной схемы обработки данных может изменить производительность на порядки.

Google

sic transit
31.08.2017
10:28:32
Отлично


Александр
31.08.2017
10:30:58
Сейчас выбираем вариант доклада для Highload++. Надо не просто так, а чтобы проголосовали :) (например, вы).
О чём вы хотите больше послушать? Есть, например, такой вариант:
Эффективное использование ClickHouse.
ClickHouse чуть более года доступен в open-source. За это время накоплен опыт его использования в российских и зарубежных компаниях. В некоторых из них объёмы данных и нагрузки превышают те, с которыми мы имеем дело в Яндексе. Так как ClickHouse является специализированной системой, при его использовании важно учитывать особенности его архитектуры. В своём докладе я расскажу о примерах типичных ошибок при использовании ClickHouse, которые могут привести к неэффективной работе. На примерах из практики будет показано, как выбор той или иной схемы обработки данных может изменить производительность на порядки.
Да, хорошая тема! Я думаю тут какую тему не тронь, все будет актуально. Так же хотелось бы больше узнать вообще о внутреннем устройстве самого движка, который непосредственно работает с данными. Чем больше знаешь о внутренностях, тем лучше можно писать запросы, которые работают эффективней.


Alexey
31.08.2017
10:31:48
С удовольствием расскажу.

Александр
31.08.2017
10:33:27
Я чем больше узнаю из бесед в этом чате, тем больше интереса появляется к КХ )

sic transit
31.08.2017
10:33:52

Mike
31.08.2017
11:10:33
У кого-то завелся Superset? У меня то 'DatetimeTZDtype' object has no attribute 'char', то Failed to start remote query on a worker. Tell your administrator to verify the availability of the message queue. Базы и таблицы видит, а ни один запрос не работает

Roman
31.08.2017
11:22:17


Andrey
31.08.2017
11:34:27
Встретился с такой ошибкой <Debug> MemoryTracker: Peak memory usage (for query): 61.62 MiB.
2017.08.31 14:19:20.423407 [ 5 ] <Debug> MemoryTracker: Peak memory usage (for user): 61.62 MiB.
2017.08.31 14:19:20.423415 [ 5 ] <Debug> MemoryTracker: Peak memory usage (total): 61.62 MiB.
. Посмотрел настройку max_memory_usage, она 10 GB по умолчанию. Настройки стандартные.

Kirill
31.08.2017
11:36:48
Уровень логирования поменяйте, это не ошибка, а отладочная информация

Vladimir
31.08.2017
12:06:15
в папке detached появились файлы типа ignored_20170706_20170706_233265_233265_0. ничего же страшного не случится, если их выкосить? в доке написано После того, как запрос будет выполнен, вы можете самостоятельно сделать что угодно с данными в директории detached, например, удалить их из файловой системы, или ничего не делать.

Alexey
31.08.2017
12:07:08

Дмитрий
31.08.2017
12:10:30
Народ, подскажите, никак не догоню.
Вот есть кластер из 4х нод 2 шарда по две реплики.
Distributed-таблицу где делать?
а. Рандомно выбрать один сервер главным, создать на нем и через него ходить.
б. Создать на одном, оно само реплицируется, ходить на любой.
в. Создать на любом, но ON CLUSTER name, ходить на любой.
г. Создать на всех репликах одного шарда, ходить через любую реплику этого шарда.
д. Создать руками везде.

Google

Alexey
31.08.2017
12:11:59
Проще всего создать на всех серверах.
Это либо "в" либо "д".
Варианты "а" и "г" тоже допустимы.

Дмитрий
31.08.2017
12:13:07
но у а и г меньше точек входа, значит отказоустойчивость. Ясно. Спасибо!

Yurij
31.08.2017
12:20:50
Такой вариант. Есть у меня long id-шки. будут они писаться в лог-файлы/таблицы (причем в целом, надеюсь, в порядке возрастания). но таблиц будет много, скажем 1-10 тыс.
потом нужно находить с помощью join-ов id-шки которые есть в заданном наборе таблиц, например найти только те id-шки которые в tbl_1, tbl_3, tbl_6, tbl_10 таблицах одновременно. в таблицах кроме id-шек больше ничего не будет. Для такого случая ClickHouse - подходит / не подходит / это overkill и из пушки по воробьям / что-то другое.

Kirill
31.08.2017
12:24:18

Alexey
31.08.2017
12:24:51
Проще всего писать их в одну таблицу типа MergeTree. Ключом сделать пару (id таблицы, id значения). (Также придётся иметь столбец с датой - можете туда писать что-нибудь полезное или любую константную дату). ClickHouse подходит.

Yurij
31.08.2017
12:26:41

Vladislav
31.08.2017
12:29:18
А правильно я понимаю, что при установке у шарда <weight>0</weight> данные, которые вставляются через Distributed-таблицу, туда писаться не будут?

Alexey
31.08.2017
12:29:26
Да.

Vladislav
31.08.2017
12:30:50
Спасибо. А насколько нормально перекидывать старые данные на реплики с HDD, если они будут редко использоваться?

Alexey
31.08.2017
12:34:46
Имеется ввиду - на шарды с HDD. Полностью нормально.

Virus
31.08.2017
13:33:05
есть 4к строк запросов вида:
alter table $dbName.track_sharded detach partition $partName
в файле, который скармливается клиенту так:
cat alters|while read a; do clickhouse-client —query="$a"; done
через некоторое время выполнения получаю:
Code: 49. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Logical error: newly allocated block number is zero.
что может быть?

f1yegor
31.08.2017
13:37:24
есть какие-то оценки по точности вероятностных структур? https://clickhouse.yandex/docs/en/agg_functions/index.html?highlight=uniq#uniq-x

Alexey
31.08.2017
13:44:23

Virus
31.08.2017
13:47:09

Alexey
31.08.2017
13:49:27

Virus
31.08.2017
13:50:12
не совсем. если пустить повторно всю команду - ошибки смещаются дальше по списку.
и все последующие команды выдают эту ошибку

Дмитрий
31.08.2017
13:56:09
А есть какие-то известные проблемы со вставкой в MATHERIALIZED колонки через Distributed таблицу?
Имею
CREATE TABLE logs_node(
created_at DateTime,
created_date Date MATERIALIZED toDate(created_at)
) ENGINE = ReplicatedMergeTree(....);
и
CREATE TABLE logs AS logs_node ENGINE = Distributed(...)
при попытке вставки
cat file.csv | clickhouse-client --host clickhouse --query="INSERT INTO logs(created_at) FORMAT CSV"
получаю
Code: 44. DB::Exception: Received from clickhouse:9000, 10.254.141.47. DB::Exception: Cannot insert column created_date.
при такой же вставке в локальную нереплицированную таблицу все было хорошо.

sic transit
31.08.2017
13:58:36
Скудненкий мессадж... DB::Exception: Cannot insert column created_date

Google

Дмитрий
31.08.2017
14:02:05
ощущение, что в distributed таблице он его не хочет вычислять из created_at
Хотя структура скопирована верно....
SHOW CREATE TABLE logs
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE test.logs ( created_at DateTime, created_date Date MATERIALIZED toDate(created_at)) ENGINE = Distributed(k8scluster, \'test\', \'logs_node\', rand()) │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
1 rows in set. Elapsed: 0.101 sec.

Evgenii
31.08.2017
14:14:40
Есть вопросик. Одна из реплик пытается фетчить данные с умершей реплики. Нашел партиции в бекапе преаттачил. В очереди все равно фетч висит. Просто дропнуть из очереди?

Andrey
31.08.2017
14:23:50
В инструкции нету инфу по движку Dictionary.
Подскажите как создавать с ним таблицу.
Еще лучше - если есть пример.
Заранее спасибо!

Игорь
31.08.2017
14:25:58
https://clickhouse.yandex/docs/ru/dicts/index.html

Andrey
31.08.2017
14:29:22
New database engine Dictionary
Из release notes
Как это юзать - нет доки

Игорь
31.08.2017
14:32:24

Andrey
31.08.2017
14:32:43
https://www.altinity.com/blog/2017/7/20/clickhouse-release-1154245

Igor
31.08.2017
14:32:51
CREATE DATABASE IF NOT EXISTS dictionaries ENGINE = Dictionary

Andrey
31.08.2017
14:33:31
больше всего интесуют параметры после ENGINE = Dictionary
Или они не нужны?

Alexey
31.08.2017
14:34:03
а то, как сейчас она работает вас не устраивает?

Igor
31.08.2017
14:34:12
не нужны
просто это выполнить и появится словари как таблицы

Andrey
31.08.2017
14:37:17
Бомба! Спасибо!!! Это просто божественно!!!!!

Maksim
31.08.2017
14:42:08
Джойн можно будет?

Андрей Михайлович
31.08.2017
14:42:47

Virus
31.08.2017
14:46:16
а есть возможность добавить диск в текущий раздел с данными? уперлись в диск, а увеличить физически нет возможности. можно только еще один диск добавить. можно как-то сказать кликхаусу чтобы новые данные на другой диск писал?

Google

Андрей Михайлович
31.08.2017
14:47:34

Alexey
31.08.2017
14:48:01

Virus
31.08.2017
14:48:05
в смысле что? статистику

Alexey
31.08.2017
14:48:56

KIrill
31.08.2017
14:48:59

Андрей Михайлович
31.08.2017
14:49:17
И на кой так много? Может проще это архивировать?

Virus
31.08.2017
14:49:30

Alexey
31.08.2017
14:50:05

KIrill
31.08.2017
14:53:35
диск не в лвм к сожалению
Но ... новый диск можно с LVM сделать, перенести данные, и потом второй (старый) диск подцепить под LVM.
Это, кажется, надежнее чем манёвры с линками ...

Virus
31.08.2017
14:57:35
диск один и он же системный.
с одним разделом

Dmitry
31.08.2017
15:09:57
Всем привет, а нет ли в CH возможностей работы с гео-данными?

Alexey
31.08.2017
15:12:07
Есть ограниченная возможность - функции greatCircleDistance, pointInEllipses.
(Документация пока только в комментариях в коде.)
Сейчас в разработке ещё одна секретная функция на ту же тему.

Dmitry
31.08.2017
15:14:54
если вместо мертвого узла в кластере, подсунуть узел с таким же именем и конфигом, но другим ипом, он подхватится?
и если нет, то что нужно сделать чтобы его присоединить вместо умершего

Alexey
31.08.2017
15:21:34

Dmitry
31.08.2017
15:23:18

Alexey
31.08.2017
15:26:32
DNS кэш не сбрасывается по SIGHUP.

Дмитрий
31.08.2017
15:28:38

Dmitry
31.08.2017
15:35:08
При подключении к КХ через ODBC (версия драйвера от 24.08) возникает ошибка выполнения запроса
CAST(Custom_SQL_Query.date AS DATE) AS tdy_date_ok
похоже тип данных неверно подставляется, вместо Date пишет DATE

Google

Dmitry
31.08.2017
15:35:19
это как-то на уровне драйвера исправляется?
подключение из Табло и тут используются какие-то стандартные возможнсти ODBC по преобразованию типов, на сколько я понимаю

Dmitry
31.08.2017
15:39:51

Дмитрий
31.08.2017
15:53:22

Dmitry
31.08.2017
15:54:44

Рулон
01.09.2017
06:11:00
Или по Dete по любому есть индекс?

Konstantin
01.09.2017
07:27:53
привет. не могу сделать quick start на xenial, как можно вылечить? =/

Dmitriy
01.09.2017
07:30:31
Konstantin Надо сдлеать:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
а потом ставить кликхаус

Konstantin
01.09.2017
07:34:54

Oleh
01.09.2017
07:35:32
Вопрос по джоинам, я так понял что это не самая сильная сторона кликхауса и лучше дублировать данные чем делать джоины в больших таблицах?

Vladislav
01.09.2017
07:38:47
а ключ кто будет прописывать?

Fike
01.09.2017
07:39:16
не -- recv, а --recv

Konstantin
01.09.2017
07:48:18