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 всё как-то стабильно работает, таких историй намного меньше
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 года
Это 9 недельный курс в формате zoom-лекций и практических занятий по дата инжинирингу. Примечательно что он абсолютно бесплатный для всех, нужна лишь предварительная регистрация по ссылке.
У этой инициативы уже есть полупустой репозиторий на гитхабе: https://github.com/DataTalksClub/data-engineering-zoomcamp, там же можно ознакомиться подробнее с предстоящими темами для изучения.
Старт намечен на 17 января 2022 года
Airtable
Airtable | Everyone's app platform
Airtable is a low-code platform for building collaborative apps. Customize your workflow, collaborate, and achieve ambitious outcomes. Get started for free.
Forwarded from iggisv9t channel
Ещё успел завести и немного потыкать вот эту штуку https://github.com/flekschas/jupyter-scatter
Сразу некоторое разочарование, что нет ховеров и нельзя экспортировать выделение куда-то вне виджета. Пока потенциал этой штуки не раскрыл. Потом посмотрим. Теперь в планах соединить графовые и текстовые признаки, доделать кластеризацию и какую-то интерпретацию кластеров. Потом уже можно будет снова качать данные и обновлять выводы.
Сразу некоторое разочарование, что нет ховеров и нельзя экспортировать выделение куда-то вне виджета. Пока потенциал этой штуки не раскрыл. Потом посмотрим. Теперь в планах соединить графовые и текстовые признаки, доделать кластеризацию и какую-то интерпретацию кластеров. Потом уже можно будет снова качать данные и обновлять выводы.
GitHub
GitHub - flekschas/jupyter-scatter: Interactive 2D scatter plot widget for Jupyter Lab and Notebook. Scales to millions of points!
Interactive 2D scatter plot widget for Jupyter Lab and Notebook. Scales to millions of points! - flekschas/jupyter-scatter
Building a large scale unsupervised model anomaly detection system — Part 1 | by Anindya Saha | Apr, 2023 | Lyft Engineering
https://eng.lyft.com/building-a-large-scale-unsupervised-model-anomaly-detection-system-part-1-aca4766a823c
https://eng.lyft.com/building-a-large-scale-unsupervised-model-anomaly-detection-system-part-1-aca4766a823c
Medium
Building a large scale unsupervised model anomaly detection system — Part 1
Distributed Profiling of Model Inference Logs
Hands-on with Apache Iceberg on Your Laptop: Deep Dive with Apache Spark, Nessie, Minio, Dremio, Polars and Seaborn | by Alex Merced | Data, Analytics & AI with Dremio | Sep, 2024 | Medium
https://medium.com/data-engineering-with-dremio/hands-on-with-apache-iceberg-on-your-laptop-deep-dive-with-apache-spark-nessie-minio-dremio-c5d689b01730
https://medium.com/data-engineering-with-dremio/hands-on-with-apache-iceberg-on-your-laptop-deep-dive-with-apache-spark-nessie-minio-dremio-c5d689b01730
Medium
Hands-on with Apache Iceberg on Your Laptop: Deep Dive with Apache Spark, Nessie, Minio, Dremio…
Free Copy of Apache Iceberg: The Definitive Guide
Forwarded from 🔋 Труба данных (Simon Osipov)
https://github.com/sinaptik-ai/pandas-ai
Удивительная вещь, которая прошла мимо меня (а существует аж с апреля 2023 года)
Pandas + LLM + BI в одной опенсорс коробке, главное датасет отдай нормальный!🙂
@ohmydataengineer - канал "🕯 Труба Данных" немного меньше недолюбливает Pandas
Удивительная вещь, которая прошла мимо меня (а существует аж с апреля 2023 года)
Pandas + LLM + BI в одной опенсорс коробке, главное датасет отдай нормальный!
@ohmydataengineer - канал "
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Materialize For Everyone: Introducing Self-Managed and our Free Community Edition
https://materialize.com/blog/materialize-for-everyone/?sf_campaign=701TR00000WvQY3YAN&utm_term=March&hs_contact=24927&hs_content=187633636528&utm_campaign=FY26_Newsletter&utm_medium=email&_hsenc=p2ANqtz-_eRrpm9vDQNpjDAMWKdLUNN-ufbi8Ao5gcZFDcLqx_CMCXJ7h2FREvWBzhYDjAoAxZB-bL7c4rphOk7GCjda4yeGWz0Q&_hsmi=353510082&utm_content=&utm_source=newsletter
https://materialize.com/blog/materialize-for-everyone/?sf_campaign=701TR00000WvQY3YAN&utm_term=March&hs_contact=24927&hs_content=187633636528&utm_campaign=FY26_Newsletter&utm_medium=email&_hsenc=p2ANqtz-_eRrpm9vDQNpjDAMWKdLUNN-ufbi8Ao5gcZFDcLqx_CMCXJ7h2FREvWBzhYDjAoAxZB-bL7c4rphOk7GCjda4yeGWz0Q&_hsmi=353510082&utm_content=&utm_source=newsletter
Materialize
Materialize For Everyone: Introducing Self-Managed and our Free Community Edition
Unlock real-time data transformation with Materialize Self-Managed. Now, deploy Materialize in your own cloud for security, compliance, and performance control—powered by the same battle-tested, incremental compute engine from our cloud service. Plus, Materialize…
Part 1: Writing and testing your first SQL pipeline | Feldera Documentation
https://docs.feldera.com/tutorials/basics/part1
https://docs.feldera.com/tutorials/basics/part1
Feldera
Part 1: Writing and testing your first SQL pipeline | Feldera Documentation
In this section of the tutorial we will write and test our first SQL pipeline using Feldera.