Size: a a a

ClickHouse не тормозит

2021 February 08

S

Slach in ClickHouse не тормозит
Dimov Vasiliy
Все реплики онлайн, по отдельности выполняю запросы на них. Если быть точным это 3 шарда и у каждого по реплике. Тесты сейчас сделаю.
SELECT * FROM system.settings WHERE name = 'allow_distributed_ddl';
?
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
это другая ошибка
у вас все реплики online?
по ошибке выглядит так будто реплики по какойто причине не хотят исполнять запрос на создание таблицы из distributed_ddl очереди ZK

curl http://clickhouse_ip:8123/replica_status
или
SELECT * FROM system.zookeeper WHERE path='/'
на каждой реплике
user@node-01:~$ curl http://<ip>:<port_prefix>{4,5,6,7,8,9}/replicas_status
Ok.
Ok.
Ok.
Ok.
Ok.
Ok.
user@node-01:~$
источник

S

Slach in ClickHouse не тормозит
grep ddl -r /etc/clickhouse-server/

настройки точно одинаковые ?

должно быть что то вроде

/etc/clickhouse-server/config.xml:    <distributed_ddl>
/etc/clickhouse-server/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/etc/clickhouse-server/config.xml:    </distributed_ddl>
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
SELECT * FROM system.settings WHERE name = 'allow_distributed_ddl';
?
4c3862c37937 :) SELECT * FROM system.settings WHERE name = 'allow_distributed_ddl';

SELECT *
FROM system.settings
WHERE name = 'allow_distributed_ddl'
Query id: a0ba3bfd-9e19-46d5-914e-70a95e22fa0b
┌─name──────────────────┬─value─┬─changed─┬─description───────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type─┐
│ allow_distributed_ddl │ 1     │       0 │ If it is set to true, then a user is allowed to executed distributed DDL queries. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ Bool │
└───────────────────────┴───────┴─────────┴───────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴──────┘
1 rows in set. Elapsed: 0.006 sec.
4c3862c37937 :)
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
grep ddl -r /etc/clickhouse-server/

настройки точно одинаковые ?

должно быть что то вроде

/etc/clickhouse-server/config.xml:    <distributed_ddl>
/etc/clickhouse-server/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/etc/clickhouse-server/config.xml:    </distributed_ddl>
user@node-01:~$ grep ddl -r /opt/data/clickhouse_node{1,2,3,4,5,6}_dev/*.xml
/opt/data/clickhouse_node1_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node1_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node1_dev/config.xml:    </distributed_ddl>
/opt/data/clickhouse_node2_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node2_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node2_dev/config.xml:    </distributed_ddl>
/opt/data/clickhouse_node3_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node3_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node3_dev/config.xml:    </distributed_ddl>
/opt/data/clickhouse_node4_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node4_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node4_dev/config.xml:    </distributed_ddl>
/opt/data/clickhouse_node5_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node5_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node5_dev/config.xml:    </distributed_ddl>
/opt/data/clickhouse_node6_dev/config.xml:    <distributed_ddl>
/opt/data/clickhouse_node6_dev/config.xml:        <path>/clickhouse/task_queue/ddl</path>
/opt/data/clickhouse_node6_dev/config.xml:    </distributed_ddl>
user@node-01:~$
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
все 6 узлов это докер контейнеры на одном хосте. Я вот засомневался, что связность сетевая между ними в норме. Хотя данные между репликами реплицируются и распределенные dml нормально работают
источник

GA

Gulshan Agivetova in ClickHouse не тормозит
Доброе утро! Подскажите пожалуйста, как можно сделать так чтобы groupArray включал и NULL значения.

create table arrayTab (id UInt8,ch_name String, pidArray Array(UInt8),pnameArray Array(Nullable(String))) Engine=Memory;

insert into charges values
(100,'X')
(101,'Y')
(102,NULL);

insert into packs (pack_id,pack_name,charge_id) values
(4,NULL,100)
(2,'A',100)
(3,'C',100)
(1,'A',101)
(3,'B',101)
(1,NULL,102)
(2,'B',102);

insert into arrayTab
select id,max(chname), groupArray(pack_id),groupArray(pack_name) from (
select * from charges c
left join packs p on c.id=p.charge_id ) pp group by id;

Получается вот так:
select id,ch_name,pidArray,pnameArray from arrayTab;

100 X [4,2,3] ['A','C']
101 Y [1,3] ['A','B']
102  [1,2] B

но хотелось бы видеть:
100 X [4,2,3] ['A',NULL,'C']
101 Y [1,3] ['A','B']
102  [1,2] ['B',NULL]

Чтобы при array join  не было ошбки: Sizes of ARRAY-JOIN-ed arrays do not match

select * from arrayTab
array join pidArray,pnameArray;
источник

S

Slach in ClickHouse не тормозит
Dimov Vasiliy
все 6 узлов это докер контейнеры на одном хосте. Я вот засомневался, что связность сетевая между ними в норме. Хотя данные между репликами реплицируются и распределенные dml нормально работают
в смысле нормально работают распределенные DDL? если у вас CREATE TABLE ... ON CLUSTER не отрабатывает?
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
в смысле нормально работают распределенные DDL? если у вас CREATE TABLE ... ON CLUSTER не отрабатывает?
DML, select из distributed table
источник

S

Slach in ClickHouse не тормозит
Dimov Vasiliy
все 6 узлов это докер контейнеры на одном хосте. Я вот засомневался, что связность сетевая между ними в норме. Хотя данные между репликами реплицируются и распределенные dml нормально работают
ой тьу, распределенные DML ? это в смысле SELECT из Distributed таблицы?
дак Distributed никак с Replicated не связны это ортогональные понятия
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
ой тьу, распределенные DML ? это в смысле SELECT из Distributed таблицы?
дак Distributed никак с Replicated не связны это ортогональные понятия
Это я к тому что связь между узлами есть
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Сейчас обратил внимание на странное поведение клиента. Если подключиться клиентом с одной ноды на другую, то клиент виснет на фразе: user@5df50a09a5da:/$ clickhouse-client --host <ip> --port <port> --user default --password <pwd>
ClickHouse client version 21.1.2.15 (official build).
Connecting to <ip>:<port> as user default.
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Dimov Vasiliy
Сейчас обратил внимание на странное поведение клиента. Если подключиться клиентом с одной ноды на другую, то клиент виснет на фразе: user@5df50a09a5da:/$ clickhouse-client --host <ip> --port <port> --user default --password <pwd>
ClickHouse client version 21.1.2.15 (official build).
Connecting to <ip>:<port> as user default.
Это я не тот порт указал. http вместо tcp
источник

S

Slach in ClickHouse не тормозит
Gulshan Agivetova
Доброе утро! Подскажите пожалуйста, как можно сделать так чтобы groupArray включал и NULL значения.

create table arrayTab (id UInt8,ch_name String, pidArray Array(UInt8),pnameArray Array(Nullable(String))) Engine=Memory;

insert into charges values
(100,'X')
(101,'Y')
(102,NULL);

insert into packs (pack_id,pack_name,charge_id) values
(4,NULL,100)
(2,'A',100)
(3,'C',100)
(1,'A',101)
(3,'B',101)
(1,NULL,102)
(2,'B',102);

insert into arrayTab
select id,max(chname), groupArray(pack_id),groupArray(pack_name) from (
select * from charges c
left join packs p on c.id=p.charge_id ) pp group by id;

Получается вот так:
select id,ch_name,pidArray,pnameArray from arrayTab;

100 X [4,2,3] ['A','C']
101 Y [1,3] ['A','B']
102  [1,2] B

но хотелось бы видеть:
100 X [4,2,3] ['A',NULL,'C']
101 Y [1,3] ['A','B']
102  [1,2] ['B',NULL]

Чтобы при array join  не было ошбки: Sizes of ARRAY-JOIN-ed arrays do not match

select * from arrayTab
array join pidArray,pnameArray;
скорее всего никак
источник

S

Slach in ClickHouse не тормозит
Dimov Vasiliy
Сейчас обратил внимание на странное поведение клиента. Если подключиться клиентом с одной ноды на другую, то клиент виснет на фразе: user@5df50a09a5da:/$ clickhouse-client --host <ip> --port <port> --user default --password <pwd>
ClickHouse client version 21.1.2.15 (official build).
Connecting to <ip>:<port> as user default.
ну смотрите
как distributed_ddl работает
в ZK ноду которая /clickhouse/task_queue/ddl/ просто добавляются child типа task-XXXX с текстом запроса и нодой инициатором

эту ноду делают watch все все  остальные ноды, которые подключены с одному и тому же zookeeper
и должны вычитывать SQL запросы и после исполнения добавлять свое имя в task-XXXX/finished таким образом рапортовать о том что сделали

вы SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl'
на всех нодах делали? нормально работает?

какая версия clickhouse?

SHOW CREATE DATABASE default
какой engine показывает ? Atomic?

у вас случайно не было там таблицы с точно таким же именем раньше?

если у вас Atomic
у вас в ReplicatedMergeTree
в настройках пути {uuid} макрос используется?

CREATE TABLE IF NOT EXISTS ... ON CLUSTER нормально отрабатывает?

в логи посмотрите на каждой ноде
поищите ваш запрос на создание посмотрие что в логах
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
ну смотрите
как distributed_ddl работает
в ZK ноду которая /clickhouse/task_queue/ddl/ просто добавляются child типа task-XXXX с текстом запроса и нодой инициатором

эту ноду делают watch все все  остальные ноды, которые подключены с одному и тому же zookeeper
и должны вычитывать SQL запросы и после исполнения добавлять свое имя в task-XXXX/finished таким образом рапортовать о том что сделали

вы SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl'
на всех нодах делали? нормально работает?

какая версия clickhouse?

SHOW CREATE DATABASE default
какой engine показывает ? Atomic?

у вас случайно не было там таблицы с точно таким же именем раньше?

если у вас Atomic
у вас в ReplicatedMergeTree
в настройках пути {uuid} макрос используется?

CREATE TABLE IF NOT EXISTS ... ON CLUSTER нормально отрабатывает?

в логи посмотрите на каждой ноде
поищите ваш запрос на создание посмотрие что в логах
Большое спасибо за пояснения!
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
ну смотрите
как distributed_ddl работает
в ZK ноду которая /clickhouse/task_queue/ddl/ просто добавляются child типа task-XXXX с текстом запроса и нодой инициатором

эту ноду делают watch все все  остальные ноды, которые подключены с одному и тому же zookeeper
и должны вычитывать SQL запросы и после исполнения добавлять свое имя в task-XXXX/finished таким образом рапортовать о том что сделали

вы SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl'
на всех нодах делали? нормально работает?

какая версия clickhouse?

SHOW CREATE DATABASE default
какой engine показывает ? Atomic?

у вас случайно не было там таблицы с точно таким же именем раньше?

если у вас Atomic
у вас в ReplicatedMergeTree
в настройках пути {uuid} макрос используется?

CREATE TABLE IF NOT EXISTS ... ON CLUSTER нормально отрабатывает?

в логи посмотрите на каждой ноде
поищите ваш запрос на создание посмотрие что в логах
По порядку:
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
Slach
ну смотрите
как distributed_ddl работает
в ZK ноду которая /clickhouse/task_queue/ddl/ просто добавляются child типа task-XXXX с текстом запроса и нодой инициатором

эту ноду делают watch все все  остальные ноды, которые подключены с одному и тому же zookeeper
и должны вычитывать SQL запросы и после исполнения добавлять свое имя в task-XXXX/finished таким образом рапортовать о том что сделали

вы SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl'
на всех нодах делали? нормально работает?

какая версия clickhouse?

SHOW CREATE DATABASE default
какой engine показывает ? Atomic?

у вас случайно не было там таблицы с точно таким же именем раньше?

если у вас Atomic
у вас в ReplicatedMergeTree
в настройках пути {uuid} макрос используется?

CREATE TABLE IF NOT EXISTS ... ON CLUSTER нормально отрабатывает?

в логи посмотрите на каждой ноде
поищите ваш запрос на создание посмотрие что в логах
1. Со всех узлов SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl' возвращает некий список запросов.
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
2. 5df50a09a5da :) show create database default;

SHOW CREATE DATABASE default
Query id: 119653f7-6b0a-434a-90c5-93926321218c
┌─statement──────────────────────────────┐
│ CREATE DATABASE default
ENGINE = Atomic │
└────────────────────────────────────────┘
1 rows in set. Elapsed: 0.006 sec.
5df50a09a5da :)
источник

DV

Dimov Vasiliy in ClickHouse не тормозит
3. Я пробовал разные ddl, например create user if not exist или grant
источник