StarRocks meetup 19.06: итоги
Запишу сюда, чтобы висело в закрепе: youtube, rutube, vk.
И немного статистики по мероприятию, которую обычно никто не пишет :)
Число регистраций: 282.
Число уникальных зрителей: 220.
Средний онлайн на протяжении всех докладов: 90-130.
Хороший такой зал собрали, спасибо всем.
Запишу сюда, чтобы висело в закрепе: youtube, rutube, vk.
И немного статистики по мероприятию, которую обычно никто не пишет :)
Число регистраций: 282.
Число уникальных зрителей: 220.
Средний онлайн на протяжении всех докладов: 90-130.
Хороший такой зал собрали, спасибо всем.
👍10
Решение кроилова
За всей движухой постоянно коплю долги на канале в виде постов, попробую нагонять.
Решение поста с отключением 50% дисков от кластера в к8с.
Как и писалось, в кубике через оператор нельзя менять для существующих statefulset ничего кроме количества реплик, энв переменных, лейблов и всяких других описательных куб штук. Удалить, изменить или добавить volume нельзя. Поэтому планируйте заранее свой кластер с умом, а не как я :) Так вот, если нельзя, но очень хочется - просто при живом операторе удаляем statefulset для be нод. Поды будут удалены один за другим, и после исчезновения сущности SF оператор заново её создаст и подключит старые диски с данными. Ни один байт не пострадал, хотя я уже стал мастером бекапов.
Но на самом деле это самая простая часть этой операции, и самая надёжная. А вот изменение конфига старрокс с удалением из него директорий хранения на живом кластере убивает все данные вне зависимости от количества реплик. И делает это весьма некрасиво. Данные между всеми директориями и на бе ноде нарезаются очень ровно, а значит скорее всего и между нодами кластера одинаковые данные будут лежать в одном и том же разделе (напоминаю, что в доке ср рекомендуют использовать несколько разделов на одном сервере - это сильное удешевление требований к железу и повышение скорости). В итоге реплик потерянных данных в случае кластеров с малым количеством нод не будет :(
При этом кластер будет добро рапортовать в метриках, что диски заняты, количество таблетов старое, количество строк не изменилось, но на запросе реплик или попытке сделалать селект из любой табличке кроме меты падать с пустой ошибкой.
Вариарт решения - восстановление из бекапов, что и сделал. Операцию можно запускать синхронно, то есть сразу кормить пачки схем на восстановление.
По итогам - я думал, что будет хуже. А все решилось тех окном на 3 часа.
За всей движухой постоянно коплю долги на канале в виде постов, попробую нагонять.
Решение поста с отключением 50% дисков от кластера в к8с.
Как и писалось, в кубике через оператор нельзя менять для существующих statefulset ничего кроме количества реплик, энв переменных, лейблов и всяких других описательных куб штук. Удалить, изменить или добавить volume нельзя. Поэтому планируйте заранее свой кластер с умом, а не как я :) Так вот, если нельзя, но очень хочется - просто при живом операторе удаляем statefulset для be нод. Поды будут удалены один за другим, и после исчезновения сущности SF оператор заново её создаст и подключит старые диски с данными. Ни один байт не пострадал, хотя я уже стал мастером бекапов.
Но на самом деле это самая простая часть этой операции, и самая надёжная. А вот изменение конфига старрокс с удалением из него директорий хранения на живом кластере убивает все данные вне зависимости от количества реплик. И делает это весьма некрасиво. Данные между всеми директориями и на бе ноде нарезаются очень ровно, а значит скорее всего и между нодами кластера одинаковые данные будут лежать в одном и том же разделе (напоминаю, что в доке ср рекомендуют использовать несколько разделов на одном сервере - это сильное удешевление требований к железу и повышение скорости). В итоге реплик потерянных данных в случае кластеров с малым количеством нод не будет :(
При этом кластер будет добро рапортовать в метриках, что диски заняты, количество таблетов старое, количество строк не изменилось, но на запросе реплик или попытке сделалать селект из любой табличке кроме меты падать с пустой ошибкой.
Вариарт решения - восстановление из бекапов, что и сделал. Операцию можно запускать синхронно, то есть сразу кормить пачки схем на восстановление.
По итогам - я думал, что будет хуже. А все решилось тех окном на 3 часа.
❤5
dbt & hive catalog
Текущий адаптер dbt нормально работает на чтение и запись с форматами старрокс и только на чтение из внешних каталогов, не смотря умение создавать таблицы и писать в них со стороны SR. Дел то на 5 минут, подумал я, допишу за полчаса поддержку и можно перевозить нашу репу дбт спарка. Написал для пробы пера table материализацию. А вот и нифига, сказал мне dbt, выдав ошибку: 1064 (HY000): This connector doesn't support alter table type: RENAME.
Вы поняли, да? :) StarRocks не умеет переименовывать таблицы во внешних каталогах, а даже если бы умел - то создание tmp_relation в стандартных table/incremental материализациях напрочь ломают логику сохранения таблиц в заданный location. В итоге надо писать свои материализации по количеству каталог*2 (таблица, инкремент, вьюха по идее должна и так создавать, если она нужна конечно.) Ну ладно, чуть посложнее и чуть больше времени, но вполне типовая история при работе с dbt.
Но как это все будет происходить в новом dbt fusion с растом решительно не понятно.
Текущий адаптер dbt нормально работает на чтение и запись с форматами старрокс и только на чтение из внешних каталогов, не смотря умение создавать таблицы и писать в них со стороны SR. Дел то на 5 минут, подумал я, допишу за полчаса поддержку и можно перевозить нашу репу дбт спарка. Написал для пробы пера table материализацию. А вот и нифига, сказал мне dbt, выдав ошибку: 1064 (HY000): This connector doesn't support alter table type: RENAME.
Вы поняли, да? :) StarRocks не умеет переименовывать таблицы во внешних каталогах, а даже если бы умел - то создание tmp_relation в стандартных table/incremental материализациях напрочь ломают логику сохранения таблиц в заданный location. В итоге надо писать свои материализации по количеству каталог*2 (таблица, инкремент, вьюха по идее должна и так создавать, если она нужна конечно.) Ну ладно, чуть посложнее и чуть больше времени, но вполне типовая история при работе с dbt.
Но как это все будет происходить в новом dbt fusion с растом решительно не понятно.
docs.starrocks.io
Hive catalog | StarRocks
A Hive catalog is a kind of external catalog that is supported by StarRocks from v2.4 onwards. Within Hive catalogs, you can:
❤1
dbt & hive catalog: эпилог 1
Как оказалось на самом деле - добавлять свои материализации еще проще, чем патчить адаптер. Материализации можно размещать в своих локальных проектах в директории макросов и они легко подтягиваются в проект. Поэтому написание hive_table заняло времени еще меньше, нежели патч в адаптер.
В таком виде таблица создается и отлично читается и из starrocks, и из spark. Но при повторном запуске для проверки удаления все сломалось и тут я как понял...
Проблема в хранении меты внутри старрокса, таблицы из внешних каталогов не доступны во внутренних таблицах в схеме information_schema. Это порождает боль - дбт не может определить, есть ли такая таблица. Да, можно патчить адаптер и выгребать список таблиц через show catalogs..show databases in catalog..show tables from catalog.schema (я такое уже когда-то делал для спарк адаптера не помню почему). Вот только тип мы все равно не узнаем - вью или таблица :( И кстати адаптер поддерживает определение catalog в профиле, но при указании недефолтного значения ломается вообще все - дбт ищет эту самую information_schema в этом внешнем каталоге и естественно не находит.
Как оказалось на самом деле - добавлять свои материализации еще проще, чем патчить адаптер. Материализации можно размещать в своих локальных проектах в директории макросов и они легко подтягиваются в проект. Поэтому написание hive_table заняло времени еще меньше, нежели патч в адаптер.
{{
config(
alias='hp_appsflyer_blocked_installs_test',
schema='dapadoop.sandbox',
materialized='hive_table',
file_type='parquet',
tags=['hp_appsflyer_blocked_installs_test', ]
)
}}
В таком виде таблица создается и отлично читается и из starrocks, и из spark. Но при повторном запуске для проверки удаления все сломалось и тут я как понял...
Проблема в хранении меты внутри старрокса, таблицы из внешних каталогов не доступны во внутренних таблицах в схеме information_schema. Это порождает боль - дбт не может определить, есть ли такая таблица. Да, можно патчить адаптер и выгребать список таблиц через show catalogs..show databases in catalog..show tables from catalog.schema (я такое уже когда-то делал для спарк адаптера не помню почему). Вот только тип мы все равно не узнаем - вью или таблица :( И кстати адаптер поддерживает определение catalog в профиле, но при указании недефолтного значения ломается вообще все - дбт ищет эту самую information_schema в этом внешнем каталоге и естественно не находит.
Getdbt
Create new materializations | dbt Developer Hub
Learn how to create your own materializations.
❤1
dbt & hive catalog: эпилог 2
Закрываю для себя идею реализации записи в паркеты через dbt через starrocks, и причиной тому 3 вещи.
Причина 1: можно увидеть на картинке. Время приведено в секундах расчета без поднятий сессий, взято для спарка из dbt spark. Один и тот же код прогоняется через датасеты разных размеров (у нам они приходят именно так, это разные дневыне отчеты от одного провайдера). И чтобы считать на спарке 10 мегабайт в течение 80 секунд - надо написать выдающийся код витрины. Уже на сотне мегабайт старрокс ушел за пределы лимитов и стал проигрывать спарку, что я попробовал победить перегонкой данных в родной формат вместо паркета (хотя казалось бы - какая разница, проблема таких долгих вычисления явно не чтение). И даже получилось отыграть скорость, но на гигабайтах и это не помогло. Запросы были переведны с диалекта спарка на диалект старрокс без оптимизаций как есть, по пути заменив только функции работы с временем и хешами. Овчинка выделки не стоит, тем более мы все равно не собираемся отказываться от спарка.
Причина 2: названная в прошлом посте - отсутствие метаданных по внешним каталогам в дбт/dbeaver/datagrip (клиентах). Тут кажется начинает стрелять в ногу как раз совместимость с mysql (но это не точно). И пока эта фича не будет реализована - со стороны людей будет много недопонимания, а со стороны сервисов много грязного кода. Причем все каталоги отлично показываются в вебке старрокса по порту 8030 :(
Причина 3: высокая сложность реализации дев и стейдж стендов. Для тестирования такого совмещенного проекта дбт надо поднимать не только старрокс, но старрокс в связке с хадупом и хмс. Не очень просто, но так или иначе нам придется это делать.
Взяли себе в беклог устранение причины 3 и пристально наблюдаем за развитием старрокс для устранения причины 2. А 1 кажется будет решена так или иначе, просто по причине текущего вектора развития старрокса как lakehouse движка. Вот такие пироги.
Закрываю для себя идею реализации записи в паркеты через dbt через starrocks, и причиной тому 3 вещи.
Причина 1: можно увидеть на картинке. Время приведено в секундах расчета без поднятий сессий, взято для спарка из dbt spark. Один и тот же код прогоняется через датасеты разных размеров (у нам они приходят именно так, это разные дневыне отчеты от одного провайдера). И чтобы считать на спарке 10 мегабайт в течение 80 секунд - надо написать выдающийся код витрины. Уже на сотне мегабайт старрокс ушел за пределы лимитов и стал проигрывать спарку, что я попробовал победить перегонкой данных в родной формат вместо паркета (хотя казалось бы - какая разница, проблема таких долгих вычисления явно не чтение). И даже получилось отыграть скорость, но на гигабайтах и это не помогло. Запросы были переведны с диалекта спарка на диалект старрокс без оптимизаций как есть, по пути заменив только функции работы с временем и хешами. Овчинка выделки не стоит, тем более мы все равно не собираемся отказываться от спарка.
Причина 2: названная в прошлом посте - отсутствие метаданных по внешним каталогам в дбт/dbeaver/datagrip (клиентах). Тут кажется начинает стрелять в ногу как раз совместимость с mysql (но это не точно). И пока эта фича не будет реализована - со стороны людей будет много недопонимания, а со стороны сервисов много грязного кода. Причем все каталоги отлично показываются в вебке старрокса по порту 8030 :(
Причина 3: высокая сложность реализации дев и стейдж стендов. Для тестирования такого совмещенного проекта дбт надо поднимать не только старрокс, но старрокс в связке с хадупом и хмс. Не очень просто, но так или иначе нам придется это делать.
Взяли себе в беклог устранение причины 3 и пристально наблюдаем за развитием старрокс для устранения причины 2. А 1 кажется будет решена так или иначе, просто по причине текущего вектора развития старрокса как lakehouse движка. Вот такие пироги.
❤3
Четверг это почти пятница
Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки. И весь доклад про то, как вписывать новые базы данных на примере старрокса в текущую инфраструктуру и как это делать, чтобы максимально увеличивать шансы на успешность миграции на них в компаниях малых и средних. Особенно тех, где вам этот приказ не спускает сверху ЛПР, и вам еще надо продать эту идею всем своим клиентам :)
Видео на ютубе
Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки. И весь доклад про то, как вписывать новые базы данных на примере старрокса в текущую инфраструктуру и как это делать, чтобы максимально увеличивать шансы на успешность миграции на них в компаниях малых и средних. Особенно тех, где вам этот приказ не спускает сверху ЛПР, и вам еще надо продать эту идею всем своим клиентам :)
Видео на ютубе
YouTube
Станислав Лысиков, "А вот нам бы новую БД для аналитиков в платформу приземлить..."
Станислав Лысиков, "А вот нам бы новую БД для аналитиков в платформу приземлить..."
Hadoop, clickhouse, k8s и даже greenplum с cassandra — в какой момент набор кубиков на доске архитектора становится платформой данных? В своём докладе расскажу, как наша…
Hadoop, clickhouse, k8s и даже greenplum с cassandra — в какой момент набор кубиков на доске архитектора становится платформой данных? В своём докладе расскажу, как наша…
👍12❤1
Starrocks and modern data stack pinned «Четверг это почти пятница Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки.…»
Красивые картинки
Сразу скажу, что рекламу не даю - просто картинка понравилась :)
Так вот, пришла на почту реклама от VK - прям одно загляденье. Ребята каждым пунктом бьют по живому - тут тебе и уменьшение затрат, и повышение скорости, и линейный рост вместо экспоненциального.
А потом ради интереса я в эту картинку то всмотрелся, и получилось что у нас раза в 2 дешевле самого дешевого варианта. Кто-то вспомнит про то, что управляемые сервисы обслуживать не надо и здесь будет экономия, но до 300 тб и так на это нужно примерно 0.2-0.3 ставки (а то и ноль, потому что дата инженерам придется понимать как все нормально раскладывать в любых вариантах).
Вот так и сорвался наш переезд в светлое будущее 😂
Сразу скажу, что рекламу не даю - просто картинка понравилась :)
Так вот, пришла на почту реклама от VK - прям одно загляденье. Ребята каждым пунктом бьют по живому - тут тебе и уменьшение затрат, и повышение скорости, и линейный рост вместо экспоненциального.
А потом ради интереса я в эту картинку то всмотрелся, и получилось что у нас раза в 2 дешевле самого дешевого варианта. Кто-то вспомнит про то, что управляемые сервисы обслуживать не надо и здесь будет экономия, но до 300 тб и так на это нужно примерно 0.2-0.3 ставки (а то и ноль, потому что дата инженерам придется понимать как все нормально раскладывать в любых вариантах).
Вот так и сорвался наш переезд в светлое будущее 😂
❤3😁2
Совместимость с mysql
#mysql #qliksense #starrocks
Очередной вечер прохладных историй про mysql :) Я вот когда увидел то, что на картинке, был весьма озадачен. Округление datetime, все можно встретить в этой жизни. Но нет, оказывается, что это не баг, а фича. Более того, для 5 версии изменить поведение сервера нелья, а в 8 появилась настройка TIME_TRUNCATE_FRACTIONAL, которая меняет поведение. Дополнительно написано вот такое:
Ради интереса проверил vitess (который построен на mysql) - поведение такое же.
А вот StarRocks уже показывает ожидаемо - обрезая часть с миллисекундами.
И вот когда кто-то хочет соответствовать под чужой стандарт (драйвер, диалект) должен ли он соблюдать и такое вот поведение? :)
Подключили ср к qliksense через odbc mysql драйвер как замену spark драйверу - пока все классно. Как же это здорово, когда не приходится вкорячивать эти кривые старые (или новые как у кликхауза - которые кстати у нас сломали в очередной раз) драйвера и все сразу работает.
#mysql #qliksense #starrocks
Очередной вечер прохладных историй про mysql :) Я вот когда увидел то, что на картинке, был весьма озадачен. Округление datetime, все можно встретить в этой жизни. Но нет, оказывается, что это не баг, а фича. Более того, для 5 версии изменить поведение сервера нелья, а в 8 появилась настройка TIME_TRUNCATE_FRACTIONAL, которая меняет поведение. Дополнительно написано вот такое:
No warning or error is given when such rounding occurs. This behavior follows the SQL standard.
Ради интереса проверил vitess (который построен на mysql) - поведение такое же.
А вот StarRocks уже показывает ожидаемо - обрезая часть с миллисекундами.
И вот когда кто-то хочет соответствовать под чужой стандарт (драйвер, диалект) должен ли он соблюдать и такое вот поведение? :)
Подключили ср к qliksense через odbc mysql драйвер как замену spark драйверу - пока все классно. Как же это здорово, когда не приходится вкорячивать эти кривые старые (или новые как у кликхауза - которые кстати у нас сломали в очередной раз) драйвера и все сразу работает.
❤2
Qlik Sense и 3.5
#qliksense #starrocks #3.5
Сперва про картинку. Данные лежат в hdfs в parquet. Слева доступ через kyuubi+spark+hive driver, справа через starrocks + mysql odbc driver. Кажется, что это бенчмарк драйверов, а совсем не систем.
5 дней назад на канале celerdata вышло видео про релиз 3.5. Мне было смотреть интересно, хотя обычно я пролистываю.
Что показалось интересным и крутым:
- разница в перформансе на стандартных тестах между shared data и shared nothing на прогретых кешах составляет всего 4%. Результат космический.
- создание снепшотов кластеров (это как раз та заявочка на создание тестовых окружений, ради чего часто выбирают айсберг)
- time-to-live для партиций и создание мат вью поверх айсберг таблиц (или любых других таблиц из внешних каталогов). То есть вместо надежды на механизм кеширования мы делаем надежный sla по скорости запросов, создавая мат вью надо горячими частями таблиц фактов во внешних каталогах. Идея очень хороша и мне крайне зашло: я выше писал, что работа с внешними каталогами требует нетривиальных стендов разработки. А подход с заносом таблиц внутрь позволяет всё значительно упростить - слой мат вью создает источники, а дальше внутри старрокса уже дбт как обычно работает с моделями.
Остается дождаться стабильности, потому что пока мы все еще на 3.3 ветке :)
#qliksense #starrocks #3.5
Сперва про картинку. Данные лежат в hdfs в parquet. Слева доступ через kyuubi+spark+hive driver, справа через starrocks + mysql odbc driver. Кажется, что это бенчмарк драйверов, а совсем не систем.
5 дней назад на канале celerdata вышло видео про релиз 3.5. Мне было смотреть интересно, хотя обычно я пролистываю.
Что показалось интересным и крутым:
- разница в перформансе на стандартных тестах между shared data и shared nothing на прогретых кешах составляет всего 4%. Результат космический.
- создание снепшотов кластеров (это как раз та заявочка на создание тестовых окружений, ради чего часто выбирают айсберг)
- time-to-live для партиций и создание мат вью поверх айсберг таблиц (или любых других таблиц из внешних каталогов). То есть вместо надежды на механизм кеширования мы делаем надежный sla по скорости запросов, создавая мат вью надо горячими частями таблиц фактов во внешних каталогах. Идея очень хороша и мне крайне зашло: я выше писал, что работа с внешними каталогами требует нетривиальных стендов разработки. А подход с заносом таблиц внутрь позволяет всё значительно упростить - слой мат вью создает источники, а дальше внутри старрокса уже дбт как обычно работает с моделями.
Остается дождаться стабильности, потому что пока мы все еще на 3.3 ветке :)
❤4😁1
Воу, воу, воу
И самое забавное, что два доклада по ср будут проходить в одно и тоже время. Что происходит то :)
А про дорис пока ничего...
И самое забавное, что два доклада по ср будут проходить в одно и тоже время. Что происходит то :)
А про дорис пока ничего...
😁7
StarRocks summit 2025
#starrocks
https://summit.starrocks.io/2025
А вот внезапно (для меня конечно) скоро пройдет вот такое событие, и оно даже будет онлайн. Докладчиков много, людей из компании много - так что если хочется задать каверзные вопросы или послушать про 4 версию - наверное стоит идти.
#starrocks
https://summit.starrocks.io/2025
А вот внезапно (для меня конечно) скоро пройдет вот такое событие, и оно даже будет онлайн. Докладчиков много, людей из компании много - так что если хочется задать каверзные вопросы или послушать про 4 версию - наверное стоит идти.
❤6
Куда же без AI
Пропал на 2 недели, потому что занимался очень инженерными задачами - писал очередной стриминг, потом бота для соединения гитлаба со слаком и опять веселился с апишкой qlik sense. Задачи по миграции висят мертвым грузом, каждую неделю говорю себе "ну еще недельку и точно получится добраться".. и нет.
Последнюю неделю достаточно злостно подсел на курсор и не могу понять есть ли толк :) Точно можно сказать, что его нельзя и не получится применять без знаний ни контекста бизнеса, ни знаний языка. Что в sql, что в python, что в golang - везде в итоге приходится достаточно активно думать. Единственное что, курсор закрывает (или пытается закрыть) какие-то неочевидные корнер кейсы в коде и очень хорошо пишет документацию. Это прям его конек. А уж документацию к моделям в дбт генерировать просто сказка.
В итоге выиграл ли я по перфу - нет, ни сколько. Но приложение может быть будет меньше падать и потомкам описание кода читать понравится :) Двадцать баксов того стоят, тем более можно общаться с ним на русском, не теряя точность при переводе.
PS Самое злое было, кстати, написать взаимодействие с апи клика. модели генерировали кучу галюцинаций, каждая что-то свое. Поэтому закрытые сервисы и проиграют, с ними не будет опыта и будут дорогие специалисты :) Которые могут открыть веб клика, нажать ф12 и вытянуть необходимые параметры из нетворк консоли 😂
Пропал на 2 недели, потому что занимался очень инженерными задачами - писал очередной стриминг, потом бота для соединения гитлаба со слаком и опять веселился с апишкой qlik sense. Задачи по миграции висят мертвым грузом, каждую неделю говорю себе "ну еще недельку и точно получится добраться".. и нет.
Последнюю неделю достаточно злостно подсел на курсор и не могу понять есть ли толк :) Точно можно сказать, что его нельзя и не получится применять без знаний ни контекста бизнеса, ни знаний языка. Что в sql, что в python, что в golang - везде в итоге приходится достаточно активно думать. Единственное что, курсор закрывает (или пытается закрыть) какие-то неочевидные корнер кейсы в коде и очень хорошо пишет документацию. Это прям его конек. А уж документацию к моделям в дбт генерировать просто сказка.
В итоге выиграл ли я по перфу - нет, ни сколько. Но приложение может быть будет меньше падать и потомкам описание кода читать понравится :) Двадцать баксов того стоят, тем более можно общаться с ним на русском, не теряя точность при переводе.
PS Самое злое было, кстати, написать взаимодействие с апи клика. модели генерировали кучу галюцинаций, каждая что-то свое. Поэтому закрытые сервисы и проиграют, с ними не будет опыта и будут дорогие специалисты :) Которые могут открыть веб клика, нажать ф12 и вытянуть необходимые параметры из нетворк консоли 😂
👍2
Совсем не такую надпись вы надеетесь получить как результат запроса
🤦♂️
Следом запрос
SR - база, которая обещает вам веселые выходные...
select * from information_schema.task_runs;, имея при этом абсолютно зеленые метрики в графане и вроде как адекатватный выхлоп на селекты к данным. Да еще в пятницу вечером
Следом запрос
show backends показывает, что на половине нод нет данных, что входит опять же в прямое противоречие с графаной. А хартбит в этом запросе и вовсе выдает месячной давности таймстамп.SR - база, которая обещает вам веселые выходные...
Please open Telegram to view this post
VIEW IN TELEGRAM
😱6😢3❤1
5 минут работы, вошли и вышли
Где-то в конце июня я писал пост про то, что отрезал от текущего кластера старрокс половину дисков. И тогда была чем-то похожая на пост выше история - все таблицы были недоступны на чтение, мета отдавала невалидные значение, а репликацию и вовсе нельзя было посмотреть. Решился вопрос достаточно просто - восстановлением всех таблиц с данными из бекапа.
Логично предположить, что таблицы с технической метой (схема information_schema) точно так же хранятся на основных разделах данных и скорее всего-то же будут испорчены. Тогда я не проверил конкретно эту таблицу, но по остальным решил об успешности проведения работ.
Копаться было интересно, потому что сработало нагромаждение багов. Когда делаешь запрос о судьбе запущенной задачи
на самом деле идет обращение в совсем другую таблицу (на что я не обратил сначала внимания). И все попытки удалить существующие записи или выполнить транкейт этой таблицы task_runs утыкался в то, что такая операция невозможна.
Посидев, подумав, еще раз прочитав ошибку увидел, что запрос выше внутри превращается на самом деле в запрос
Не сообразив, что это обычная таблица я подумал, что придется чистить таблеты прямо руками с диска и выполнил запрос на получение этих самых таблетов для таблички (и кстати говоря на этом пункте дипсик врёт безбожно, но спасает дока)
И результат вы можете увидеть выше :) Путь к таблетам неизвестен, но они точно в консистентном состоянии, прямо мамой клянусь :)
Ругнул себя в очередной раз за кубернетес, в котором удаление файлов таблетов на диске не такая уж тривиальная операция вдруг подумал - а что если это обычная OLAP таблица.
Раз, и delete по таблице сработал. Раз, и транкейт по таблице сработал. И сразу после этого все и заработало. Более того, каким-то образом там появилась задача от позавчера (после транкейта то...).
Паника снята, кластер работает штатно, таски показываются. Осадочек остался, но тут и сам наделал делов (а база это кстати переварила, за что ей честь и уважуха).
Где-то в конце июня я писал пост про то, что отрезал от текущего кластера старрокс половину дисков. И тогда была чем-то похожая на пост выше история - все таблицы были недоступны на чтение, мета отдавала невалидные значение, а репликацию и вовсе нельзя было посмотреть. Решился вопрос достаточно просто - восстановлением всех таблиц с данными из бекапа.
Логично предположить, что таблицы с технической метой (схема information_schema) точно так же хранятся на основных разделах данных и скорее всего-то же будут испорчены. Тогда я не проверил конкретно эту таблицу, но по остальным решил об успешности проведения работ.
Копаться было интересно, потому что сработало нагромаждение багов. Когда делаешь запрос о судьбе запущенной задачи
SELECT state, PROGRESS, ERROR_MESSAGE FROM information_schema.task_runs where task_name = 'insert-3bf372bf-7a09-11f0-9446-1223cff75f84';
на самом деле идет обращение в совсем другую таблицу (на что я не обратил сначала внимания). И все попытки удалить существующие записи или выполнить транкейт этой таблицы task_runs утыкался в то, что такая операция невозможна.
Посидев, подумав, еще раз прочитав ошибку увидел, что запрос выше внутри превращается на самом деле в запрос
SELECT history_content_json FROM _statistics_.task_run_history
Не сообразив, что это обычная таблица я подумал, что придется чистить таблеты прямо руками с диска и выполнил запрос на получение этих самых таблетов для таблички (и кстати говоря на этом пункте дипсик врёт безбожно, но спасает дока)
SHOW TABLETS FROM _statistics_.task_run_history;
И результат вы можете увидеть выше :) Путь к таблетам неизвестен, но они точно в консистентном состоянии, прямо мамой клянусь :)
Ругнул себя в очередной раз за кубернетес, в котором удаление файлов таблетов на диске не такая уж тривиальная операция вдруг подумал - а что если это обычная OLAP таблица.
Раз, и delete по таблице сработал. Раз, и транкейт по таблице сработал. И сразу после этого все и заработало. Более того, каким-то образом там появилась задача от позавчера (после транкейта то...).
Паника снята, кластер работает штатно, таски показываются. Осадочек остался, но тут и сам наделал делов (а база это кстати переварила, за что ей честь и уважуха).
👍5
Не так давно в телеге добавили поиск по постам, и это прямо мана небесная. Иногда становится скучно и я ищу какую-нибудь чушь, или что-то про СР. В итоге в телеге есть огромная куча каналов про работу на китайском языке, где есть вакансии со стеком на старроксе. А еще неожиданно через канал хабра выяснил, что мироршип пришел на хабр, и там уже даже есть пара статей. Вот например пост про новшества в 3.5.
А я так и сижу со своей расшифровкой доклада с митапа. Оказалалось, перевести доклад в статью не так просто. А нейронка отлично умеет делать выдержку, но что-то не очень переписать доклад в статью. Да еще местами включения информации из интернета вместо самого доклада. Но когда-нибудь я завершу работу! :)
А я так и сижу со своей расшифровкой доклада с митапа. Оказалалось, перевести доклад в статью не так просто. А нейронка отлично умеет делать выдержку, но что-то не очень переписать доклад в статью. Да еще местами включения информации из интернета вместо самого доклада. Но когда-нибудь я завершу работу! :)
Хабр
Статьи / Профиль MirrorShip
🔥2👍1🤝1
Регресс непонятно почему
Стримы не стоят на месте и вот мы перешагнули размер потока в 10 000 eps. Часто на собесах дата инженеров начинают мучить кафкой, всякими флинками или кафкой стримс - гошка на таком потоке кушает 130 мегабайт памяти и 0.1 процессора надо сказать.
А вот что плохо - delete на большой фактовой таблице стали работать плохо. Плохо, это не как в кликхаузе или вертике, но по сравнению с кластером на старте - стало гораздо хуже. Ради интереса посмотрел что с ресурсами - нигде не нашел затыков, цпу, память, диски - все чистое. Посмотрел бакетирование ради интереса - и не понял вот этих цифр на картинке. Почему оно так - не понимаю. Тут есть документация.
И теперь даже не понять, это регрессы обновлений кластера с версии на версию, старые проблемы миграции дисков, или просто общий регресс кластера (под нагрузкой). Видимо надо поднять новый кластер и потестировать с нуля.
Стримы не стоят на месте и вот мы перешагнули размер потока в 10 000 eps. Часто на собесах дата инженеров начинают мучить кафкой, всякими флинками или кафкой стримс - гошка на таком потоке кушает 130 мегабайт памяти и 0.1 процессора надо сказать.
А вот что плохо - delete на большой фактовой таблице стали работать плохо. Плохо, это не как в кликхаузе или вертике, но по сравнению с кластером на старте - стало гораздо хуже. Ради интереса посмотрел что с ресурсами - нигде не нашел затыков, цпу, память, диски - все чистое. Посмотрел бакетирование ради интереса - и не понял вот этих цифр на картинке. Почему оно так - не понимаю. Тут есть документация.
И теперь даже не понять, это регрессы обновлений кластера с версии на версию, старые проблемы миграции дисков, или просто общий регресс кластера (под нагрузкой). Видимо надо поднять новый кластер и потестировать с нуля.
❤2😭1
Change data capture
Потратил субботу на разбирательство с текущими сервисами для репликации из наших mysql в starrocks. Что видеть отрадно - появилась целая куча инструментов, которым больше не нужна кафка посередине (ну просто зачем иметь еще один лог когда ты уже читаешь из лога, а уж передавать инитиал снепшоты через кафку - отдельный вид мазохизма). Что плохо, они все сделаны на базе debezium, а значит если по каким-то причинам не подошел один, то и все остальные не смогут помочь.
Что может из коробки синкать с настройкой одного конфига и без плясок вокруг: apache seatunnel, apaсhe inlong. Что не умеет в cdc, но может вам помочь например при transaction outbox - sling. Что имеет ограничения на ровном месте и "интересные" настройки - risingwave (внутри дебезиум, но фишки из остальных сервисов в нем будут за деньги).
Итогом дня стало то, что нам не подошел ни один из них :( В принципе даже если форкать, то возврат кода в апстрим потом не примут никогда. С учетом отсутствия джавистов в компании выходит, что нам проще дописывать наш внутренний репликатор на golang, который уже 5+ лет перекладывает данные в vertica. Печалька, хотелось другого окончания. Причны подробно уже затащу в доклад на смартдате, а то надо же что-то там интересное рассказать :)
ps на картинке конфиг для seatunnel со всякими ухищрениями, которыми пытался обойти компанейские особенности
Потратил субботу на разбирательство с текущими сервисами для репликации из наших mysql в starrocks. Что видеть отрадно - появилась целая куча инструментов, которым больше не нужна кафка посередине (ну просто зачем иметь еще один лог когда ты уже читаешь из лога, а уж передавать инитиал снепшоты через кафку - отдельный вид мазохизма). Что плохо, они все сделаны на базе debezium, а значит если по каким-то причинам не подошел один, то и все остальные не смогут помочь.
Что может из коробки синкать с настройкой одного конфига и без плясок вокруг: apache seatunnel, apaсhe inlong. Что не умеет в cdc, но может вам помочь например при transaction outbox - sling. Что имеет ограничения на ровном месте и "интересные" настройки - risingwave (внутри дебезиум, но фишки из остальных сервисов в нем будут за деньги).
Итогом дня стало то, что нам не подошел ни один из них :( В принципе даже если форкать, то возврат кода в апстрим потом не примут никогда. С учетом отсутствия джавистов в компании выходит, что нам проще дописывать наш внутренний репликатор на golang, который уже 5+ лет перекладывает данные в vertica. Печалька, хотелось другого окончания. Причны подробно уже затащу в доклад на смартдате, а то надо же что-то там интересное рассказать :)
ps на картинке конфиг для seatunnel со всякими ухищрениями, которыми пытался обойти компанейские особенности
❤4🔥3👍2💩1