my data engineering study
16 subscribers
19 photos
9 files
310 links
data_engineering_study
Download Telegram
Forwarded from Experimental chill
Одна из самых главных методик для меня, когда я готовлюсь к дизайн интервью, я читаю Post-mortems. Нет ничего приятнее, захватывающее и полезнее, чем смотреть как падают системы, с грохотом, по разным причинам. Они читаются как страшилки, а то и хорошие сказки на ночь. Хорошая коллекция есть у Dan Luu (https://github.com/danluu/post-mortems). Один из моих любимых это

Pentium division bug

Процессор неправильно делил очень редкие числа. Баг был в том, что часть таблицы для деления неправильно подгружалась в Programmable Lookup Array. Тестирование из-за симметричности таблицы было сделано только на первой её половине, а неправильные значения подгружались только во второй.



Но, наверное, хочется поделиться своей, одной из самых запоминающихся историй, когда я работал в Яндекс.Поиске (публикую с разрешения своего бывшего тех лида)

Я помню возвращался из универа, чтобы вечером поработать, позакрывать баги и пописать немного кода. Я одним глазком решил посмотреть на состояние поиска, в целом всё было стабильно, запросы отвечались, пользователи приходили, а вечером немножко уходили, ведь семья, телевизор, кино, это нормально, в поиске к вечеру меньше траффика.

Один из графиков показывал редкие падения, ну бывает, машин же много, что-то не работает из-за железа, особо никто не обращает внимание, это нормально, пара шардов не повлияют на результаты, всегда же есть репликация.

Случайно нажал на группировку по хостам, и увидел, что за последний день два хоста падают, одни и те же. И вроде бы даже машинки здоровые, не поломаные, диски, CPU, RAM, всё работает как часы.

Зашёл на машинку, увидел, что coredump отложился. Взял его, подключился к монитору, налил кофе и решил посмотреть, что сломалось.

Падало где-то в кишках итераторов, которые ищут по предложениям, "Интересно", -- подумал я, этот код оттестирован лучше всего в поиске, что же пошло не так.

Шарды, хранящие кусочек интернета, как правило имеют одним из индексов обычный из слов в номера предложений и позиций. Индекс важный, крупный, здоровый.

Потыкался минут 5-10 в gdb, отковырял запрос, он был что-то в духе "ящерица аброния". "Хороший запрос", -- подумал я тогда. И даже как-то захотелось дальше копать.

Начал смотреть, где падает, итератор попытался поискать слово синоним "ящурный", и почему-то не нашёл, хотя слово точно есть в индексе.

Дальше я ушел, погулял по практически пустому офису в 10 вечера. Так и не понял в чём проблема, создал баг, пошёл спать.

На утро я проснулся со странным ощущением в голове. Далее прям похожая картинка из мультфильма Рататуй, когда Эго попробовал блюда, что-то меня осенило с утра. "Это же последнее слово из толкового словаря Даля", -- вспомнил я. Как-то в детстве просто любил листать словари, интересно, что было в конце. И у меня тогда родилась идея :)

Так получилось из-за скорости, что индекс хранил 29 бит для индексации слов, а 35 бит были для всего остального. Да вроде всё хорошо, уже пару лет в проде, должно работать как следует. Тем не менее, полмиллиарда уникальных слов не хватило для нескольких миллионов документов и 29 бит переполнились. В итоге позиции предложений для нулевых индексов стали содержать позиции предложений переполненных, и так как некоторые предложения не существовали (слова не сходились), то всё съезжало.

Баг не всегда воспроизводился, но в данном случае произошло, что

ящерица находится очень в конце индекса
аброния находится очень в начале

Понятное дело, что и после ящурный и до абронии было много других странных несуществующих слов, но этого хватило, чтобы найти переполнение и соответственно баг в индексаторе.

Слава богу таким эффектом пострадали только десяток шардов, и это было не очень незначительным. Через пару месяцев после перестройки всех индексов панелька с падениями всё так же показывала редкие значения, но на этот раз это всё были машинки, которым стало просто плохо.

Я вспоминаю поиск, где мне было весело. В Google всё как-то стабильно работает, таких историй намного меньше
Forwarded from DataEng
Интересный движ намечается в январе 2022 года — Data Engineer Zoomcamp

Это 9 недельный курс в формате zoom-лекций и практических занятий по дата инжинирингу. Примечательно что он абсолютно бесплатный для всех, нужна лишь предварительная регистрация по ссылке.

У этой инициативы уже есть полупустой репозиторий на гитхабе: https://github.com/DataTalksClub/data-engineering-zoomcamp, там же можно ознакомиться подробнее с предстоящими темами для изучения.

Старт намечен на 17 января 2022 года
Forwarded from iggisv9t channel
Ещё успел завести и немного потыкать вот эту штуку https://github.com/flekschas/jupyter-scatter
Сразу некоторое разочарование, что нет ховеров и нельзя экспортировать выделение куда-то вне виджета. Пока потенциал этой штуки не раскрыл. Потом посмотрим. Теперь в планах соединить графовые и текстовые признаки, доделать кластеризацию и какую-то интерпретацию кластеров. Потом уже можно будет снова качать данные и обновлять выводы.
Forwarded from 🔋 Труба данных (Simon Osipov)
https://github.com/sinaptik-ai/pandas-ai

Удивительная вещь, которая прошла мимо меня (а существует аж с апреля 2023 года)

Pandas + LLM + BI в одной опенсорс коробке, главное датасет отдай нормальный!🙂

@ohmydataengineer - канал "🕯Труба Данных" немного меньше недолюбливает Pandas
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM