Бакетинг на любом объеме данных в Apache Spark SQL

BigData и машинное обучение

Доклад отклонён

Целевая аудитория

Инженеры больших данных и интересующиеся темой. Доклад исключительно про подход в улучшении производительности в обработке больших объемов данных.

Тезисы

Одной из задач, решаемых компанией “ЦРПТ” (бренд “Честный ЗНАК” — национальная система маркировки и прослеживания продукции), является обработка данных по движению лекарственных препаратов. Данных порядка 30Тб, ежедневный инкремент ~ в среднем 250Гб в день. Обработка только этих данных занимала изначально ~ 7 часов (позже сокращено до 3,5 часов) на кластере 120 узлов, 2 000 ядер, 46Tb Mem. На основании эти данных строится большое количество агрегатов. Для сокращения времени формирования последующих агрегатов, а также сокращения времени загрузки инкремента было решено использовать механизм, известный, как бакетинг.

Бакетинг — это метод оптимизации, реализованный в Apache Spark и Hive, использующий бакеты (и бакет столбцы) для сегментирования, предсортировки данных и исключения шафла. Идея состоит в том, чтобы оптимизировать join запросы, избегая шафл (или exchanges) между таблицами, участвующими в джоине. Бакетинг приводит к сокращению обмена данными и, следовательно, стейдджей приложения. Кроме того бакетинг хранит данные в предсортированном виде, что ускоряет последующие расчеты, и позволяет использовать bucket pruning, аналогичный partition pruning.

Проблемой этого метода стала отказоустойчивость. В случае, если на каком-то этапе джоба завершалась с ошибкой, расчет приходилось запускать заново. Это создавало ограничения на использование технологии на большом объеме данных. Мы разработали решение, позволяющее применять этот подход на потенциально неограниченном объеме данных без потери прогресса в расчете. Кроме того, указанный метод ранее нигде не описывался, поэтому представляет интерес для оптимизации вычислений с использованием фреймворка Apache Spark.

Евгений Лопаткин

“ЦРПТ” (бренд “Честный ЗНАК” )

Мой опыт работы в основном связан с разработкой в больших данных и созданием сервисов облачных вычислений. Работал с Apache Hadoop, Spark, Kafka, Kubernetes и NoSQL. В свободное время разрабатываю решения для инвестиционных рынков. Изучаю алгоритмы машинного обучения и двигаюсь в сторону ИИ (не псевдо).

“ЦРПТ” (бренд “Честный ЗНАК” )

Распространение некачественной и контрафактной продукции – серьёзная проблема как для потребителей, так и производителей. Это не только влечёт финансовые убытки, но и сказывается на репутации производителя, может принести моральный и в некоторых случаях даже физический ущерб потребителю. Анализ Минпромторга подтверждает, что с 2018 года на российском рынке выявлено более 6 миллионов единиц контрафактной продукции. Отследить её перемещение и реализацию без особой системы было затруднительно. Но проект Честный ЗНАК предусматривает все детали, чтобы уменьшить количество производимого контрафакта и привлечь распространителей такой продукции к ответственности. Честный ЗНАК — это национальная система маркировки и прослеживания товаров из разных категорий. Маркируется молочная продукция, упакованная вода, одежда (в том числе из меха и кожи), обувь, парфюмерная продукция, табачные изделия, лекарства, фотоаппараты, автопокрышки и шины. В рамках эксперимента к этим товарам добавили пиво и пивные напитки, биологически активные добавки к пище (БАД), антисептики, велосипеды и кресла-коляски. Маркировка представляет собой нанесение специального Data Matrix кода на упаковку и внесение этой единицы товара в базу данных. Основная задача системы – повысить уровень безопасности россиян, существенно снизить количество контрафакта и некачественных аналогов. Цифровой код гарантирует подлинность и качество товара.

Видео