Amazon EMR на Amazon EKS забезпечує варіант розгортання для Amazon EMR що дозволяє виконувати аналітичні навантаження Послуга Amazon Elastic Kubernetes (Amazon EKS). Це привабливий варіант, оскільки він дозволяє запускати програми на загальному пулі ресурсів без необхідності надання інфраструктури. Крім того, можна використовувати Amazon EMR Studio для створення коду аналітики, що працює на кластерах Amazon EKS. EMR Studio — це веб-інтегроване середовище розробки (IDE), що використовує повністю керовані ноутбуки Jupyter, які можна приєднати до будь-якого кластера EMR, включаючи EMR на EKS. Це використовує AWS Єдиний вхід (SSO) або сумісного постачальника ідентифікаційної інформації (IdP), щоб увійти безпосередньо в EMR Studio через безпечну URL-адресу за допомогою корпоративних облікових даних.
Розгортання EMR Studio для підключення до EMR на EKS вимагає інтеграції кількох служб AWS:
Крім того, на компоненти EKS необхідно встановити такі EMR:
Ця публікація допоможе вам створити всі необхідні компоненти та з’єднати їх за допомогою одного сценарію. Ми також описуємо архітектуру цієї установки та те, як компоненти працюють разом.
Огляд архітектури
Завдяки EMR на EKS ви можете запускати програми Spark разом із іншими типами програм на одному кластері Amazon EKS, що покращує розподіл ресурсів і спрощує керування інфраструктурою. Щоб дізнатися більше про те, як Amazon EMR працює в кластері Amazon EKS, див Нове – Amazon EMR на Amazon Elastic Kubernetes Service (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, які обслуговуються програмним балансувальником навантаження (ALB), які доступні лише з EMR Studio та автономних блокнотів, створених у приватній підмережі Amazon EKS VPC.
Наступна діаграма ілюструє архітектуру рішення.
Керована кінцева точка створюється в просторі імен Amazon EKS віртуального кластера (у цьому випадку sparkns
) і кінцеві точки HTTPS обслуговуються з приватних підмереж. Модулі ядра працюють із роллю IAM для виконання завдання, визначеною в керованій кінцевій точці. Під час створення керованої кінцевої точки EMR на EKS використовує контролер AWS Load Balancer Controller у 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, eksctl і Інтерфейс командного рядка AWS (AWS CLI), щоб забезпечити наскрізне розгортання повного рішення. Інший використовує Набір хмарних розробок AWS (AWS CDK), щоб це зробити.
На наступній діаграмі показано архітектуру та компоненти, які ми розгортаємо.
Передумови
Переконайтеся, що виконано наступні передумови:
Щоб отримати інформацію про підтримувані IdP, див Увімкніть систему єдиного входу AWS для Amazon EMR Studio.
Сценарій Bash
Сценарій доступний на GitHub.
Передумови
Сценарій вимагає використання AWS Cloud9. Дотримуйтесь інструкцій у Семінар 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 з приватними підмережами та, за бажанням, Керований Amazon Apache Airflow (Amazon MWAA) та EMR Studio.
Передумови
Вам потрібен AWS CDK версії 1.90.1 або новішої. Для отримання додаткової інформації див Початок роботи з AWS CDK.
Ми використовуємо список префіксів, щоб обмежити доступ до деяких ресурсів мережевими діапазонами IP-адрес, які ви погоджуєте. Створити список префіксів якщо ви його ще не маєте.
Якщо ви плануєте використовувати EMR Studio, вам потрібен AWS SSO налаштований у вашому обліковому записі.
Підготовка
Після того, як ви клонуєте репозиторій і перевірите файл main
гілку, створіть і активуйте нове віртуальне середовище Python:
Тепер встановіть залежності Python:
Нарешті, завантажте AWS CDK:
Розгорніть стеки
Синтезуйте стеки AWS CDK за допомогою такого коду:
Ця команда генерує чотири стеки:
- emr-eks-cdk – Основний стек
- mwaa-cdk – Додає Amazon MWAA
- студія-cdk – Додає передумови EMR Studio
- studio-cdk-live – Додає EMR Studio
На наступній діаграмі показано ресурси, які розгортають стеки AWS CDK.
Почніть з розгортання першого стека:
Якщо ви хочете використовувати Apache Airflow як оркестровку, розгорніть цей стек:
Розгорніть перший стек EMR Studio:
Зачекайте, поки керована кінцева точка стане активною. Ви можете перевірити статус, запустивши такий код:
Ідентифікатор віртуального кластера доступний у вихідних даних AWS CDK зі стеку emr-eks-cdk.
Коли кінцева точка активна, розгорніть другий стек EMR Studio:
Ручне розгортання
Якщо ви віддаєте перевагу вручну розгортати EMR на EKS і EMR Studio, скористайтеся кроками в цьому розділі.
Налаштуйте VPC
Якщо ви використовуєте Amazon EKS v. 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 Load Balancer у кластері 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
Щоб почати використовувати EMR Studio, виконайте такі дії:
- Знайдіть URL-адресу EMR Studio за студіями в регіоні:
- За вказаною URL-адресою увійдіть, використовуючи ім’я користувача AWS SSO, яке ви використовували раніше.
Після автентифікації користувач перенаправляється на інформаційну панель EMR Studio.
- Вибирати Створити робочу область.
- для Назва робочої області, введіть ім'я.
- для Підмережавиберіть підмережу, яка відповідає одній із підмереж, пов’язаних із групою керованих вузлів.
- для Розташування S3, увійдіть у відро S3, де ви можете зберігати вміст блокнота.
- Після створення робочого простору виберіть той, який знаходиться в
Ready
Статус.
- На бічній панелі виберіть піктограму кластера EMR.
- під Кластерний тип¸ вибрати Кластер EMR на EKS.
- Виберіть доступний віртуальний кластер і доступну керовану кінцеву точку.
- Вибирати Приєднувати.
Після прикріплення EMR Studio відображає ядра, доступні в ноутбук та Консоль .
- Вибирати PySpark (Kubernetes) щоб запустити ядро ноутбука та почати сеанс Spark.
Оскільки конфігурація кінцевої точки використовує AWS Glue для свого метасховища, ви можете отримати список баз даних і таблиць, підключених до каталогу даних AWS Glue. Ви можете використати наступний приклад сценарію, щоб перевірити налаштування. За потреби змініть сценарій для відповідної бази даних і таблиці, які є у вашому каталозі даних:
Прибирати
Щоб уникнути майбутніх витрат, видаліть ресурси, запущені тут, запустивши remove_setup.sh:
Висновок
EMR on 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
- аналітика
- Apache
- додаток
- застосування
- архітектура
- Authentication
- AWS
- свінг
- будувати
- випадків
- сертифікат
- вантажі
- Введіть дані:
- класифікація
- хмара
- код
- загальний
- обчислення
- зміст
- продовжувати
- контролер
- створення
- Повноваження
- Клієнти
- приладова панель
- дані
- Database
- базами даних
- розвивати
- розробка
- водій
- Кінцева точка
- підприємство
- Навколишнє середовище
- виконання
- досвід
- завод
- Перший
- стежити
- Спротив
- майбутнє
- Git
- GitHub
- Group
- Hadoop
- тут
- Вулик
- Як
- HTTPS
- IAM
- ICON
- Особистість
- У тому числі
- інформація
- Інфраструктура
- IP
- IT
- робота
- Jupyter Notebook
- Кубернетес
- запуск
- запуски
- Лінія
- список
- загрузка
- управління
- карта
- карти
- мережу
- ноутбуки
- варіант
- Інше
- фізичний
- Стручки
- Політика
- політика
- басейн
- попередній перегляд
- Головний
- приватний
- проектів
- Python
- Вимога
- ресурс
- ресурси
- прогін
- біг
- безпеку
- Послуги
- комплект
- простий
- So
- Рішення
- SQL
- старт
- почалася
- стан
- Статус
- зберігання
- зберігати
- Підтриманий
- Мета
- технічний
- тест
- час
- трафік
- Довіряйте
- користувачі
- значення
- Віртуальний
- Web
- веб-сервіси
- в
- слова
- Work
- працює