
Michal
21.09.2018
09:33:53
1) на том сервере в каталоге с Distributed таблицей не лежит много-много всяких "отсутствующих" инсертов?
2) в обоих шардах равномерно "пропадают" данные или только в одном?

Alexander
21.09.2018
09:35:48
1) Имеется ввиду в /var/lib/clickhouse/data ? Да, на ноде, через которую запись, лежит много /detached/ частей, все сохраняются.
2) При вставке на любую из нод – сохраняется только в локальной шарде, то есть не уходит на соседние сервера, насколько я понимаю.

Michal
21.09.2018
09:36:21
А что в system.replication_queue?

Google

Alexander
21.09.2018
09:37:28
Пусто
Вот получается, что ZK ругается на NodeExists, данные кладутся в /detached/ignored_* и все, непонятно как его пнуть )

Michal
21.09.2018
09:42:12
Хм. Т.е. данные "застревают" в Distributed не доходя до ReplicatedMergeTree. Может быть Distributed не может подключиться к другим серверам? И только если на локалхост попадает то инсерт идет?

Alexander
21.09.2018
09:44:04

Michal
21.09.2018
09:49:30
А есть кореляция между неудавшимися инсертами и записями в логах зукипера?

Alexander
21.09.2018
09:54:01

Wolf
21.09.2018
10:05:51
а ALTER TABLE [db.]table DELETE WHERE не умеет on cluster ? Или можно сделать это на дистрибьютед таблицу ?
проверил руками умеет

Michal
21.09.2018
10:08:35

Саша
21.09.2018
10:09:14
Коллеги, подскажите, а вызов OPTIMIZE TABLE db.name PARTITION partition FINAL гарантирует, что после вызова все дубликаты будут удалены?
для ReplacingMergeTree

Wolf
21.09.2018
10:09:50
вероятно не после вызова а как пройдет мердж

Michal
21.09.2018
10:11:32

Google

Саша
21.09.2018
10:12:02
а как ключевое слово FINAL влияет на этот процесс?

Michal
21.09.2018
10:12:36

Wolf
21.09.2018
10:13:54

Ivan
21.09.2018
10:14:56
Добрый день. Не подскажете через alter table нельзя же указать ключ семплирования SAMPLE BY, только через create table?
Хочу потестить Distributed и max_parallel_replicas>1 без перезаливки


Александр
21.09.2018
10:20:05
Ребят, в докере вот такая штука в логе пишется при старте сервера.
Application: It looks like the process has no CAP_NET_ADMIN capability, 'taskstats' performance statistics will be disabled. It could happen due to incorrect ClickHouse package installation. You could resolve the problem manually with 'sudo setcap cap_net_admin=+ep /usr/bin/clickhouse'. Note that it will not work on 'nosuid' mounted filesystems. It also doesn't work if you run clickhouse-server inside network namespace as it happens in some containers.
После этого сервер отключается
А перед этим еще вот такая штука
2018.09.21 13:16:30.828709 [ 3 ] <Error> bool DB::{anonymous}::checkPermissionsImpl(): Code: 412, e.displayText() = DB::Exception: Can't receive Netlink response: error -2, e.what() = DB::Exception, Stack trace:
0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x9491e46]
1. /usr/bin/clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x22) [0x3019952]
2. /usr/bin/clickhouse-server() [0x9499185]
3. /usr/bin/clickhouse-server(DB::TaskStatsInfoGetter::TaskStatsInfoGetter()+0xf0) [0x9499370]
4. /usr/bin/clickhouse-server(DB::TaskStatsInfoGetter::checkPermissions()+0xe1) [0x9499541]
5. /usr/bin/clickhouse-server(DB::ThreadStatus::initPerformanceCounters()+0x10d) [0x949a85d]
6. /usr/bin/clickhouse-server(DB::ThreadStatus::initializeQuery()+0x292) [0x718ec02]
7. /usr/bin/clickhouse-server(DB::CurrentThread::initializeQuery()+0x2d) [0x718ec8d]
8. /usr/bin/clickhouse-server(DB::BackgroundProcessingPool::threadFunction()+0xad1) [0x72fdb51]
9. /usr/bin/clickhouse-server() [0x9e659ef]
10. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f84364116ba]
11. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f8435a3241d]
Кто-то такое лечил?


Wolf
21.09.2018
10:25:58
а как посмотреть текущее значение finished_mutations_to_keep ? в system.settings почему то его нет

Alex
21.09.2018
10:26:35
system.merge_tree_settings

Александр
21.09.2018
10:28:04
system.merge_tree_settings
на последнем митапе рассказывали про всякие там метрики и пр. штуки и предупреждали, что во всяких докерах это работать не будет и все такое. Я вот 18.12.17 в докере на 16 убунте пытаюсь стартануть и получаю ошибку выше. Это как-то связано с тем, что у меня 16 убунта?
Можно как-то этот профайлер выключить вообще?

Саша
21.09.2018
10:30:20
А в документации нет ответа на этот вопрос?
не очень понятен результат. Допустим я вызвал оптимизацию партиций OPTIMIZE TABLE db.name PARTITION partition, этот процесс занял 5 минут. Как я понимаю этим 5 минут и происходило слияние нескольких кусков в один. Если бы я вызвал OPTIMIZE TABLE db.name PARTITION partition FINAL , то рзультат слияния и оптимизации был бы такой же или другой?
я вставляю в таблицу пачку данных раз в час, после вызваю OPTIMIZE TABLE, при этом у меня при подсчете результатов есть дубли.

Wolf
21.09.2018
10:34:11

Саша
21.09.2018
10:35:11

Wolf
21.09.2018
10:35:31
я вот сейчас просто смотрю в лог кх

Kirill
21.09.2018
10:35:32

Wolf
21.09.2018
10:36:06
ну и просто на диске смотрю, балуюсь с удалением и оно происходит совсем не онлайн

Alexander
21.09.2018
10:36:43

Michal
21.09.2018
10:54:53

Google

Alexey
21.09.2018
10:58:01

Wolf
21.09.2018
11:04:01
ну он там будет пытаться сделать куски по 200 гб по дефолту если настройки , так как этот процесс вообще не быстрый на таких обьемах ожидать что после запроса не будет дублей сразу не логично
а почему кх перемержил все куски при alter delete хотя там был задет всего один месяц ?

Kirill
21.09.2018
11:11:58
Хром последний на федоре
видел тут вопрос по версии. сейчас стабильная версия хрома, которая у меня и есть — 69.0.3497.92.

Michal
21.09.2018
11:25:16
Угу. Похоже на то: https://github.com/yandex/ClickHouse/blob/bf53c4a31d4966c07ccc00f4170ca7f34811812c/dbms/src/Storages/StorageReplicatedMergeTree.cpp#L3022


molo4ko
21.09.2018
12:05:24
предположим у вас два шарда, с таблицами tableX_ и tableY_, они шардированы вместе как вы уже сказали и вам надо сджойнить локально
shard1: tableX_, tableY_
shard2: tableX_, tableY_
на обоих шардах создаете дистрибьютид tableX, tableY которые смотрят на tableX_, tableY_
запускаете запрос на любом шарде
select a,b from (select a from tableX where foo=bar all inner join (select b from tableY_ where x = y) using id)
он будет инициатором и пошлет сам себе и второму шарды запрос
select a,b from (select a from tableX_ where foo=bar all inner join (select b from tableY_ where x = y) using id)
в том и дело, что у меня это не работает для джойнов.
для вложенных селектов (IN, которые полагаются на тот же принцип):
// запрос к distributed таблице с условием по локальному шарду
// работает
select a from tableX where x in (select x from tableY_)
vs
// запрос к distributed таблице с join по локальному шарду
// tableX, tableY шардированы по sip64(id)
// НЕ работает
select a,b from (select a from tableX all inner join (select b from tableY_) using id)
// table default.tableY_ does not exist


Michal
21.09.2018
12:11:33
Можете на каждом шарде посмотреть какой запрос прилетает от distributed, если есть сомнения.


Denis
21.09.2018
12:24:13
в том и дело, что у меня это не работает для джойнов.
для вложенных селектов (IN, которые полагаются на тот же принцип):
// запрос к distributed таблице с условием по локальному шарду
// работает
select a from tableX where x in (select x from tableY_)
vs
// запрос к distributed таблице с join по локальному шарду
// tableX, tableY шардированы по sip64(id)
// НЕ работает
select a,b from (select a from tableX all inner join (select b from tableY_) using id)
// table default.tableY_ does not exist
на обоих шардах
CREATE TABLE tableX_ ( id Int64, a Int64 )
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableX_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableY_ ( id Int64, a Int64)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableY_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableX as tableX_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableX_',rand ());
CREATE TABLE tableY as tableY_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableY_',rand ());
на первом
insert into tableX_ values(1,1);
insert into tableY_ values(1,1);
на втором
insert into tableX_ values(2,2);
insert into tableY_ values(2,2);
select a from tableX where id in (select id from tableY_)
2
1
select a from (select a,id from tableX all inner join (select a,id from tableY_) using id)
2
1


Michal
21.09.2018
12:27:47
на обоих шардах
CREATE TABLE tableX_ ( id Int64, a Int64 )
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableX_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableY_ ( id Int64, a Int64)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableY_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableX as tableX_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableX_',rand ());
CREATE TABLE tableY as tableY_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableY_',rand ());
на первом
insert into tableX_ values(1,1);
insert into tableY_ values(1,1);
на втором
insert into tableX_ values(2,2);
insert into tableY_ values(2,2);
select a from tableX where id in (select id from tableY_)
2
1
select a from (select a,id from tableX all inner join (select a,id from tableY_) using id)
2
1
Так тоже должно работать. Этот пример кстати есть в документации: https://clickhouse.yandex/docs/ru/query_language/select/#queries-distributed-subrequests


Vadim
21.09.2018
12:28:12
А max_bytes_to_merge_at_max_space_in_pool где задается ?

Michal
21.09.2018
12:28:16
Тогда distributed_product_mode вам не нужен.

Kirill
21.09.2018
12:29:27

Vadim
21.09.2018
12:30:01
в users.xml ?

Denis
21.09.2018
12:31:10
в users.xml ?
в config.xml
<merge_tree>
<!-- Maximum in total size of parts to merge, when there are maximum free threads in background pool -->
<!-- 200 * 1024 * 1024 * 1024 -->
<max_bytes_to_merge_at_max_space_in_pool>214748364800</max_bytes_to_merge_at_max_space_in_pool>
или для каждой таблицы
https://github.com/yandex/ClickHouse/issues/2607


Michal
21.09.2018
12:31:13
в users.xml ?
Если для всех таблиц то тут: https://github.com/yandex/ClickHouse/blob/9975960d77e0745ebec07b69129ac816a9738439/dbms/programs/server/config.xml#L318
на обоих шардах
CREATE TABLE tableX_ ( id Int64, a Int64 )
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableX_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableY_ ( id Int64, a Int64)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/{shard}/tableY_','{replica}') PARTITION BY tuple() order by tuple();
CREATE TABLE tableX as tableX_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableX_',rand ());
CREATE TABLE tableY as tableY_ ENGINE = Distributed (segmented_mirrored,currentDatabase(),'tableY_',rand ());
на первом
insert into tableX_ values(1,1);
insert into tableY_ values(1,1);
на втором
insert into tableX_ values(2,2);
insert into tableY_ values(2,2);
select a from tableX where id in (select id from tableY_)
2
1
select a from (select a,id from tableX all inner join (select a,id from tableY_) using id)
2
1
Но мне больше нравится вариант с distributed_product_mode. Джойнить distributed с другой distributed - как-то более логично :)

Google

Slava
21.09.2018
12:35:14

Michal
21.09.2018
12:36:00

Denis
21.09.2018
12:41:52

Vadim
21.09.2018
12:42:41
объем партиции около 400Г дб, переменную задал =2ТБ

Michal
21.09.2018
12:43:07

Vadim
21.09.2018
12:44:13
в clickhouse-server.err.log - ничего

Michal
21.09.2018
12:44:50
ммм... а если написать название партиции в кавычках?
кстати пятница, вечер приближается - вы точно хотите запустить мердж 400 гб данных сейчас? :)

Vadim
21.09.2018
12:45:44
в основном логе:
2018.09.21 15:39:34.821056 [ 320 ] <Debug> executeQuery: (from 127.0.0.1:57372, query_id: 6ce9eca5-d3eb-4b49-b
889-b9df3296ff49) optimize table graphite partition 201807 final
2018.09.21 15:39:34.822672 [ 320 ] <Information> default.graphite (StorageReplicatedMergeTree): Cannot select
parts for optimization: Current mutation versions of parts 20180701_20180731_0_94304_10 and 20180701_20180731_
94305_98563_38_94389 differ: 0 and 94389 respectively
в остальных партициях тоже были мутации и они смерджились в 1 кусок

Kirill
21.09.2018
12:47:48

Vadim
21.09.2018
12:48:05
кстати сейчас глянул, у 14 мутаций до сих пор is_done=0, месяц уже прошел
в system.merge_tree_settings
:) select * from system.merge_tree_settings;
SELECT *
FROM system.merge_tree_settings
Received exception from server (version 18.6.0):
Code: 60. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Table system.merge_tree_settings doesn't exist..
0 rows in set. Elapsed: 0.207 sec.


molo4ko
21.09.2018
12:49:00
Mikhail а оно должно работать с перекрестной репликацией?
https://gist.github.com/tkroman/c36520132e56bf051975f7c92720cb37
вот таблицы
селект с dpm=local:
select id,day from (
select id
from foo
all inner join (
select day
from bar
) using id
)
стектрейс:
2018.09.21 12:45:50.797244 [ 167 ] {c7341b14-6c0d-4cb8-b63b-f43c52209465} <Debug> executeQuery: (from xxx:55758) select id,day from ( select id from foo all inner join ( select day from bar ) using id )
2018.09.21 12:45:50.797608 [ 167 ] {c7341b14-6c0d-4cb8-b63b-f43c52209465} <Error> executeQuery: Code: 60, e.displayText() = DB::Exception: Table default.bar_replicated doesn't exist., e.what() = DB::Exception (from xxx:55758) (in query: select id,day from ( select id from foo all inner join ( select day from bar ) using id )), Stack trace:

Kirill
21.09.2018
12:49:55
Надо будет настройки подаблично в system.tables добавить, сейчас просто emgine строкой хранится

Vadim
21.09.2018
12:55:03
то есть сейчас настройка не действует?

Kirill
21.09.2018
12:58:03

Google

molo4ko
21.09.2018
13:03:42
@den_crane у меня проблема в том, что шарды лежат в других базах и выходит, что почему-то движок не может понять, куда отправлять подзапрос. но при этом in работает, как ожидается
то есть в config.xml в секции remote_servers default-базы проставлены правильно

Michal
21.09.2018
13:13:01
Вроде по идее всё должно работать.


molo4ko
21.09.2018
13:17:23
вот я уже даже саму на себя джойню:
2018.09.21 13:09:34.773358 [ 269715 ] {09125fe5-1504-4718-95f0-10c6bf93b6d8} <Debug> executeQuery: (from 10.8.0.174:55942) select foo,bar from tableA all inner join ( select foo from tableA where day = today() limit 1 ) using bar limit 1
2018.09.21 13:09:34.773751 [ 269715 ] {09125fe5-1504-4718-95f0-10c6bf93b6d8} <Error> executeQuery: Code: 60, e.displayText() = DB::Exception: Table default.tableA_replicated doesn't exist., e.what() = DB::Exception (from 10.8.0.174:55942) (in query: select foo,bar from tableA all inner join ( select foo from tableA where day = today() limit 1 ) using bar limit 1), Stack trace:

Alexey
21.09.2018
13:19:19
Ребят, друг ищет работу по профессии Senior C++ Developer (или TeamLead).
Ни у кого случаем на работе вакансия не открыта ? ?

Ivan
21.09.2018
13:23:23

Alexey
21.09.2018
13:23:49
Он по всем этим критериям подходит

Ivan
21.09.2018
13:24:18

Alexey
21.09.2018
13:24:26
в яндекс)

Ivan
21.09.2018
13:24:36
да

Alexey
21.09.2018
13:24:42
О круто)
спасибо)

Michael
21.09.2018
13:33:24
Ребятки, только не закидывайте меня тухлыми помидорами, для PBI пытаюсь настроить ClickHouse, подключался через питоновский модуль и через R studio, рефьюзит подключения, я правильно понимаю, чтобы подключаться извне, необходимо только users.xml прописать адреса с которых подключения разрешены?

Alexey
21.09.2018
13:34:48
нет
на сервере должен быть установлен odbc драйвер
если вы по odbc