Кслера8

Запускайте интерактивные рабочие нагрузки на бессерверном Amazon EMR из Amazon EMR Studio | Веб-сервисы Amazon

Начиная с версии 6.14, Студия Amazon EMR поддерживает интерактивную аналитику на Amazon EMR без сервера. Теперь вы можете использовать бессерверные приложения EMR в качестве вычислительных ресурсов в дополнение к Amazon EMR в кластерах EC2 и Amazon EMR на EKS виртуальные кластеры для запуска блокнотов JupyterLab из рабочих областей EMR Studio.

EMR Studio — это интегрированная среда разработки (IDE), которая позволяет ученым и инженерам данных легко разрабатывать, визуализировать и отлаживать аналитические приложения, написанные на PySpark, Python и Scala. EMR Serverless — это бессерверный вариант для Амазонка ЭМИ это упрощает запуск инфраструктур анализа больших данных с открытым исходным кодом, таких как Apache Spark, без настройки, управления и масштабирования кластеров или серверов.

В статье мы покажем, как сделать следующее:

  • Создайте бессерверную конечную точку EMR для интерактивных приложений.
  • Присоедините конечную точку к существующей среде EMR Studio.
  • Создайте блокнот и запустите интерактивное приложение.
  • Беспрепятственная диагностика интерактивных приложений из EMR Studio.

Предпосылки

В типичной организации администратор учетной записи AWS настраивает ресурсы AWS, такие как Управление идентификацией и доступом AWS (IAM) роли, Простой сервис хранения Amazon (Amazon S3) ведра и Виртуальное частное облако Amazon (Amazon VPC) для доступа в Интернет и доступа к другим ресурсам в VPC. Они назначают администраторов EMR Studio, которые управляют настройкой EMR Studios и назначают пользователей конкретной EMR Studio. После назначения разработчики EMR Studio могут использовать EMR Studio для разработки и мониторинга рабочих нагрузок.

Убедитесь, что вы настроили такие ресурсы, как корзина S3, подсети VPC и EMR Studio, в одном регионе AWS.

Выполните следующие шаги, чтобы развернуть эти необходимые компоненты:

  1. Запустите следующее AWS CloudFormation стек.
    Запустить стек Cloudformation
  2. Введите значения для Пароль администратора и DevPassword и запишите пароли, которые вы создаете.
  3. Выберите Следующая.
  4. Оставьте настройки по умолчанию и выберите Следующая снова.
  5. Выберите Я признаю, что AWS CloudFormation может создавать ресурсы IAM с пользовательскими именами.
  6. Выберите «Отправить».

Мы также предоставили инструкции по развертыванию этих ресурсов вручную с помощью примеров политик IAM в разделе Репо GitHub.

Настройка EMR Studio и бессерверного интерактивного приложения

После того как администратор учетной записи AWS выполнит предварительные требования, администратор EMR Studio может войти в систему. Консоль управления AWS для создания приложений EMR Studio, Workspace и EMR Serverless.

Создайте студию и рабочее пространство EMR

Администратор EMR Studio должен войти в консоль, используя emrs-interactive-app-admin-user учетные данные пользователя. Если вы развернули необходимые ресурсы с помощью предоставленного шаблона CloudFormation, используйте пароль, указанный вами в качестве входного параметра.

  1. В консоли Amazon EMR выберите EMR без сервера в навигационной панели.
  2. Выберите Начать.
  3. Выберите Создайте и запустите EMR Studio..

Это создает студию с именем по умолчанию. studio_1 и рабочая область с именем по умолчанию My_First_Workspace. Откроется новая вкладка браузера для Studio_1 пользовательский интерфейс.

Создайте и запустите EMR Studio

Создание бессерверного приложения EMR

Выполните следующие шаги, чтобы создать бессерверное приложение EMR:

  1. На консоли EMR Studio выберите Приложения в навигационной панели.
  2. Создайте новое приложение.
  3. Что касается Фамилиявведите имя (например, my-serverless-interactive-application).
  4. Что касается Варианты настройки приложения, наведите на Использовать пользовательские настройки для интерактивных рабочих нагрузок.
    Создание бессерверного приложения с использованием пользовательских настроек

Для интерактивных приложений мы рекомендуем предварительно инициализировать драйвер и рабочие процессы, настроив предварительно инициализированная мощность во время создания приложения. Это эффективно создает «теплый» пул работников для приложения и поддерживает готовность ресурсов к использованию, позволяя приложению реагировать за считанные секунды. Дополнительные рекомендации по созданию бессерверных приложений EMR см. Определите ограничения ресурсов для каждой команды для рабочих нагрузок больших данных с помощью Amazon EMR Serverless.

  1. В Интерактивная конечная точка раздел, выберите Включить интерактивную конечную точку.
  2. В Сетевые соединения выберите VPC, частные подсети и группу безопасности, которую вы создали ранее.

Если вы развернули стек CloudFormation, представленный в этом посте, выберите emr-serverless-sg­  в качестве группы безопасности.

VPC необходим для того, чтобы рабочая нагрузка могла получить доступ к Интернету из бессерверного приложения EMR для загрузки внешних пакетов Python. VPC также позволяет вам получить доступ к таким ресурсам, как Сервис реляционной базы данных Amazon (Amazon RDS) и Амазонка Redshift которые находятся в VPC из этого приложения. Подключение бессерверного приложения к VPC может привести к исчерпанию IP-адресов в подсети, поэтому убедитесь, что в вашей подсети достаточно IP-адресов.

  1. Выберите Создать и запустить приложение.

Включите интерактивные конечные точки, выберите частные подсети и группу безопасности.

На странице приложений вы можете убедиться, что статус вашего бессерверного приложения изменится на Началось.

  1. Выберите свое приложение и выберите Как это работает?.
  2. Выберите Просмотр и запуск рабочих областей.
  3. Выберите Настроить студию.

  1. Что касается Сервисная роль¸ укажите созданную вами роль службы EMR Studio в качестве предварительного условия (emr-studio-service-role).
  2. Что касается Хранение рабочего места, введите путь к корзине S3, которую вы создали в качестве предварительного условия (emrserverless-interactive-blog-<account-id>-<region-name>).
  3. Выберите Сохранить изменения.

Выберите emr-studio-service-role и корзину emrserverless-interactive-blog s3.

14. Перейдите в консоль Studios, выбрав Студии в левом навигационном меню в Студия ЭМР раздел. Обратите внимание URL-адрес доступа к студии из консоли Studios и предоставьте его своим разработчикам для запуска приложений Spark.

Запустите свое первое приложение Spark

После того как администратор EMR Studio создал Studio, Workspace и бессерверное приложение, пользователь Studio может использовать Workspace и приложение для разработки и мониторинга рабочих нагрузок Spark.

Запустите Workspace и прикрепите бессерверное приложение.

Выполните следующие шаги:

  1. Используя URL-адрес Studio, предоставленный администратором EMR Studio, войдите в систему, используя emrs-interactive-app-dev-user учетные данные пользователя, предоставленные администратором учетной записи AWS.

Если вы развернули необходимые ресурсы с помощью предоставленного шаблона CloudFormation, используйте пароль, указанный вами в качестве входного параметра.

На Workspaces странице вы можете проверить состояние вашего Workspace. Когда рабочая область будет запущена, вы увидите изменение статуса на Готов.

  1. Запустите рабочую область, выбрав имя рабочей области (My_First_Workspace).

Откроется новая вкладка. Убедитесь, что ваш браузер разрешает всплывающие окна.

  1. В рабочей области выберите Вычисление (значок кластера) на панели навигации.
  2. Что касается Бессерверное приложение EMR, выберите ваше приложение (my-serverless-interactive-application).
  3. Что касается Интерактивная роль времени выполнения, выберите роль интерактивной среды выполнения (в этом посте мы используем emr-serverless-runtime-role).
  4. Выберите Прикреплять чтобы прикрепить бессерверное приложение в качестве типа вычислений для всех записных книжек в этой рабочей области.

Выберите my-serverless-interactive-application в качестве вашего приложения и роль emr-serverless-runtime-role и прикрепите

Запустите приложение Spark в интерактивном режиме

Выполните следующие шаги:

  1. Выберите Образцы блокнотов (значок из трех точек) на панели навигации и откройте Getting-started-with-emr-serverless Блокнот.
  2. Выберите Сохранить в рабочую область.

Для нашего ноутбука есть три варианта ядер: Python 3, PySpark и Spark (для Scala).

  1. При появлении запроса выберите ПиСпарк как ядро.
  2. Выберите Выберите.

Выберите PySpark в качестве ядра

Теперь вы можете запустить приложение Spark. Для этого используйте %%configure искровая магия команда, настраивающая параметры создания сеанса. Интерактивные приложения поддерживают виртуальные среды Python. Мы используем пользовательскую среду в рабочих узлах, указывая путь к другой среде выполнения Python для среды исполнителя, используя spark.executorEnv.PYSPARK_PYTHON, Смотрите следующий код:

%%configure -f
{
  "conf": {
    "spark.pyspark.virtualenv.enabled": "true",
    "spark.pyspark.virtualenv.bin.path": "/usr/bin/virtualenv",
    "spark.pyspark.virtualenv.type": "native",
    "spark.pyspark.python": "/usr/bin/python3",
    "spark.executorEnv.PYSPARK_PYTHON": "/usr/bin/python3"
  }
}

Установить внешние пакеты

Теперь, когда у вас есть независимая виртуальная среда для работников, записные книжки EMR Studio позволяют устанавливать внешние пакеты из бессерверного приложения с помощью Spark. install_pypi_package функционировать через контекст Spark. Использование этой функции делает пакет доступным для всех бессерверных рабочих процессов EMR.

Сначала установите matplotlib, пакет Python, из PyPi:

sc.install_pypi_package("matplotlib")

Если предыдущий шаг не дал результата, проверьте настройку VPC и убедитесь, что он правильно настроен для доступа в Интернет.

Теперь вы можете использовать набор данных и визуализировать свои данные.

Создавайте визуализации

Для создания визуализаций мы используем общедоступный набор данных о желтых такси Нью-Йорка:

file_name = "s3://athena-examples-us-east-1/notebooks/yellow_tripdata_2016-01.parquet"
taxi_df = (spark.read.format("parquet").option("header", "true") 
.option("inferSchema", "true").load(file_name))

В предыдущем блоке кода вы читаете файл Parquet из общедоступной корзины в Amazon S3. В файле есть заголовки, и мы хотим, чтобы Spark вывел схему. Затем вы используете фрейм данных Spark для группировки и подсчета определенных столбцов из taxi_df:

taxi1_df = taxi_df.groupBy("VendorID", "passenger_count").count()
taxi1_df.show()

Используйте %%display магия для просмотра результата в формате таблицы:

%%display
taxi1_df

В таблице показаны столбцы Vendor_id, Passenger_count и Count.

Вы также можете быстро визуализировать свои данные с помощью пяти типов диаграмм. Вы можете выбрать тип отображения, и диаграмма соответственно изменится. На следующем снимке экрана мы используем гистограмму для визуализации наших данных.

гистограмма, показывающая число пассажиров для каждого идентификатора поставщика

Взаимодействие с EMR Serverless с помощью Spark SQL

Вы можете взаимодействовать с таблицами в Каталог данных AWS Glue использование Spark SQL в бессерверной системе EMR. В образце блокнота мы покажем, как можно преобразовать данные с помощью фрейма данных Spark.

Сначала создайте новое временное представление под названием «такси». Это позволяет использовать Spark SQL для выбора данных из этого представления. Затем создайте фрейм данных такси для дальнейшей обработки:

taxi_df.createOrReplaceTempView("taxis")
sqlDF = spark.sql(
    "SELECT DOLocationID, sum(total_amount) as sum_total_amount 
     FROM taxis where DOLocationID < 25 Group by DOLocationID ORDER BY DOLocationID"
)
sqlDF.show(5)

В таблице показаны столбцы Vendor_id, Passenger_count и Count.

В каждой ячейке записной книжки EMR Studio вы можете развернуть Ход выполнения задания Spark для просмотра различных этапов задания, отправленного в EMR Serverless во время выполнения этой конкретной ячейки. Вы можете увидеть время, необходимое для завершения каждого этапа. В следующем примере на этапе 14 задания имеется 12 выполненных задач. Кроме того, в случае возникновения сбоя вы можете просмотреть журналы, что упрощает устранение неполадок. Мы обсудим это подробнее в следующем разделе.

Job[14]: showString в NativeMethodAccessorImpl.java:0 и Job[15]: showString в NativeMethodAccessorImpl.java:0

Используйте следующий код для визуализации обработанного кадра данных с помощью пакета matplotlib. Вы используете библиотеку Maptplotlib для отображения места высадки и общей суммы в виде гистограммы.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.clf()
df = sqlDF.toPandas()
plt.bar(df.DOLocationID, df.sum_total_amount)
%matplot plt

Диагностика интерактивных приложений

Вы можете получить информацию о сеансе для вашей конечной точки Livy, используя %%info Искрамагия. Это дает вам ссылки для доступа к пользовательскому интерфейсу Spark, а также к журналу драйверов прямо в вашем ноутбуке.

На следующем снимке экрана показан фрагмент журнала драйверов нашего приложения, который мы открыли по ссылке в своем блокноте.

скриншот журнала драйверов

Аналогично, вы можете выбрать ссылку ниже Интерфейс искры чтобы открыть пользовательский интерфейс. На следующем снимке экрана показано Исполнители вкладка, предоставляющая доступ к журналам драйвера и исполнителя.

На следующем снимке экрана показан этап 14, который соответствует шагу Spark SQL, который мы видели ранее, на котором мы рассчитали сумму общего количества сборов такси по местоположению, которая была разбита на 12 задач. Через пользовательский интерфейс Spark интерактивное приложение предоставляет подробную информацию о статусе задач, вводе-выводе и перемешивании, а также ссылки на соответствующие журналы для каждой задачи на этом этапе прямо из вашего блокнота, что обеспечивает беспрепятственный процесс устранения неполадок.

Убирать

Если вы больше не хотите сохранять ресурсы, созданные в этом посте, выполните следующие шаги по очистке:

  1. Удалите бессерверное приложение EMR..
  2. Удалите EMR Studio и связанные рабочие области и записные книжки..
  3. Чтобы удалить остальные ресурсы, перейдите в консоль CloudFormation, выберите стек и выберите Удалить.

Все ресурсы будут удалены, за исключением сегмента S3, политика удаления которого настроена на сохранение.

Заключение

В публикации было показано, как запускать интерактивные рабочие нагрузки PySpark в EMR Studio, используя EMR Serverless в качестве вычислительной машины. Вы также можете создавать и отслеживать приложения Spark в интерактивной рабочей области JupyterLab.

В следующем посте мы обсудим дополнительные возможности бессерверных интерактивных приложений EMR, такие как:

  • Работа с такими ресурсами, как Amazon RDS и Amazon Redshift, в вашем VPC (например, для подключения JDBC/ODBC).
  • Выполнение транзакционных рабочих нагрузок с использованием бессерверных конечных точек

Если вы впервые знакомитесь с EMR Studio, рекомендуем ознакомиться с Семинары по Amazon EMR и ссылаясь на Создать студию EMR.


Об авторах

Секар Шринивасан — главный специалист-архитектор решений в AWS, специализирующийся на аналитике данных и искусственном интеллекте. Секар имеет более чем 20-летний опыт работы с данными. Он с энтузиазмом помогает клиентам создавать масштабируемые решения, модернизируя их архитектуру и получая ценную информацию на основе своих данных. В свободное время он любит работать над некоммерческими проектами, направленными на образование детей из малообеспеченных семей.

Диша Умарвани — старший архитектор данных в Amazon Professional Services в сфере глобального здравоохранения и биологических наук. Она работала с клиентами над проектированием, архитектурой и масштабной реализацией стратегии данных. Она специализируется на разработке архитектур Data Mesh для корпоративных платформ.

Чат с нами

Всем привет! Могу я чем-нибудь помочь?