Size: a a a

ClickHouse не тормозит

2021 February 08

S

Slach in ClickHouse не тормозит
Vitaly
А разве можно в sumIf множественные кондишены писать и еще в зависимости от предыдущего значения?
Если переводить на  какой нибудь ЯП, это была бы функция в которую приходит коллекцию, коллекцию перебираешь с конца и проверяешь каждый элемент и суммируешь
кондишены то можно писать, а вот предыдущее значение наверное только через window functions можно было бы попробовать сделать, но их еще не запилили
источник

VM

Vadim Milevskiy in ClickHouse не тормозит
такое ощущение, что эта задача у него где-то записана и на каждом старте он пытается ее запустить и падает
источник

S

Slach in ClickHouse не тормозит
Vadim Milevskiy
2021.02.08 14:48:56.301149 [ 54 ] {} <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 173, e.displayText() = DB::ErrnoException: Allocator: Cannot mmap 16.00 EiB., errno: 12, strerror: Cannot allocate memory
там весь стек трейс есть чуть ниже в логе
приведите
источник

VM

Vadim Milevskiy in ClickHouse не тормозит
Slach
там весь стек трейс есть чуть ниже в логе
приведите
0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x110e3bb0 in /usr/bin/clickhouse
1. DB::ErrnoException::ErrnoException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) @ 0x9988d8b in /usr/bin/clickhouse
2. DB::throwFromErrno(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int) @ 0x998871a in /usr/bin/clickhouse
3. Allocator<false, false>::allocNoTrack(unsigned long, unsigned long) @ 0x99b5231 in /usr/bin/clickhouse
4. Allocator<false, false>::realloc(void*, unsigned long, unsigned long, unsigned long) @ 0x99c32a6 in /usr/bin/clickhouse
5. ? @ 0xe28dc6c in /usr/bin/clickhouse
6. DB::ColumnString::insertFrom(DB::IColumn const&, unsigned long) @ 0xe294fac in /usr/bin/clickhouse
7. DB::FunctionIf::executeGeneric(DB::ColumnVector<char8_t> const*, DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb14b5a7 in /usr/bin/clickhouse
8. DB::FunctionIf::executeImpl(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb2630d9 in /usr/bin/clickhouse
9. DB::FunctionIf::executeForNullableThenElse(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb14c06e in /usr/bin/clickhouse
10. DB::FunctionIf::executeImpl(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb262b84 in /usr/bin/clickhouse
11. DB::ExecutableFunctionAdaptor::execute(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long, bool) @ 0x9bdfcf2 in /usr/bin/clickhouse
12. DB::ExpressionAction::execute(DB::Block&, bool, std::__1::shared_ptr<DB::ExtraBlock>&) const @ 0xde96d32 in /usr/bin/clickhouse
13. DB::ExpressionActions::execute(DB::Block&, bool) const @ 0xde9b240 in /usr/bin/clickhouse
14. DB::ExpressionBlockInputStream::readImpl() @ 0xe02dfef in /usr/bin/clickhouse
15. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
16. DB::ExpressionBlockInputStream::readImpl() @ 0xe02dfcf in /usr/bin/clickhouse
17. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
18. DB::MaterializingBlockInputStream::readImpl() @ 0xde9008f in /usr/bin/clickhouse
19. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
20. DB::MergeTreeDataMergerMutator::mutateSomePartColumns(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, std::__1::set<std::__1::shared_ptr<DB::IMergeTreeIndex const>, std::__1::less<std::__1::shared_ptr<DB::IMergeTreeIndex const> >, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeIndex const> > > const&, DB::Block const&, std::__1::shared_ptr<DB::IMergeTreeDataPart>, std::__1::shared_ptr<DB::IBlockInputStream>, long, std::__1::shared_ptr<DB::ICompressionCodec> const&, DB::MergeListEntry&, bool) const @ 0xe58cb0c in /usr/bin/clickhouse
источник

S

Slach in ClickHouse не тормозит
Vadim Milevskiy
Всем привет!
Вопросик, может кто сталкивался, сделали апдейт (да кх не про это, но всеже) на таблице с 10млн записей, там кластер поднят, в итоге КХ упал и теперь пытается рестартить и сразу же падает
судя по стектрейсу валится на мутации (тот самый адейт 10 миллионов записей)
пытается MATERIALIZED колонку посчитать через If функцию?

памяти на сервере сколько?

можно попробовать по одному background таску выполнять background_pool_size, background_schedule_pool_size, background_move_pool_size в 1 поставьте в default профиле

если не поможет то мутации лежат ваши где то в /var/lib/clickhouse в виде SQL файлов лежат
можно попробовать их просто грохнуть (предварительно стопнув сервер)
источник

VM

Vadim Milevskiy in ClickHouse не тормозит
Сейчас будем пробовать, но, пока, спасибо за идеи!
источник

Р

Рома in ClickHouse не тормозит
Добрый день, подскажите, пожалуйста, как правильно построить кросс-дц сетап кластеров кликхауса. Можно ли использовать несколько кластеров зукипера, по одному в каждом дц. Раскидывать кластер зукипера по нодам в разные дц/держать зукипер лишь в одном дц?
источник

S

Slach in ClickHouse не тормозит
Рома
Добрый день, подскажите, пожалуйста, как правильно построить кросс-дц сетап кластеров кликхауса. Можно ли использовать несколько кластеров зукипера, по одному в каждом дц. Раскидывать кластер зукипера по нодам в разные дц/держать зукипер лишь в одном дц?
вам кросс-дц репликация нужна (ReplicatedMergeTree)?
или только кросс-дц вставка и чтение (Distributed)?
источник

Р

Рома in ClickHouse не тормозит
Slach
вам кросс-дц репликация нужна (ReplicatedMergeTree)?
или только кросс-дц вставка и чтение (Distributed)?
Репликация нужна, да.
источник

VM

Vadim Milevskiy in ClickHouse не тормозит
Спасибо! Помогло удаление файла с мутацией
источник

S

Slach in ClickHouse не тормозит
Рома
Репликация нужна, да.
тогда кластер ZK один
и кросс-дц пинг критически важен, 30-60ms между нодами ZK
источник

VM

Vadim Milevskiy in ClickHouse не тормозит
хранилось как txt файлик
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Ребят, всем привет!
Есть Materialized кололнка, в которой выполняется регулярка, которая экстрактит данные из другой колонки.
Регулярка обновилась и хотелось бы обновить некоторые исторические данные. КХ ругается что нельзя делать ALTER UPDATE для MATERIALIZED COLUMN.
Есть вариант как-то все же заапдейтить колонку, или нужно пересоздавать чтобы обновить исторические значения?
источник

S

Slach in ClickHouse не тормозит
Vadim Milevskiy
Спасибо! Помогло удаление файла с мутацией
ну это. у вас теперь часть партов смутировала, а чать нет
источник

Р

Рома in ClickHouse не тормозит
Slach
тогда кластер ZK один
и кросс-дц пинг критически важен, 30-60ms между нодами ZK
То есть предпочтительнее держать ноды зукипера в разных дц?
источник

S

Slach in ClickHouse не тормозит
Рома
Добрый день, подскажите, пожалуйста, как правильно построить кросс-дц сетап кластеров кликхауса. Можно ли использовать несколько кластеров зукипера, по одному в каждом дц. Раскидывать кластер зукипера по нодам в разные дц/держать зукипер лишь в одном дц?
несколько кластеров ZK точно не получится для кросс-дц репликации

потому что все реплики коннектятся к кластеру который в <zookeeper> конфиге прописан, и если ZK в разных ДЦ разные кластера, тогда никакой репликации не будет

все остальное через <remote_servers>
сами ноды по ДЦ разным раскидываете это нормально
и https://clickhouse.tech/docs/en/operations/settings/settings/#settings-load_balancing
nearest hostname
https://clickhouse.tech/docs/en/operations/settings/settings/#load_balancing-nearest_hostname

но пинги у нод ZK между собой должны быть минимальными
вот тут примеры настроек
https://clickhouse.tech/docs/en/operations/tips/#zookeeper
в яндексе есть кросс-дц

НО, есть ли там кросс-ГЕО-дц (РФ + Штаты) я не знаю
источник

S

Slach in ClickHouse не тормозит
Рома
То есть предпочтительнее держать ноды зукипера в разных дц?
предпочтительнее в одном, но это плохо для кейса "ДЦ вышел из строя"
источник

S

Slach in ClickHouse не тормозит
Vladimir Bunchuk
Ребят, всем привет!
Есть Materialized кололнка, в которой выполняется регулярка, которая экстрактит данные из другой колонки.
Регулярка обновилась и хотелось бы обновить некоторые исторические данные. КХ ругается что нельзя делать ALTER UPDATE для MATERIALIZED COLUMN.
Есть вариант как-то все же заапдейтить колонку, или нужно пересоздавать чтобы обновить исторические значения?
ALTER TABLE MODIFY COLUMN
источник

Р

Рома in ClickHouse не тормозит
Slach
несколько кластеров ZK точно не получится для кросс-дц репликации

потому что все реплики коннектятся к кластеру который в <zookeeper> конфиге прописан, и если ZK в разных ДЦ разные кластера, тогда никакой репликации не будет

все остальное через <remote_servers>
сами ноды по ДЦ разным раскидываете это нормально
и https://clickhouse.tech/docs/en/operations/settings/settings/#settings-load_balancing
nearest hostname
https://clickhouse.tech/docs/en/operations/settings/settings/#load_balancing-nearest_hostname

но пинги у нод ZK между собой должны быть минимальными
вот тут примеры настроек
https://clickhouse.tech/docs/en/operations/tips/#zookeeper
в яндексе есть кросс-дц

НО, есть ли там кросс-ГЕО-дц (РФ + Штаты) я не знаю
Спасибо!
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Slach
ALTER TABLE MODIFY COLUMN
модифай уже сделал
новые данные записываются правильно, а вот старые остались записанными по старому правилу
источник