Amazon EMR на Amazon EKS предоставляет вариант развертывания для Амазонка ЭМИ который позволяет запускать аналитические рабочие нагрузки на Амазон Эластик Кубернетес Сервис (Амазон ЭКС). Это привлекательный вариант, поскольку он позволяет запускать приложения в общем пуле ресурсов без необходимости выделения инфраструктуры. Кроме того, вы можете использовать Студия Amazon EMR для создания кода аналитики, работающего в кластерах Amazon EKS. EMR Studio — это веб-интегрированная среда разработки (IDE), использующая полностью управляемые ноутбуки Jupyter, которые можно подключить к любому кластеру EMR, включая EMR на EKS. Оно использует Единый вход AWS (SSO) или совместимого поставщика удостоверений (IdP) для прямого входа в EMR Studio через безопасный URL-адрес с использованием корпоративных учетных данных.
Развертывание EMR Studio для подключения к EMR на EKS требует интеграции нескольких сервисов AWS:
Кроме того, необходимо установить следующие EMR на компоненты EKS:
Этот пост поможет вам создать все необходимые компоненты и соединить их вместе, запустив один скрипт. Мы также описываем архитектуру этой установки и то, как компоненты работают вместе.
Обзор архитектуры
С помощью EMR на EKS вы можете запускать приложения Spark вместе с другими типами приложений в одном кластере Amazon EKS, что улучшает распределение ресурсов и упрощает управление инфраструктурой. Дополнительные сведения о том, как Amazon EMR работает в кластере Amazon EKS, см. Новинка — Amazon EMR в сервисе Amazon Elastic Kubernetes (EKS). EMR Studio предоставляет веб-среду IDE, упрощающую разработку, визуализацию и отладку приложений, работающих в EMR. Для получения дополнительной информации см. Amazon EMR Studio (предварительная версия): новая IDE для ноутбуков с Amazon EMR.
Ядра Spark — это запланированные модули в пространстве имен в кластере Amazon EKS. EMR Studio использует Jupyter Enterprise Gateway (JEG) для запуска ядер Spark в Amazon EKS. Управляемая конечная точка типа JEG предоставляется как развертывание Kubernetes в связанном пространстве имен виртуального кластера EMR и предоставляется как служба Kubernetes. Каждый виртуальный кластер EMR сопоставляется с пространством имен Kubernetes, зарегистрированным в кластере Amazon EKS; виртуальные кластеры не управляют физическими вычислениями или хранилищем, а указывают на пространство имен Kubernetes, в котором запланирована рабочая нагрузка. Каждый виртуальный кластер может иметь несколько управляемых конечных точек, каждая из которых имеет собственное настроенное ядро для различных вариантов использования и потребностей. Управляемые конечные точки JEG предоставляют конечные точки HTTPS, обслуживаемые Application Load Balancer (ALB), которые доступны только из EMR Studio и собственных ноутбуков, созданных в частной подсети Amazon EKS VPC.
Следующая диаграмма иллюстрирует архитектуру решения.
Управляемая конечная точка создается в пространстве имен Amazon EKS виртуального кластера (в данном случае sparkns
), а конечные точки HTTPS обслуживаются из частных подсетей. Модули ядра работают с ролью IAM выполнения задания, определенной в управляемой конечной точке. Во время создания управляемой конечной точки EMR на EKS использует контроллер AWS Load Balancer в kube-system
пространство имен для создания ALB с целевой группой, которая подключается к управляемой конечной точке JEG в пространстве имен Kubernetes виртуального кластера.
Ядро каждой управляемой конечной точки можно настроить по-разному. Например, чтобы разрешить ядру Spark использовать Клей AWS в качестве их каталога вы можете применить следующий файл конфигурации JSON в —configuration-overrides
флаг при создании управляемой конечной точки:
Управляемая конечная точка — это развертывание Kubernetes, перед которым находится служба внутри настроенного пространства имен (в данном случае sparkns
). Когда мы отслеживаем информацию о конечной точке, мы можем видеть, как развертывание Jupyter Enterprise Gateway соединяется с ALB и целевой группой:
Чтобы понять, как это связано, рассмотрим два сеанса EMR Studio. ALB предоставляет порт 18888 для сеансов EMR Studio. Служба JEG сопоставляет внешний порт 18888 на ALB с динамическим NodePort
на сервисе JEG (в данном случае 30091). Служба JEG перенаправляет трафик на TargetPort
9547, который направляет трафик в соответствующий модуль драйвера Spark. Каждый сеанс записной книжки имеет собственное ядро, которое имеет свои собственные соответствующие модули драйвера и исполнителя Spark, как показано на следующей диаграмме.
Подключите EMR Studio к виртуальному кластеру и управляемой конечной точке
Каждый раз, когда пользователь подключает виртуальный кластер и управляемую конечную точку к своей рабочей области Studio и запускает сеанс Spark, планируются драйверы Spark и исполнители Spark. Вы можете видеть это, когда вы бежите kubectl
чтобы проверить, какие модули были запущены:
Каждый сеанс ядра Spark ноутбука развертывает модуль драйвера и модули исполнителя, которые продолжают работать до тех пор, пока сеанс ядра не будет закрыт.
Код в ячейках записной книжки выполняется в модулях исполнителей, развернутых в кластере Amazon EKS.
Настройте EMR на EKS и EMR Studio
Для настройки EMR на EKS и EMR Studio требуется несколько шагов и действий. Включение AWS SSO является обязательным условием. Вы можете использовать два предоставленных сценария запуска в этом разделе или вручную развернуть его, выполнив действия, описанные далее в этом посте.
В этом посте мы предоставляем два сценария запуска. Один из них — скрипт bash, который использует AWS CloudFormation, эксктл и Интерфейс командной строки AWS (AWS CLI) для обеспечения комплексного развертывания готового решения. Другой использует Комплект для разработки облачных сервисов AWS (AWS CDK), чтобы сделать это.
На следующей диаграмме показаны архитектура и компоненты, которые мы развертываем.
Предпосылки
Обязательно выполните следующие предварительные условия:
Сведения о поддерживаемых IdP см. Включить систему единого входа AWS для Amazon EMR Studio.
Bash скрипт
Сценарий доступен на GitHub.
Предпосылки
Скрипт требует, чтобы вы использовали Облако AWS9. Следуйте инструкциям в Семинар Amazon EKS. Обязательно внимательно следуйте этим инструкциям:
После развертывания рабочего стола AWS Cloud9 перейдите к следующим шагам.
Подготовка к работе.
Используйте следующий код, чтобы клонировать репозиторий GitHub и подготовить необходимые компоненты AWS Cloud9:
Развернуть стек
Перед запуском скрипта укажите следующую информацию:
- Идентификатор учетной записи AWS и регион, если ваш рабочий стол AWS Cloud9 не находится в том же идентификаторе учетной записи или регионе, в котором вы хотите развернуть EMR на EKS.
- Имя Простой сервис хранения Amazon (Amazon S3) сегмент для создания
- Пользователь AWS SSO, который будет связан с сеансом EMR Studio.
После развертывания стека сценарием отображается URL-адрес развернутой EMR Studio:
Скрипт AWS CDK
Скрипты AWS CDK доступны на GitHub. Вам необходимо оформить заказ main
ветка. Стеки развертывают кластер Amazon EKS и EMR на виртуальном кластере EKS в новом облаке VPC с частными подсетями и, при необходимости, Воздушный поток Apache, управляемый Amazon (Amazon MWAA) и EMR Studio.
Предпосылки
Вам потребуется AWS CDK версии 1.90.1 или выше. Для получения дополнительной информации см. Начало работы с AWS CDK.
Мы используем список префиксов, чтобы ограничить доступ к некоторым ресурсам диапазонами сетевых IP-адресов, которые вы утверждаете. Создать префиксный список если у вас его еще нет
Если вы планируете использовать EMR Studio, вам потребуется AWS SSO. настроен в вашем аккаунте.
Подготовка к работе.
После того, как вы клонируете репозиторий и извлекаете main
ветку, создайте и активируйте новую виртуальную среду Python:
Теперь установите зависимости Python:
Наконец, загрузите AWS CDK:
Разверните стеки
Синтезируйте стеки AWS CDK с помощью следующего кода:
Эта команда генерирует четыре стека:
- emr-ex-cdk - Основной стек
- мваа-cdk – Добавляет Amazon MWAA
- студия-CDK - Добавляет необходимые компоненты EMR Studio.
- студия CDK жить - Добавляет ЭМИ Студию
На следующей диаграмме показаны ресурсы, развернутые стеками AWS CDK.
Начните с развертывания первого стека:
Если вы хотите использовать Apache Airflow в качестве оркестратора, разверните этот стек:
Разверните первый стек EMR Studio:
Подождите, пока управляемая конечная точка станет активной. Вы можете проверить статус, запустив следующий код:
Идентификатор виртуального кластера доступен в выходных данных AWS CDK из стека emr-eks-cdk.
Когда конечная точка активна, разверните второй стек EMR Studio:
Развертывание вручную
Если вы предпочитаете развертывать EMR вручную в EKS и EMR Studio, выполните действия, описанные в этом разделе.
Настроить VPC
Если вы используете Amazon EKS версии 1.18, настройте VPC, который также имеет частные подсети и соответствующим образом помечен для внешних балансировщиков нагрузки. Для тегов см.: Балансировка нагрузки приложений на Amazon EKS и Создание роли службы EMR Studio.
Создайте кластер Amazon EKS
Запустите кластер Amazon EKS хотя бы с одной группой управляемых узлов. Инструкции см. Настройка и Начало работы с Amazon EKS.
Создайте соответствующие политики IAM, роли, IdP и сертификат SSL/TLS.
Чтобы создать политики IAM, роли, IdP и сертификат SSL/TLS, выполните следующие действия:
- Включить доступ к кластеру для EMR на EKS.
- Создайте IdP в IAM на основе URL-адреса поставщика EKS OIDC..
- Создайте сертификат SSL/TLS и поместите его в Диспетчер сертификатов AWS.
- Создайте соответствующие политики и роли IAM:
- Роль выполнения работы
- Обновите политику доверия на роль исполнителя работы
- Разверните и создайте политику IAM для контроллера AWS Load Balancer.
- Сервисная роль EMR Studio
- Роль пользователя EMR Studio
- Пользовательские политики EMR Studio связанные с пользователями и группами AWS SSO
- Зарегистрируйте кластер Amazon EKS в Amazon EMR. создать виртуальный кластер EMR
- Создайте соответствующий группы безопасности для прикрепления к каждой созданной EMR Studio:
- Группа безопасности рабочей области
- Группа безопасности двигателя
- Пометьте группы безопасности соответствующими тегами. Инструкции см. Создание роли службы EMR Studio.
Требуемые установки в Amazon EKS
Разверните Контроллер балансировщика нагрузки AWS в кластере Amazon EKS, если вы еще этого не сделали.
Создайте EMR на соответствующих элементах EKS и сопоставьте пользователя с EMR Studio.
Выполните следующие шаги:
- Создайте хотя бы один виртуальный кластер EMR, связанный с кластером Amazon EKS. Инструкции см. в шаге 1 Настройте Amazon EMR на EKS для EMR Studio.
- Создайте хотя бы одну управляемую конечную точку. Инструкции см. в шаге 2 Настройте Amazon EMR на EKS для EMR Studio.
- Создайте хотя бы одну EMR Studio; свяжите EMR Studio с частными подсетями, настроенными для кластера Amazon EKS. Инструкции см. Создать студию EMR.
- Когда EMR Studio доступна, сопоставьте пользователя или группу AWS SSO с EMR Studio и примените к этому пользователю соответствующую IAM-политику.
Используйте ЭМИ Студию
Чтобы начать использовать EMR Studio, выполните следующие действия:
- Найдите URL-адрес EMR Studio по студиям в регионе:
- Используя указанный URL-адрес, войдите в систему, используя имя пользователя AWS SSO, которое вы использовали ранее.
После аутентификации пользователь перенаправляется на панель инструментов EMR Studio.
- Выберите Создать рабочее пространство.
- Что касается Имя рабочей областивведите имя.
- Что касается Subnet, выберите подсеть, соответствующую одной из подсетей, связанных с группой управляемых узлов.
- Что касается S3 местоположение, введите корзину S3, в которой вы можете хранить содержимое записной книжки.
- После создания рабочей области выберите ту, которая находится в
Ready
Статус.
- На боковой панели выберите значок кластера EMR.
- Под Тип кластеравыберите Кластер EMR на EKS.
- Выберите доступный виртуальный кластер и доступную управляемую конечную точку.
- Выберите Прикреплять.
После его подключения EMR Studio отображает ядра, доступные в ноутбук и Консоли .
- Выберите PySpark (Кубернетес) для запуска ядра ноутбука и запуска сеанса Spark.
Поскольку конфигурация конечной точки здесь использует AWS Glue в качестве хранилища метаданных, вы можете перечислить базы данных и таблицы, подключенные к каталогу данных AWS Glue. Вы можете использовать следующий пример сценария для проверки установки. При необходимости измените сценарий для соответствующей базы данных и таблицы, которые есть в вашем каталоге данных:
Убирать
Чтобы избежать будущих расходов, удалите ресурсы, запущенные здесь, запустив remove_setup.sh:
Заключение
EMR на EKS позволяет запускать приложения в общем пуле ресурсов внутри кластера Amazon EKS без необходимости выделения инфраструктуры. EMR Studio — это полностью управляемый блокнот и инструмент Jupyter, который выделяет ядра, работающие в кластерах EMR, включая виртуальные кластеры в Amazon EKS. В этом посте мы описали архитектуру подключения EMR Studio к EMR на EKS и предоставили сценарии для автоматического развертывания всех компонентов для подключения двух сервисов.
Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий.
Об авторах
Рэнди ДеФо является главным архитектором решений в Amazon Web Services. Он работает с клиентами AWS, предоставляя рекомендации и техническую помощь по проектам баз данных, помогая им повысить ценность своих решений при использовании AWS.
Мэтью Тан является старшим архитектором аналитических решений в Amazon Web Services и предоставляет рекомендации клиентам, разрабатывающим решения с помощью сервисов AWS Analytics для своих аналитических рабочих нагрузок.
- '
- "
- 100
- 7
- 9
- доступ
- Учетная запись
- активный
- Все
- распределение
- Amazon
- Amazon Web Services
- аналитика
- апаш
- Применение
- Приложения
- архитектура
- Аутентификация
- AWS
- стабилизатор
- строить
- случаев
- сертификат
- расходы
- Оформить заказ
- классификация
- облако
- код
- Общий
- Вычисление
- содержание
- продолжать
- контроллер
- Создающий
- Полномочия
- Клиенты
- приборная панель
- данным
- База данных
- базы данных
- развивать
- Разработка
- водитель
- Конечная точка
- Предприятие
- Окружающая среда
- выполнение
- опыт
- завод
- First
- следовать
- выходят,
- будущее
- идти
- GitHub
- группы
- Hadoop
- здесь
- Hive
- Как
- HTTPS
- IAM
- ICON
- Личность
- В том числе
- информация
- Инфраструктура
- IP
- IT
- работа
- Jupyter Notebook
- Kubernetes
- запуск
- запускает
- линия
- Список
- загрузка
- управление
- карта
- Карты
- сеть
- ноутбуки
- Опция
- Другие контрактные услуги
- физический
- Стручки
- сборах
- политика
- бассейн
- предварительный просмотр
- Основной
- частная
- проектов
- Питон
- Требования
- ресурс
- Полезные ресурсы
- Run
- Бег
- безопасность
- Услуги
- набор
- просто
- So
- Решения
- SQL
- Начало
- и политические лидеры
- Область
- Статус:
- диск
- магазин
- Поддержанный
- цель
- Технический
- тестXNUMX
- время
- трафик
- Доверие
- пользователей
- ценностное
- Виртуальный
- Web
- веб-сервисы
- в
- слова
- Работа
- работает