Каждый день устройства Amazon обрабатывают и анализируют миллиарды транзакций от глобальных групп доставки, запасов, мощностей, снабжения, продаж, маркетинга, производителей и обслуживания клиентов. Эти данные используются при закупке устройств для удовлетворения потребностей клиентов Amazon. В связи с тем, что объемы данных демонстрируют двузначные процентные темпы роста в годовом исчислении, а пандемия COVID нарушила глобальную логистику в 2021 году, стало более важным масштабировать и генерировать данные практически в реальном времени.
В этом посте показано, как мы перешли на бессерверное озеро данных, построенное на AWS, которое автоматически потребляет данные из нескольких источников и разных форматов. Кроме того, это дало нашим специалистам по данным и инженерам дополнительные возможности для использования услуг искусственного интеллекта и машинного обучения (ML) для непрерывной подачи и анализа данных.
Проблемы и проблемы дизайна
Наша устаревшая архитектура в основном использовала Эластичное вычислительное облако Amazon (Amazon EC2) для извлечения данных из различных внутренних разнородных источников данных и REST API с комбинацией Простой сервис хранения Amazon (Amazon S3) для загрузки данных и Амазонка Redshift для дальнейшего анализа и формирования заказов на покупку.
Мы обнаружили, что этот подход привел к нескольким недостаткам и, следовательно, привел к улучшениям в следующих областях:
- Скорость разработчика – Из-за отсутствия унификации и обнаружения схемы, которые являются основными причинами сбоев во время выполнения, разработчики часто тратили время на решение проблем с эксплуатацией и обслуживанием.
- Масштабируемость – Большинство этих наборов данных распространяются по всему миру. Поэтому мы должны соблюдать ограничения масштабирования при запросе данных.
- Минимальное обслуживание инфраструктуры – Текущий процесс охватывает несколько вычислений в зависимости от источника данных. Поэтому сокращение обслуживания инфраструктуры имеет решающее значение.
- Реагирование на изменения источника данных – Наша текущая система получает данные из различных разнородных хранилищ данных и сервисов. Любые обновления этих сервисов занимают месяцы циклов разработчиков. Время отклика для этих источников данных имеет решающее значение для наших основных заинтересованных сторон. Поэтому мы должны использовать подход, основанный на данных, для выбора высокопроизводительной архитектуры.
- Хранение и резервирование – Из-за разнородных хранилищ данных и моделей было сложно хранить разные наборы данных от разных групп заинтересованных сторон. Таким образом, наличие версий вместе с инкрементными и дифференциальными данными для сравнения предоставит замечательную возможность создавать более оптимизированные планы.
- Беглец и доступность – Из-за изменчивого характера логистики некоторым группам заинтересованных сторон необходимо анализировать данные по запросу и генерировать оптимальный план заказов на поставку практически в режиме реального времени. Это приводит к необходимости как опроса, так и передачи данных для доступа и анализа в режиме, близком к реальному времени.
Стратегия реализации
Основываясь на этих требованиях, мы изменили стратегию и начали анализировать каждую проблему, чтобы найти решение. С точки зрения архитектуры мы выбрали бессерверную модель, а линия действий по архитектуре озера данных относится ко всем архитектурным пробелам и сложным функциям, которые, как мы определили, были частью улучшений. С операционной точки зрения мы разработали новую модель общей ответственности за прием данных с использованием Клей AWS вместо внутренних сервисов (REST API), разработанных на Amazon EC2 для извлечения данных. Мы также использовали AWS Lambda для обработки данных. Затем мы выбрали Амазонка Афина в качестве нашей службы запросов. Для дальнейшей оптимизации и повышения скорости разработки для наших потребителей данных мы добавили Amazon DynamoDB в качестве хранилища метаданных для различных источников данных, попадающих в озеро данных. Эти два решения определяли каждое принятое нами решение по дизайну и реализации.
Следующая диаграмма иллюстрирует архитектуру
В следующих разделах мы рассмотрим каждый компонент в архитектуре более подробно по мере прохождения процесса.
Клей AWS для ETL
Чтобы удовлетворить потребности клиентов, поддерживая масштаб новых источников данных для бизнеса, для нас было важно иметь высокую степень гибкости, масштабируемости и оперативности при выполнении запросов к различным источникам данных.
AWS Glue — это бессерверный сервис интеграции данных, который позволяет пользователям аналитики легко находить, подготавливать, перемещать и интегрировать данные из нескольких источников. Вы можете использовать его для аналитики, машинного обучения и разработки приложений. Он также включает в себя дополнительную производительность и инструменты DataOps для разработки, выполнения заданий и реализации бизнес-процессов.
С помощью AWS Glue вы можете обнаруживать более 70 разнообразных источников данных и подключаться к ним, а также управлять своими данными в централизованном каталоге данных. Вы можете визуально создавать, запускать и отслеживать конвейеры извлечения, преобразования и загрузки (ETL) для загрузки данных в озера данных. Кроме того, вы можете сразу искать и запрашивать каталогизированные данные с помощью Athena, Амазонка ЭМИи Спектр красного смещения Амазонки.
AWS Glue упростил нам подключение к данным в различных хранилищах данных, редактирование и очистку данных по мере необходимости, а также загрузку данных в хранилище, предоставленное AWS, для единого представления. Задания AWS Glue можно планировать или вызывать по запросу для извлечения данных из ресурса клиента и из озера данных.
Некоторые обязанности этих рабочих мест заключаются в следующем:
- Извлечение и преобразование исходного объекта в объект данных
- Обогатите данные, чтобы они содержали год, месяц и день для лучшей каталогизации, и включите идентификатор снимка для более точных запросов.
- Выполните проверку ввода и создание пути для Amazon S3.
- Свяжите аккредитованные метаданные на основе исходной системы
Запросы REST API из внутренних служб — одна из наших основных задач, и, учитывая минимальную инфраструктуру, мы хотели использовать их в этом проекте. Коннекторы AWS Glue помогли нам выполнить требование и цель. Для запроса данных из REST API и других источников данных мы использовали модули PySpark и JDBC.
AWS Glue поддерживает самые разные типы подключения. Для получения более подробной информации см. Типы подключения и параметры для ETL в AWS Glue.
Ковш S3 как зона посадки
Мы использовали корзину S3 в качестве зоны непосредственной загрузки извлеченных данных, которые затем обрабатываются и оптимизируются.
Лямбда как триггер AWS Glue ETL
Мы включили уведомления о событиях S3 в корзине S3, чтобы запускать Lambda, что еще больше разделяет наши данные. Данные разделены на InputDataSetName, Year, Month и Date. Любой обработчик запросов, работающий поверх этих данных, будет сканировать только подмножество данных для лучшей оптимизации затрат и производительности. Наши данные могут храниться в различных форматах, таких как CSV, JSON и Parquet.
Необработанные данные не идеальны для большинства наших вариантов использования для создания оптимального плана, потому что они часто содержат дубликаты или неправильные типы данных. Самое главное, данные представлены в нескольких форматах, но мы быстро изменили данные и заметили значительный прирост производительности запросов при использовании формата Parquet. Здесь мы использовали один из советов по производительности в 10 лучших советов по настройке производительности для Amazon Athena.
Задания AWS Glue для ETL
Мы хотели улучшить разделение данных и доступность, поэтому решили использовать другую корзину S3 для дальнейшего повышения производительности. Мы использовали те же задания AWS Glue для дальнейшего преобразования и загрузки данных в требуемую корзину S3, а часть извлеченных метаданных — в DynamoDB.
DynamoDB как хранилище метаданных
Теперь, когда у нас есть данные, их используют различные заинтересованные стороны бизнеса. Это оставляет нас с двумя вопросами: какие исходные данные находятся в озере данных и какая версия. Мы выбрали DynamoDB в качестве нашего хранилища метаданных, которое предоставляет потребителям самую последнюю информацию для эффективного запроса данных. Каждый набор данных в нашей системе однозначно идентифицируется по идентификатору моментального снимка, который мы можем найти в нашем хранилище метаданных. Клиенты получают доступ к этому хранилищу данных с помощью API.
Amazon S3 как озеро данных
Для лучшего качества данных мы извлекли обогащенные данные в другую корзину S3 с тем же заданием AWS Glue.
Сканер клея AWS
Сканеры — это «секретный соус», который позволяет нам реагировать на изменения схемы. На протяжении всего процесса мы решили сделать каждый шаг как можно более независимым от схемы, что позволяет любым изменениям схемы проходить до тех пор, пока они не попадут в AWS Glue. С помощью сканера мы могли бы поддерживать независимые изменения, происходящие в схеме. Это помогло нам автоматически сканировать данные из Amazon S3 и создавать схему и таблицы.
Каталог данных AWS Glue
Каталог данных помог нам поддерживать каталог в качестве указателя на расположение данных, схему и показатели времени выполнения в Amazon S3. Информация в каталоге данных хранится в виде таблиц метаданных, где каждая таблица указывает одно хранилище данных.
Афина для запросов SQL
Athena — интерактивный сервис запросов, упрощающий анализ данных в Amazon S3 с помощью стандартного SQL. Athena не имеет серверов, поэтому не нужно управлять инфраструктурой, и вы платите только за выполняемые запросы. Мы считали стабильность работы и увеличение скорости разработки нашими ключевыми факторами улучшения.
Мы дополнительно оптимизировали процесс запросов к Athena, чтобы пользователи могли вставлять значения и запросы для получения данных из Athena, создав следующее:
- An Комплект для разработки облачных сервисов AWS (AWS CDK) для создания инфраструктуры Athena и Управление идентификацией и доступом AWS (IAM) для доступа к корзинам озера данных S3 и каталогу данных из любой учетной записи.
- Библиотека, чтобы клиент мог предоставить роль IAM, запрос, формат данных и выходное местоположение, чтобы запустить запрос Athena и получить статус и результат выполнения запроса в корзине по своему выбору.
Чтобы запросить Афину, нужно выполнить два шага:
- СтартQueryExecution – Это запускает выполнение запроса и получает идентификатор выполнения. Пользователи могут указать выходное местоположение, где будут храниться выходные данные запроса.
- GetQueryExecution – Это получает статус запроса, поскольку выполнение является асинхронным. В случае успеха вы можете запросить вывод в файле S3 или через API.
Вспомогательный метод для запуска выполнения запроса и получения результата будет находиться в библиотеке.
Служба метаданных озера данных
Эта служба специально разработана и взаимодействует с DynamoDB для получения метаданных (имя набора данных, идентификатор моментального снимка, строка раздела, временная метка и ссылка S3 данных) в форме REST API. Когда схема обнаружена, клиенты используют Athena в качестве обработчика запросов для запроса данных.
Поскольку все наборы данных с идентификатором моментального снимка разделены, запрос на соединение не приводит к полному сканированию таблицы, а только к сканированию разделов в Amazon S3. Мы использовали Athena в качестве обработчика запросов из-за того, что он не требует управления нашей инфраструктурой запросов. Позже, если мы почувствуем, что нам нужно что-то большее, мы можем использовать либо Redshift Spectrum, либо Amazon EMR.
Заключение
Команды Amazon Devices обнаружили значительную ценность, перейдя на архитектуру озера данных с помощью AWS Glue, которая позволила нескольким заинтересованным сторонам со всего мира получать данные более продуктивно. Это позволило командам создать оптимальный план размещения заказов на покупку устройств путем анализа различных наборов данных в режиме, близком к реальному времени, с соответствующей бизнес-логикой для решения проблем цепочки поставок, спроса и прогнозирования.
С точки зрения эксплуатации инвестиции уже начали окупаться:
- Он стандартизировал наши механизмы приема, хранения и извлечения данных, что позволило сократить время адаптации. До внедрения этой системы на адаптацию одного набора данных уходило 1 месяц. Благодаря нашей новой архитектуре мы смогли добавить 15 новых наборов данных менее чем за 2 месяца, что повысило нашу гибкость на 70 %.
- Он устранил узкие места масштабирования, создав однородную систему, которая может быстро масштабироваться до тысяч запусков.
- Решение добавило проверку схемы и качества данных, прежде чем принимать какие-либо входные данные и отклонять их, если обнаруживаются нарушения качества данных.
- Это упростило извлечение наборов данных, поддерживая будущие симуляции и варианты использования бэк-тестера, требующие версионных входных данных. Это упростит запуск и тестирование моделей.
- Решение создало общую инфраструктуру, которую можно легко распространить на другие группы DIAL, имеющие аналогичные проблемы с приемом данных, хранением и извлечением данных.
- Наши операционные расходы снизились почти на 90%.
- К этому озеру данных могут эффективно обращаться наши специалисты по обработке и анализу данных и инженеры для выполнения другой аналитики и использования предиктивного подхода в качестве будущей возможности для создания точных планов для заказов на поставку.
Шаги, описанные в этом посте, помогут вам спланировать аналогичную современную стратегию работы с данными с использованием сервисов, управляемых AWS, для приема данных из разных источников, автоматического создания каталогов метаданных, беспрепятственного обмена данными между озером данных и хранилищем данных и создания оповещений в случае необходимости. сбоя организованного рабочего процесса данных.
Об авторах
Авинаш Коллури является старшим архитектором решений в AWS. Он работает с Amazon Alexa и Devices, разрабатывая и разрабатывая современные распределенные решения. Его страстью является создание экономичных и масштабируемых решений на AWS. В свободное время он любит готовить по рецептам фьюжн и путешествовать.
Випул Верма является старшим инженером-программистом в Amazon.com. Он работает в Amazon с 2015 года, решая реальные проблемы с помощью технологий, которые напрямую влияют на жизнь клиентов Amazon и улучшают ее. В свободное время любит пешие прогулки.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/big-data/how-amazon-devices-scaled-and-optimized-real-time-demand-and-supply-forecasts-using-serverless-analytics/
- 1
- 10
- 100
- 2021
- 70
- a
- способность
- в состоянии
- доступ
- Доступ
- доступность
- аккредитованный
- точный
- через
- Действие
- добавленный
- дополнительный
- AI
- Alexa
- Все
- позволяет
- уже
- Amazon
- Amazon alexa
- Amazon EC2
- Амазонка ЭМИ
- Amazon.com
- анализ
- аналитика
- анализировать
- анализ
- и
- Другой
- API
- API
- Применение
- Разработка приложения
- подхода
- соответствующий
- архитектурный
- архитектура
- области
- авторинга
- автоматически
- AWS
- Клей AWS
- назад
- основанный
- , так как:
- до
- Лучшая
- между
- миллиарды
- строить
- построенный
- бизнес
- под названием
- Пропускная способность
- случаев
- каталог
- каталоги
- централизованная
- цепь
- проблемы
- сложные
- изменения
- выбор
- выбрал
- клиент
- клиентов
- облако
- COM
- сочетание
- Общий
- сравнить
- компонент
- Вычисление
- Свяжитесь
- связи
- считается
- принимая во внимание
- потреблять
- Потребители
- непрерывно
- приготовление
- Основные
- Цена
- рентабельным
- Расходы
- может
- Covid
- гусеничный
- Создайте
- создали
- Создающий
- критической
- Текущий
- изготовленный на заказ
- клиент
- Служба поддержки игроков
- Клиенты
- циклы
- данным
- Интеграция данных
- Озеро данных
- обработка данных
- Качество данных
- стратегия данных
- информационное хранилище
- управляемых данными
- Наборы данных
- Время
- день
- занимавшийся
- решение
- решения
- Степень
- Спрос
- запросы
- в зависимости
- Проект
- предназначенный
- подробность
- подробнее
- определены
- развитый
- Застройщик
- застройщиков
- Развитие
- Устройства
- различный
- непосредственно
- обнаружить
- открытый
- открытие
- распределенный
- Разное
- не
- дубликаты
- каждый
- легко
- фактически
- эффективно
- или
- включен
- позволяет
- инженер
- Инженеры
- обогащенный
- организация
- Эфир (ETH)
- События
- Каждая
- извлечение
- извлечь данные
- факторы
- Ошибка
- Fallen
- Особенности
- несколько
- Файл
- поток
- после
- следующим образом
- Прогноз
- форма
- формат
- найденный
- от
- полный
- далее
- Более того
- слияние
- будущее
- Доходы
- порождать
- порождающий
- поколение
- получить
- получающий
- Глобальный
- глобальный бизнес
- земной шар
- цель
- Рост
- имеющий
- помощь
- помог
- здесь
- High
- высокая производительность
- очень
- пеший туризм
- Как
- HTML
- HTTPS
- IAM
- идеальный
- идентифицированный
- определения
- Личность
- немедленная
- немедленно
- Влияние
- реализация
- Осуществляющий
- улучшать
- улучшенный
- улучшение
- улучшение
- in
- включают
- включает в себя
- повышение
- индекс
- информация
- Инфраструктура
- вход
- вместо
- интегрировать
- интеграции.
- интерактивный
- взаимодействует
- в нашей внутренней среде,
- Представляет
- инвентаризация
- инвестиций
- вопрос
- вопросы
- IT
- работа
- Джобс
- присоединиться
- JSON
- Основные
- Отсутствие
- озеро
- посадка
- последний
- запуск
- изучение
- Наследие
- Библиотека
- ЖИЗНЬЮ
- рамки
- линия
- LINK
- загрузка
- расположение
- логистика
- посмотреть
- машина
- обучение с помощью машины
- сделанный
- поддерживать
- техническое обслуживание
- сделать
- ДЕЛАЕТ
- управлять
- управления
- Маркетинг
- Встречайте
- Метаданные
- метод
- Метрика
- минимальный
- ML
- модель
- Модели
- Модерн
- модифицировало
- Модули
- монитор
- Месяц
- месяцев
- БОЛЕЕ
- самых
- двигаться
- перемещение
- с разными
- имя
- природа
- Необходимость
- необходимый
- Новые
- Уведомления
- Onboard
- Вводный
- ONE
- операционный
- оперативный
- Возможности
- Возможность
- оптимальный
- оптимизация
- Оптимизировать
- оптимизированный
- Опции
- заказы
- Другое
- пандемия
- часть
- страсть
- путь
- ОПЛАТИТЬ
- процент
- выполнять
- производительность
- перспектива
- Часть
- план
- Планы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- возможное
- После
- Подготовить
- в первую очередь
- первичный
- проблемам
- процесс
- обработка
- процессор
- Производители
- производительный
- производительность
- Проект
- обеспечивать
- приводит
- покупки
- Нажимать
- Вопросы
- быстро
- Обменный курс
- Сырье
- необработанные данные
- достигать
- реальный мир
- реального времени
- причины
- Рецепты
- снижение
- понимается
- замечательный
- удален
- обязательный
- требование
- Требования
- ресурс
- ответ
- ответственности
- ответственность
- отзывчивый
- ОТДЫХ
- результат
- Роли
- роли
- Run
- Бег
- главная
- то же
- экономия
- Масштабируемость
- масштабируемые
- Шкала
- масштабирование
- сканирование
- считаться
- Ученые
- легко
- Поиск
- разделах
- старший
- Serverless
- обслуживание
- Услуги
- Поделиться
- общие
- Доставка и оплата
- Шоу
- значительный
- аналогичный
- просто
- с
- одинарной
- Снимок
- So
- Software
- Инженер-программист
- Решение
- Решения
- РЕШАТЬ
- Решение
- удалось
- Источник
- Источники
- пролеты
- Спектр
- потраченный
- SQL
- Стабильность
- заинтересованные стороны
- заинтересованных сторон
- стандарт
- Начало
- и политические лидеры
- Начало
- начинается
- Статус:
- Шаг
- Шаги
- диск
- магазин
- хранить
- магазины
- стратегий
- Стратегия
- успешный
- такие
- поставка
- цепочками поставок
- поддержки
- Поддержка
- система
- ТАБЛИЦЫ
- взять
- принимает
- команды
- Технологии
- шаблон
- Тестирование
- Ассоциация
- Источник
- их
- следовательно
- тысячи
- Через
- по всему
- время
- раз
- отметка времени
- Советы
- в
- топ
- Сделки
- Transform
- Путешествие
- вызвать
- Типы
- унифицированный
- Updates
- us
- использование
- пользователей
- Проверка
- ценностное
- Наши ценности
- разнообразие
- различный
- Скорость
- версия
- с помощью
- Вид
- Нарушения
- летучий
- тома
- стремятся
- Склады
- способы
- Что
- который
- в то время как
- широкий
- будете
- рабочий
- Рабочие процессы
- работает
- бы
- год
- ВАШЕ
- зефирнет