@clickhouse_ru

Страница 668 из 723
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
Хм. Т.е. данные "застревают" в Distributed не доходя до ReplicatedMergeTree. Может быть Distributed не может подключиться к другим серверам? И только если на локалхост попадает то инсерт идет?
Между нодами нет проблем соединяться + запросы на Distributed идут очень хорошо. Гипотеза хорошая, но тогда не понимаю физического смысла ругани ZK ?

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

Alexander
21.09.2018
09:54:01
А есть кореляция между неудавшимися инсертами и записями в логах зукипера?
Записи идут каждые 5 секунд, записи в логах зукипера появляются каждые 1-3 минуты. Но появились они как раз тогда, когда данные начали теряться.

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

проверил руками умеет

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

для ReplacingMergeTree

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

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

Michal
21.09.2018
10:12:36
а как ключевое слово FINAL влияет на этот процесс?
А в документации нет ответа на этот вопрос?

Wolf
21.09.2018
10:13:54
а как ключевое слово FINAL влияет на этот процесс?
на процесс следующего инсерта по сути никак

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, при этом у меня при подсчете результатов есть дубли.

Саша
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
Попробуйте включить insert_distributed_sync=1 может тогда скажет что у него не так?
Ох, спасибо, сразу грохнулся, есть теперь новые вводные ) Как разберемся – отпишусь.

Michal
21.09.2018
10:54:53
не очень понятен результат. Допустим я вызвал оптимизацию партиций OPTIMIZE TABLE db.name PARTITION partition, этот процесс занял 5 минут. Как я понимаю этим 5 минут и происходило слияние нескольких кусков в один. Если бы я вызвал OPTIMIZE TABLE db.name PARTITION partition FINAL , то рзультат слияния и оптимизации был бы такой же или другой?
OPTIMIZE без FINAL объединяет КАКИЕ-ТО куски (те которые согласно представлению КХ более всего в этом нуждаются). В результате кусков будет просто меньше. OPTIMIZE FINAL объединяет все куски одной партиции. В результате останется один большой кусок.

Google
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
видел тут вопрос по версии. сейчас стабильная версия хрома, которая у меня и есть — 69.0.3497.92.
Сначала прочитал хром на последней федоре. Потом перечитал что это последний хром на какой-то федоре :) Сейчас попробовал - действительно на одностраничной версии картиники не работают.

Угу. Похоже на то: 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
не очень понятен результат. Допустим я вызвал оптимизацию партиций OPTIMIZE TABLE db.name PARTITION partition, этот процесс занял 5 минут. Как я понимаю этим 5 минут и происходило слияние нескольких кусков в один. Если бы я вызвал OPTIMIZE TABLE db.name PARTITION partition FINAL , то рзультат слияния и оптимизации был бы такой же или другой?
Гляжу на код, похоже я был не совсем прав. OPTIMIZE TABLE - выбирает для объединения какие-то куски (при выборе старается чтоб размер финального куска не превышал max_bytes_to_merge_at_max_space_in_pool), делает это так же как фоновые слияния OPTIMIZE TABLE PARTITION xxx - выбирает для объединения все куски указанной партиции (если кусок всего один - не делает ничего). OPTIMIZE TABLE PARTITION xxx FINAL - выбирает для объединения все куски указанной партиции (если кусок всего один - переписывает его ещё раз). OPTIMIZE TABLE FINAL - делает OPTIMIZE TABLE PARTITION xxx FINAL во всех партициях.

в том и дело, что у меня это не работает для джойнов. для вложенных селектов (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
Ничего не понимаю. Если у вас есть таблицы 1) tableX_distributed которая "смотрит" на tableX_sharded_replicated 2) tableY_distributed которая "смотрит" на tableY_sharded_replicated и запускаете SELECT .. FROM tableX_distributed INNER JOIN tableY_distributed. и хотите добиться чтобы на каждом шарде были выполнены SELECT .. FROM tableX_sharded_replicated INNER JOIN tableY_sharded_replicated а результат объединен, то это соответствует настройке distributed_product_mode=local.

Можете на каждом шарде посмотреть какой запрос прилетает от 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

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
А max_bytes_to_merge_at_max_space_in_pool где задается ?
merge_tree настрйки или для конкретной таблицы в SETTINGS

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

Google
Michal
21.09.2018
12:36:00
в смысле джоинить distributed с distributed?)
Выполнять JOIN. Долгая история. См. выше :)

Denis
21.09.2018
12:41:52
Но мне больше нравится вариант с distributed_product_mode. Джойнить distributed с другой distributed - как-то более логично :)
ммм, эээ, но это не тоже самое по производительности. И не учитывает локальность данных в шардах.

Vadim
21.09.2018
12:42:41
Если для всех таблиц то тут: https://github.com/yandex/ClickHouse/blob/9975960d77e0745ebec07b69129ac816a9738439/dbms/programs/server/config.xml#L318
Задал, в config-preprocessed.xml изменения вижу, в system.settings не вижу данной переменной, данные по optimize table ... partition 201807 final; не мерджатся, что ещё сделать?

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

Michal
21.09.2018
12:43:07
ммм, эээ, но это не тоже самое по производительности. И не учитывает локальность данных в шардах.
Почему? При настройке local обе таблицы будут заменены на локальные при отправке на шарды.

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 кусок

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
то есть сейчас настройка не действует?
Действует, просто настройки merge_tree как системную таблицу добавил недавно.

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

то есть в config.xml в секции remote_servers default-базы проставлены правильно

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). Ни у кого случаем на работе вакансия не открыта ? ?

Alexey
21.09.2018
13:23:49
https://yandex.ru/jobs/vacancies/dev/dev_clickhouse/
Иван, вы там же работаете ?)

Он по всем этим критериям подходит

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

Страница 668 из 723