Общие вопросы

Вопрос. Что такое Amazon EMR?

Amazon EMR – ведущая в отрасли облачная платформа больших данных для обработки данных, интерактивного анализа и машинного обучения на основе платформ с открытым исходным кодом, таких как Apache Spark, Apache Hive и Presto. EMR позволяет анализировать данные в масштабе петабайтов за вдвое меньшую стоимость по сравнению с традиционными локальными решениями и более чем в 1,7 раза быстрее по сравнению со стандартным режимом Apache Spark.

Вопрос. Какие задачи позволяет решить Amazon EMR?

Amazon EMR позволяет сосредоточиться на задачах преобразования и анализа данных, не беспокоясь об управлении объемом вычислительных ресурсов или приложениями с открытым исходным кодом, а также снизить затраты. С помощью EMR вы можете мгновенно распределить максимальный или минимальный объем ресурсов в Amazon EC2 по мере необходимости, а также настроить правила масштабирования для изменений спроса на вычислительные ресурсы. В CloudWatch можно настроить предупреждения, которые оповестят вас об изменениях в инфраструктуре, позволяя немедленно принять соответствующие меры. Если вы используете Kubernetes, с помощью EMR вы сможете отправлять рабочие нагрузки в кластеры Amazon EKS. При работе с EC2 или EKS вы получите улучшение скорости выполнения за счет EMR, которая ускоряет анализ и позволяет сэкономить время и деньги.

Вопрос. Как правильно развертывать Amazon EMR и управлять ею?

Вы можете развернуть рабочие нагрузки на платформе EMR с помощью Amazon EC2, Amazon Elastic Kubernetes Service (EKS) или локальной службы AWS Outposts. Для выполнения рабочих нагрузок и управления ими можно применить EMR Console, API, SDK или CLI, а для оркестрации — Amazon Managed Workflows for Apache Airflow (MWAA) или AWS Step Functions. Интерактивное взаимодействие можно организовать с помощью EMR Studio или SageMaker Studio.

Вопрос. Как начать работу с Amazon EMR?

Чтобы зарегистрироваться в сервисе Amazon EMR, нажмите кнопку «Зарегистрироваться» на странице описания Amazon EMR: http://aws.amazon.com/emr. Для работы с Amazon EMR требуется регистрация в сервисах Amazon EC2 и Amazon S3. Если вы еще не зарегистрировались в этих сервисах, вам будет предложено сделать это в процессе регистрации в сервисе Amazon EMR. После регистрации ознакомьтесь с документацией Amazon EMR, где есть руководство по началу работы, с которого лучше всего начинать взаимодействие с этим сервисом.

Вопрос. Насколько надежна Amazon EMR?

См. Соглашение об уровне обслуживания.

Разработка и отладка

Вопрос. Где можно найти примеры кода?

Примеры кода можно найти в этих статьях и учебных пособиях. Если вы используете EMR Studio, изучите доступные возможности по этим примерам записных книжек.

Вопрос. Как создать приложение для обработки данных?

Вы можете разрабатывать, визуализировать и отлаживать в Amazon EMR Studio приложения для обработки или анализа данных, написанные на R, Python, Scala и PySpark. Вы также можете создать задание обработки данных на локальном компьютере в среде Eclipse, Spyder, PyCharm или RStudio, а затем выполнять его на Amazon EMR. Кроме того, вы можете выбрать в конфигурации оборудования JupyterHub или Zeppelin при создании нового кластера, чтобы разрабатывать приложение на платформе Amazon EMR с одним или несколькими инстансами.

Вопрос. Каковы преимущества инструментов командной строки или API в сравнении с Консолью управления AWS?

Инструменты командной строки и API позволяют программными средствами запускать кластеры и следить за ходом их работы, создавать связанные с ними дополнительные пользовательские функции (такие как последовательность множества этапов обработки, планировщик заданий, потоковая обработка или мониторинг) или новые инструменты и приложения для других пользователей Amazon EMR, тогда как Консоль управления AWS предоставляет удобный графический интерфейс для запуска и мониторинга кластеров непосредственно из веб‑браузера.

Вопрос: Можно ли добавить шаги в работающий кластер?

Да. Во время выполнения задания при необходимости можно добавить к кластеру дополнительные шаги посредством API AddJobFlowSteps. Эти шаги будут добавлены в конец существующей последовательности шагов. Данный вызов API можно использовать для включения в кластер логических условий или для отладки.

Вопрос. Можно ли настроить отправку уведомлений о завершении работы кластера?

Вы можете зарегистрироваться в сервисе Amazon SNS и настроить публикацию кластером сообщений в теме SNS при завершении работы. Можно также следить за процессом работы кластера в Консоли управления AWS или получать его состояние с помощью командной строки, SDK или API.

Вопрос. Можно ли завершить работу кластера после завершения шагов?

Да. Работу кластера можно завершать автоматически после завершения всех шагов, установив флаг автоматического завершения работы.

Вопрос. Какие версии ОС поддерживает Amazon EMR?

Amazon EMR 5.30.0 и более поздние, а также Amazon EMR серии 6.x основаны на Amazon Linux 2. Вы также можете использовать собственный образ AMI, созданный на основе Amazon Linux 2. Это позволяет выполнять сложную предварительную настройку практически для любого приложения. Подробнее см. в руководстве Using a Custom AMI.

Вопрос. Поддерживает ли Amazon EMR пакеты ПО сторонних разработчиков?

Да. С помощью загрузочных сценариев вы можете устанавливать в кластере пакеты ПО сторонних разработчиков. Вы также можете загрузить статически скомпилированные исполняемые файлы с помощью механизма распределенного кэширования Hadoop. EMR 6.x поддерживает Hadoop 3, что позволяет YARN NodeManager запускать контейнеры непосредственно на хосте кластера EMR либо внутри контейнера Docker. Подробную информацию см. в этой документации.

Вопрос. Какие инструменты доступны для отладки?

Чтобы определить причину неисправности, можно использовать несколько инструментов для сбора информации о кластере. Если вы используете Amazon EMR Studio, можно упростить отладку с помощью таких инструментов, как Spark UI и YARN Timeline Service. В консоли Amazon EMR можно получить доступ к постоянным пользовательским интерфейсам приложений вне кластера для Apache Spark, пользовательского интерфейса Tez и сервера YARN Timeline Server, а также к нескольким пользовательским интерфейсам приложений в кластере и сводке истории приложений для всех приложений YARN. Вы также можете подключиться к главному узлу по SSH и изучать инстансы кластера с помощью веб-интерфейсов. Дополнительную информацию см. в этой документации.

EMR Studio

Вопрос. Что такое EMR Studio?

EMR Studio – это интегрированная среда разработки, которая позволяет специалистам по работе с данными и инженерам по обработке данных упрощать процесс разработки, визуализации и отладки приложений для обработки или анализа данных, написанных на R, Python, Scala и PySpark.

Это полностью управляемое приложение с системой единого входа, полностью управляемыми записными книжками Jupyter Notebooks, автоматическим выделением инфраструктуры и возможностью отладки заданий без входа в консоль AWS или кластер. Специалисты по работе с данными и аналитики могут устанавливать собственные ядра и библиотеки, сотрудничать с коллегами, используя такие репозитории кода, как GitHub и BitBucket, или выполнять параметризованные записные книжки в рамках запланированных рабочих процессов с помощью сервисов оркестрации, например Apache Airflow, AWS Step Functions и Amazon Managed Workflows for Apache Airflow. Подробнее см. описание оркестрации аналитических задач в блокнотах Amazon EMR с использованием Amazon MWAA. Поскольку ядра и приложения EMR Studio работают на кластерах EMR, вы можете воспользоваться преимуществами распределенной обработки данных благодаря среде выполнения Amazon EMR с оптимизированной производительностью для Apache Spark. Администраторы могут настроить EMR Studio так, чтобы аналитики запускали свои приложения в существующих кластерах EMR или создавали новые кластеры, используя заданные шаблоны AWS CloudFormation для EMR.

Вопрос. Как можно использовать EMR Studio?

Сервис EMR Studio позволяет выполнить вход непосредственно в полностью управляемые блокноты Jupyter, используя корпоративные учетные данные и не входя в консоль AWS, а также создавать блокноты за считанные секунды, подключаться к образцам блокнотов и исследовать данные. Вы также можете настроить среду, загрузив собственные ядра и библиотеки Python из блокнотов. Поскольку ядра и приложения EMR Studio работают на кластерах EMR, вы можете воспользоваться преимуществами распределенной обработки данных благодаря среде выполнения Amazon EMR с оптимизированной производительностью для Apache Spark. Вы можете сотрудничать с коллегами, предоставляя общий доступ к блокнотам через Github и другие репозитории. Вы также можете запускать блокноты непосредственно как конвейеры непрерывной интеграции и развертывания. Вы можете передавать в блокнот различные значения параметров. Вы также можете связать записные книжки и интегрировать их в запланированные рабочие процессы с помощью сервисов оркестрации рабочих процессов, таких как Apache Airflow. Кроме того, отладку кластеров и заданий можно выполнять всего за несколько щелчков мыши с помощью интерфейсов собственных приложений, таких как пользовательский интерфейс Spark и сервиса YARN Timeline.

Вопрос. Чем EMR Studio отличается от EMR Notebooks?

Существует пять основных отличий.

  1. Доступ к консоли управления AWS для EMR Studio не требуется. EMR Studio размещается вне консоли управления AWS. Эффективное решение, если вы не предоставляете специалистам по работе с данными или инженерам по обработке данных доступ к консоли управления AWS.
  2. Возможность использования корпоративных учетных данных от вашего поставщика удостоверений с помощью AWS IAM Identity Center (преемник AWS SSO) для входа в EMR Studio. 
  3. EMR Studio упрощает знакомство с блокнотами. Поскольку ядра и приложения EMR Studio работают на кластерах EMR, вы можете воспользоваться преимуществами распределенной обработки данных благодаря среде выполнения Amazon EMR с оптимизированной производительностью для Apache Spark. Запустить код в кластере так же просто, как подключить записную книжку к существующему кластеру или выделить новый.
  4. EMR Studio имеет упрощенный пользовательский интерфейс и позволяет абстрагироваться от конфигурации оборудования. Например, вы можете настроить шаблоны кластеров один раз и использовать их для создания новых кластеров. 
  5. Поскольку EMR Studio упрощает отладку, вы можете получить единый доступ к пользовательским интерфейсам встроенных приложений всего за несколько щелчков мыши.

Вопрос. Чем EMR Studio отличается от SageMaker Studio?

Вы можете использовать с Amazon EMR как EMR Studio, так и SageMaker Studio. EMR Studio предоставляет интегрированную среду разработки, которая позволяет упростить процесс разработки, визуализации и отладки приложений для обработки или анализа данных, написанных на R, Python, Scala и PySpark. Amazon SageMaker Studio предоставляет единый визуальный веб‑интерфейс, в котором можно проводить все этапы разработки машинного обучения. SageMaker Studio обеспечивает полный доступ, контроль и прозрачность каждого шага, необходимого для создания, обучения и развертывания моделей. Теперь можно быстро загружать данные, создавать новые блокноты, обучать и настраивать модели, перемещаться между любыми этапами, настраивать эксперименты, сравнивать результаты и развертывать модели в одном месте, что благотворно сказывается на эффективности процесса. 

Вопрос. Как начать работу с EMR Studio?

Сперва администратор должен настроить EMR Studio. Получив уникальный URL-адрес для входа в Amazon EMR Studio от администратора, вы можете получить прямой доступ к Studio, используя корпоративные учетные данные.

Вопрос. Нужно ли выполнять вход в консоль управления AWS, чтобы воспользоваться EMR Studio?

Нет. После того как администратор настроит EMR Studio и предоставит URL-адрес для доступа к Studio, ваша команда сможет войти в систему, используя корпоративные учетные данные. Вход в консоль управления AWS не требуется. В EMR Studio команда может выполнять задачи и получать доступ к ресурсам, настроенным вашим администратором.

Вопрос. Какие поставщики удостоверений поддерживаются для единого входа в EMR Studio?

AWS IAM Identity Center (преемник AWS SSO) является поставщиком услуг единого входа для EMR Studio. Список поставщиков удостоверений, поддерживаемых AWS IAM, можно найти в документации.

Вопрос. Как создавать WorkSpace в EMR Studio?

WorkSpace содействует организации Jupyter Notebook. Все записные книжки в WorkSpace сохраняются в одной области Amazon S3 и запускаются в одном кластере. Вы также можете связать репозиторий кода, например репозиторий GitHub, со всеми записными книжками в рабочей области. Вы можете создать и настроить WorkSpace перед прикреплением к кластеру, но перед запуском записной книжки необходимо подключиться к кластеру.

Вопрос. Можно ли в EMR Studio создавать или открывать WorkSpace без кластера?

Да, WorkSpace можно создавать или открывать, не прикрепляя его к кластеру. Подключение к кластеру требуется только при запуске. Поскольку ядра и приложения EMR Studio работают на кластерах EMR, вы можете воспользоваться преимуществами распределенной обработки данных благодаря среде выполнения Amazon EMR с оптимизированной производительностью для Apache Spark.

Вопрос. Можно ли устанавливать пользовательские библиотеки, чтобы использовать их в коде записной книжки?

Все запросы Spark выполняются в кластере EMR, поэтому вам необходимо установить все библиотеки среды выполнения, которые приложения Spark используют в кластере. Вы можете легко установить библиотеку в контексте записной книжки прямо в ячейке записной книжки. Вы также можете устанавливать ядра Jupyter Notebook и библиотеки Python на главном узле кластера через ячейку записной книжки или при подключении по SSH к главному узлу кластера. Дополнительную информацию см. в этой документации. Кроме того, вы можете установить необходимые библиотеки при создании кластера, используя загрузочный сценарий или пользовательский AMI. Дополнительные сведения см. в разделах Create Bootstrap Actions to Install Additional Software и Using a Custom AMI в руководстве по управлению сервисом Amazon EMR.

Вопрос. Где хранятся записные книжки?

Вся рабочая область вместе с файлами записных книжек через постоянные промежутки времени сохраняется в формате ipynb в расположении Amazon S3, указанном при создании этой рабочей области. У файла записной книжки такое же имя, что и у записной книжки в Amzon EMR Studio.

Вопрос. Как использовать управление версиями для записной книжки? Можно ли использовать репозитории, например GitHub?

Вы можете связать репозитории на основе Git с записными книжками Amazon EMR, чтобы сохранять записные книжки в среде с управлением версиями.

Вопрос. На каких вычислительных ресурсах можно выполнять записные книжки в EMR Studio?

С помощью EMR Studio код записных книжек можно запускать на Amazon EMR, работающей в Amazon Elastic Compute Cloud (Amazon EC2) или на Amazon EMR в Amazon Elastic Kubernetes Service (Amazon EKS). Блокноты можно прикрепить как к существующим, так и к новым кластерам. В EMR Studio кластеры можно создавать EMR двумя способами: на основе предварительно настроенного шаблона кластера через AWS Service Catalog или указав имя кластера, количество и тип инстансов.

Вопрос. Можно ли повторно подключить WorkSpace к другому вычислительному ресурсу EMR Studio?

Да. Откройте WorkSpace, выберите значок кластеров EMR слева, нажмите кнопку Detach (Отсоединить), а затем выберите кластер в раскрывающемся списке кластеров и нажмите кнопку Attach (Прикрепить).

Вопрос. Как найти WorkSpace в EMR Studio?

В EMR Studio выберите вкладку Workspaces слева и просмотрите все рабочие столы WorkSpace, созданные вами и другими пользователями в том же аккаунте AWS.

Вопрос. Какие политики IAM необходимы для использования EMR Studio?

В любом случае для EMR Studio необходимы разрешения на взаимодействие с другими сервисами AWS. Чтобы предоставить EMR Studio необходимые разрешения, вашим администраторам следует создать роль сервиса EMR Studio с учетом представленных политик. Кроме того, им необходимо указать роль пользователя для EMR Studio, которая определяет разрешения на уровне Studio. При добавлении пользователей и групп из IAM Identity Center (преемник AWS SSO) в EMR Studio администраторы могут назначить политику сеанса пользователю или группе для применения детальных элементов управления разрешениями. Политики сеанса помогают администраторам детализировать разрешения пользователей, не создавая несколько ролей IAM. Дополнительную информацию о политиках сеанса см. в разделе о политиках и разрешениях в руководстве AWS Identity and Access Management User.

Вопрос. Существуют ли какие-либо ограничения на кластеры EMR, к которым можно прикрепить WorkSpace в EMR Studio?

Да. Кластеры высокой доступности (с несколькими основными узлами), кластеры с Kerberized и кластеры AWS Lake Formation в настоящее время не поддерживаются.

Вопрос. Какова стоимость использования Amazon EMR Studio?

Amazon EMR Studio предоставляется без дополнительной платы. При использовании EMR Studio взимается соответствующая плата за хранилище Amazon Simple Storage Service и за кластеры Amazon EMR. Дополнительные сведения о вариантах оплаты для Amazon EMR см. на этой странице.

EMR Notebooks

Вопрос. Что представляет собой сервис EMR Notebooks?

Мы рекомендуем всем новым клиентам использовать Amazon EMR Studio, а не EMR Notebooks. Сервис EMR Notebooks предоставляет управляемую среду на основе решения Jupyter Notebook, с помощью которой специалисты по обработке и анализу данных, аналитики и разработчики могут выполнять подготовку данных и визуализировать их, совместно работать с коллегами, создавать приложения и выполнять интерактивный анализ с использованием кластеров EMR. Мы рекомендуем всем новым клиентам использовать только EMR Studio, но EMR Notebooks поддерживается для сохранения совместимости.

Вопрос. Что можно делать с помощью сервиса EMR Notebooks?

С помощью сервиса EMR Notebooks можно создавать приложения Apache Spark и выполнять интерактивные запросы в своем кластере EMR, прикладывая при этом минимальные усилия. Пользователи могут создавать бессерверные записные книжки непосредственно в консоли, подключать их к существующему общему кластеру EMR либо прямо в консоли выделить кластер с не менее чем одним узлом и незамедлительно приступить к экспериментам в Spark. Кроме того, записные книжки можно отключать и подключать повторно к новым кластерам. Система автоматически сохраняет записные книжки в корзины S3, и вы можете извлечь сохраненные записные книжки в консоли, чтобы продолжить работу. Сервис EMR Notebooks укомплектован библиотеками из репозитория Anaconda, благодаря чему можно импортировать эти библиотеки и использовать их в коде своих записных книжек, а также применять их для работы с данными и визуализации результатов. Более того, в сервис EMR Notebooks интегрированы функции мониторинга Spark, которые можно использовать для отслеживания хода выполнения ваших заданий Spark и отладки кода из записной книжки.

Вопрос. Как начать работу с сервисом EMR Notebooks?

Чтобы начать работу с сервисом EMR Notebooks, откройте консоль EMR и в области навигации выберите Notebooks. Затем выберите Create Notebook, введите имя записной книжки, выберите кластер EMR или создайте новый, укажите необходимую роль сервиса для записной книжки, а затем выберите корзину S3, в которой необходимо сохранить файлы записной книжки. После этого щелкните Create Notebook. После того как записная книжка получит статус Ready, нажмите кнопку Open, чтобы запустить редактор записных книжек.

Вопрос. Какие версии выпусков EMR поддерживает сервис EMR Notebooks?

Сервис EMR Notebooks можно подключить к кластерам EMR под управлением EMR 5.18.0 или более поздних выпусков.

Вопрос. Какова стоимость использования EMR Notebooks?

Сервис EMR Notebooks доступен к использованию без дополнительной платы. Мы будем взимать с вас стандартную плату за кластеры EMR, подключенные к вашему аккаунту. Дополнительные сведения о ценах на кластер см. на странице https://aws.amazon.com/emr/pricing/   

Управление данными

Вопрос. Как отправить данные в хранилище Amazon S3?

Amazon EMR предусматривает несколько способов отправки данных в кластер. Наиболее распространенный способ заключается в загрузке данных в Amazon S3 и использовании встроенных функций Amazon EMR для отправки данных в кластер. Функцию распределенного кэша Hadoop можно использовать для передачи файлов из распределенной файловой системы в локальную файловую систему. Подробнее см. в документации. В качестве альтернативного способа переноса данных из локальной среды в облако можно использовать один из сервисов миграции данных в облако от AWS.

Вопрос. Где находятся журналы кластеров, работа которых завершена?

Журналы системы Hadoop и пользователей будут помещены в корзину Amazon S3, указанную вами при создании кластера. Постоянные пользовательские интерфейсы приложений запускаются вне кластера. Журналы серверов Spark, пользовательский интерфейс Tez и серверы YARN Timeline доступны в течение 30 дней после завершения работы приложения.

Вопрос. Выполняется ли сжатие журналов?

Нет. В настоящее время Amazon EMR не выполняет сжатие логов при перемещении их в хранилище Amazon S3.

Вопрос: Можно ли загружать свои данные прямо из Интернета или других источников, помимо Amazon S3?

Да. И наконец, вы можете использовать сервис AWS Direct Connect для установки выделенного частного соединения с AWS. Для большого объема данных можно использовать AWS Import/Export. Подробнее см. в документации.

Выставление счета

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

Нет. Поскольку все кластеры и входные данные различны, невозможно оценить продолжительность выполнения задания заранее.

Вопрос. Сколько стоит Amazon EMR?

Цена Amazon EMR формируется просто и предсказуемо: плата начисляется на основе посекундного тарифа за каждую секунду использования, минимальный уровень оплаты составляет одну минуту. Оценить свои расходы можно с помощью калькулятора цен AWS. Плата за пользование другими сервисами Amazon Web Services, включая Amazon EC2, взимается по тарифам, отличным от тарифа на Amazon EMR.

Вопрос. Когда начинается и заканчивается начисление платы за кластеры Amazon EMR?

Начисление платы за Amazon EMR начинается, когда кластер готов к выполнению шагов. Начисление платы за Amazon EMR заканчивается, когда вы отправляете запрос на принудительное завершение работы кластера. Дополнительную информацию о начале и завершении начисления платы за Amazon EC2 см. на странице вопросов и ответов о начислении платы за Amazon EC2.

Вопрос. Где можно отслеживать использование ресурсов Amazon EMR, Amazon EC2 и Amazon S3?

Отслеживать использование ресурсов можно в консоли управления счетами и затратами.

Вопрос: Каким образом рассчитывается нормализованное время работы инстанса, которое выводится в консоли?

В Консоли управления AWS для каждого кластера есть столбец «Normalized Instance Hours», в котором отображается использованное кластером на данный момент время вычислений, округленное до часов.

Нормализованное время работы инстанса – это время вычислений, определяемое на основе следующего стандарта: 1 час работы инстанса m1.small = 1 час нормализованного времени вычислений. Список размеров семейств инстансов и соответствующий коэффициент нормализации в час см. в документации.

Например, если кластер из 10 узлов с инстансами r3.8xlarge работает в течение часа, общее нормализованное время работы инстанса, отображаемое в консоли, составит 640 часов (10 (количество узлов) × 64 (коэффициент нормализации) × 1 (время работы кластера в часах) = 640).

Это приблизительное число, его нельзя использовать для выставления счета. Информацию об оплате за использование Amazon EMR см. в консоли управления счетами и затратами.

Вопрос. Поддерживает ли Amazon EMR инстансы по требованию, спотовые и зарезервированные инстансы Amazon EC2?

Да. Amazon EMR эффективно поддерживает инстансы по требованию, спотовые и зарезервированные инстансы. Подробнее о зарезервированных инстансах Amazon EC2 см. по ссылке. Подробнее о спотовых инстансах Amazon EC2 см. здесь. Подробнее о зарезервированных инстансах Amazon EC2 см. здесь.

Вопрос. Ваши цены указаны с учетом налогов?

Если не указано иное, представленные здесь цены не включают применимые налоги и сборы, в том числе НДС и применимый налог с продаж. Для клиентов с платежным адресом в Японии использование сервисов AWS облагается потребительским налогом Японии. Подробнее

Безопасность и контроль доступа

Вопрос. Как предотвратить просмотр моих данных другими пользователями во время работы кластера?

Amazon EMR запускает ваши инстансы в двух группах безопасности Amazon EC2, одна из которых содержит основной, а другая – прочие узлы кластера. Один из портов главной группы безопасности открыт для взаимодействия с сервисом. У этой группы имеется также порт SSH, посредством которого вы осуществляете доступ к инстансам по протоколу SSH с помощью ключа, указанного в начале работы. Другие узлы запускаются в отдельной группе безопасности, для которой разрешено взаимодействие только с главным инстансом. По умолчанию при создании обеих групп безопасности к ним запрещен доступ извне, в том числе из инстансов Amazon EC2, принадлежащих другим пользователям. В связи с тем, что эти группы безопасности относятся к вашему аккаунту, вы можете настраивать их с помощью стандартных инструментов EC2 или панели управления. Подробнее о группах безопасности EC2 см. здесь. Кроме того, вы можете настроить блокировку общего доступа к Amazon EMR в каждом регионе, где вы хотите запретить создание кластеров, если правило разрешает общий доступ по любому порту, не включенному в список исключений.

Вопрос. Насколько защищены мои данные?

Механизмы аутентификации Amazon S3 гарантируют, что хранимые данные защищены от несанкционированного доступа. Доступ к данным имеется только у того пользователя, который их загрузил, если им не определены другие правила доступа. Пользователи Amazon EMR могут также пересылать данные в хранилище Amazon S3 по безопасному протоколу передачи данных HTTPS. Кроме того, сервис Amazon EMR всегда использует протокол HTTPS для передачи данных между Amazon S3 и Amazon EC2. Для дополнительной безопасности пользователи могут зашифровать входные данные перед загрузкой в Amazon S3 с помощью любого средства шифрования данных. В таком случае потребуется добавить в начало кластера этап дешифрования для извлечения данных из хранилища Amazon S3 при помощи Amazon EMR.

Вопрос: Можно ли в целях аудита безопасности или соответствия требованиям просмотреть историю всех вызовов API EMR, выполненных для моего аккаунта?

Да. AWS CloudTrail – это веб‑сервис, который записывает вызовы AWS API для вашего аккаунта и предоставляет файлы журналов. История вызовов API AWS в CloudTrail позволяет проводить анализ безопасности и аудит соответствия требованиям, а также отслеживать изменения ресурсов. Подробнее о CloudTrail см. на странице AWS CloudTrail. Включить этот сервис можно на странице CloudTrail в Консоли управления AWS.

Вопрос. Как управлять доступом пользователей EMR к Amazon S3?

По умолчанию процессы приложения Amazon EMR используют профиль инстанса EC2 при обращении к другим сервисам AWS. Для многопользовательских кластеров Amazon EMR предоставляет три варианта управления доступом пользователей к данным Amazon S3.

  1. Интеграция с AWS Lake Formation дает вам возможность определять точно настраиваемые политики авторизации и управлять ими в AWS Lake Formation для доступа к базам данных, таблицам и столбцам в AWS Glue Data Catalog. Вы можете принудительно применить политики авторизации к заданиям, которые отправлены с помощью Amazon EMR Notebooks и Apache Zeppelin для интерактивных рабочих нагрузок EMR Spark, и отправлять события аудита в AWS CloudTrail. Включив эту интеграцию, вы также включаете федеративный единый вход в EMR Notebooks или Apache Zeppelin из систем корпоративных удостоверений, совместимых с Security Assertion Markup Language (SAML) 2.0.
  2. Встроенная интеграция с Apache Ranger дает возможность настроить новый или существующий сервер Apache Ranger для детального определения политик авторизации пользователей и управления этими политиками, чтобы организовать доступ к базам данных, таблицам и столбцам данных Amazon S3 через Hive Metastore. Apache Ranger – это инструмент с открытым исходным кодом для создания, мониторинга полнофункциональной защитой данных в масштабах платформы Hadoop и управления ею.

    Такая встроенная интеграция дает возможность определять три типа политик авторизации на сервере администрирования политик Apache Ranger. Для Hive Можно установить авторизацию на уровне таблицы, столбца и строки, для Spark – на уровне таблицы и столбца, а для Amazon S3 – на уровне префикса и объекта. Amazon EMR автоматически устанавливает и настраивает соответствующие плагины Apache Ranger в кластере. Эти плагины Ranger синхронизируют политики авторизации с сервером администрирования политик, принудительно применяют контроль доступа к данным и отправляют события аудита в Amazon CloudWatch Logs.
  3. Средство привязки ролей Amazon EMR дает возможность применять разрешения AWS IAM для управления доступом к ресурсам AWS. Можно создавать привязки между пользователями (или группами) и настраиваемыми ролями IAM. Пользователь или группа имеют доступ только к тем данным, к которым им разрешает обращаться настраиваемая роль IAM. Эта функция на данный момент доступна в AWS Labs.

Регионы и зоны доступности

Вопрос: Как Amazon EMR работает с зонами доступности?

Amazon EMR запускает все узлы кластера в одной зоне доступности Amazon EC2, что повышает производительность выполнения потоков заданий. По умолчанию для запуска кластера Amazon EMR выбирает зону доступности, в которой больше доступных ресурсов. Однако при необходимости можно указать другую зону доступности. У вас также есть возможность оптимизировать расположение, используя самые дешевые инстансы по требованию, оптимальные спотовые ресурсы или резервирование ресурсов по требованию.

Вопрос. В каких регионах доступен сервис Amazon EMR?

Список регионов AWS с поддержкой сервиса Amazon EMR см. в Таблице регионов AWS для всей глобальной инфраструктуры AWS.

Вопрос. Поддерживается ли Amazon EMR в локальных зонах AWS?

EMR поддерживает запуск кластеров в локальной зоне AWS Лос-Анджелес. EMR можно пользоваться в регионе Запад США (Орегон) для запуска кластеров в подсетях, связанных с локальной зоной AWS Лос-Анджелес.

Вопрос. Какой регион выбрать для запуска кластеров?

При создании кластера обычно лучше выбирать регион, в котором размещены ваши данные.

Вопрос. Можно ли обрабатывать данные, расположенные в регионе ЕС, в кластере, запущенном в регионе США, и наоборот?

Да, можно. При передаче данных из одного региона в другой взимается плата за использование полосы пропускания. Информацию о стоимости использования полосы пропускания см. в разделе цен на странице описания EC2.

Вопрос: Каковы особенности использования сервиса в регионе AWS GovCloud (США)?

Регион AWS GovCloud (США) предназначен для использования государственными органами США и их клиентами. Для него действуют Правила международных перевозок вооружений США (ITAR). В регионе GovCloud сервис EMR не поддерживает использование спотовых инстансов и возможность отладки. Консоль управления EMR в GovCloud в настоящее время недоступна.

Варианты развертывания

Amazon EMR для Amazon EC2

Вопрос. Что такое кластер Amazon EMR?
Кластером называют коллекцию инстансов Amazon Elastic Compute Cloud (Amazon EC2). Каждый инстанс в кластере называется узлом и выполняет в кластере определенную роль, именуемую типом узла. Также Amazon EMR устанавливает на каждом типе узла разные программные компоненты, которые позволяют им выполнять определенные задачи в Apache Hadoop и других распределенных приложениях. У каждого кластера есть уникальный идентификатор с префиксом «j‑».

Вопрос. Какие типы узлов существуют в кластере?
Кластер Amazon EMR использует узлы следующих трех типов.

  1. Главный узел. Этот узел управляет кластером, выполняя программные компоненты для координации распределения данных и задач обработки между другими узлами. Главный узел отслеживает состояние каждой задачи и работоспособность кластера. В каждом кластере есть один главный узел, и он может быть единственным узлом в кластере.
  2. Центральный узел. Этот узел оснащен программными компонентами для выполнения задач и работы с данными в распределенной файловой системе Hadoop (HDFS) своего кластера. В кластерах с несколькими узлами всегда есть хотя бы один центральный узел.
  3. Узел заданий. Этот узел оснащен программными компонентами, которые только выполняют задачи, не сохраняя данные в распределенной файловой системе Hadoop (HDFS). Узлы заданий в кластере могут отсутствовать.

Вопрос. Что такое шаг кластера?
Шаг кластера – это определяемая пользователем единица обработки данных, обычно соответствующая одной операции с данными. Шаг кластера представляет собой приложение Hadoop MapReduce, представленное в виде JAR‑файла Java или потоковой программы, написанной на языках Java, Ruby, Perl, Python, PHP, R или C++. Например, чтобы подсчитать количество употреблений слов в документе и вывести их в порядке убывания частотности, первый шаг будет представлять собой приложение MapReduce, которое подсчитывает количество употреблений каждого слова, а второй шаг – приложение MapReduce, которое по этому количеству сортирует вывод результатов.

Вопрос. Какие бывают состояния кластера?
STARTING: кластер начинает свою работу с настройки инстансов EC2.
BOOTSTRAPPING: выполнение в кластере загрузочных сценариев.
RUNNING: выполнение текущего шага кластера.
WAITING: кластер активен, но ни один шаг не выполняется.
TERMINATING: кластер в процессе выключения.
TERMINATED: работа кластера завершена без ошибок.
TERMINATED_WITH_ERRORS: работа кластера завершена с ошибками.

Вопрос: Какие бывают состояния шага кластера?
PENDING: ожидание запуска шага.
RUNNING: шаг в процессе выполнения.
COMPLETED: выполнение шага успешно завершено.
CANCELLED: отмена выполнения шага до его запуска из‑за сбоя предыдущего шага или завершения работы кластера до запуска шага.
FAILED: сбой во время выполнения шага.

Запуск кластера

Вопрос. Как запустить кластер?
Запустить кластер можно из Консоли управления AWS, заполнив простую форму запроса кластера. В форме запроса вы указываете имя вашего кластера, местонахождение входных данных в хранилище Amazon S3, приложение для обработки данных, место размещения итоговых данных, а также нужное вам количество и тип инстансов Amazon EC2. При необходимости можно указать место для сохранения файлов журналов вашего кластера и ключ SSH для подключения к кластеру во время его работы. Вы также можете запустить кластер с помощью API RunJobFlow или команды create в интерфейсе командной строки. Запуск кластера с помощью EMR Studio описан выше в разделе о EMR Studio.

Вопрос. Как завершить работу кластера?
Завершить работу кластера можно в любой момент, выбрав его в Консоли управления AWS и нажав кнопку «Terminate». Можно также воспользоваться API TerminateJobFlows. При завершении работы кластера все результаты, не сохраненные в Amazon S3, будут потеряны, а все инстансы Amazon EC2 будут выключены.

Вопрос. Поддерживает ли Amazon EMR одновременную работу множества кластеров?
Вы можете запустить неограниченное количество кластеров,. Во время начала работы общее число инстансов во всех кластерах не может превышать 20. Если вам потребуются дополнительные инстансы, заполните форму запроса инстансов Amazon EC2. После увеличения лимита инстансов Amazon EC2 к кластерам Amazon EMR будет автоматически применяться новый лимит.

Управление кластерами

Вопрос. Как Amazon EMR работает с сервисами Amazon EC2 и Amazon S3?

Пользователи могут загружать входные данные и приложение для обработки данных в Amazon S3. Затем Amazon EMR запускает указанное количество инстансов Amazon EC2. Сервис запускает кластер, передавая входные данные из Amazon S3 посредством схем идентификации URI для S3 на запущенные инстансы Amazon EC2. После завершения работы кластера Amazon EMR передает выходные данные в хранилище Amazon S3, откуда пользователи могут извлечь их или использовать в качестве входных данных для другого кластера.

Вопрос. Как выполняются вычисления в Amazon EMR?

Amazon EMR использует механизм обработки данных Hadoop для выполнения вычислений по модели программирования MapReduce. Пользователи разрабатывают алгоритмы с помощью функций map() и reduce(). Сервис Amazon EMR запускает заданное пользователем число инстансов Amazon EC2, среди которых есть один главный и множество прочих узлов. и обеспечивает на них работу ПО Hadoop. Главный узел разбивает входные данные на блоки и распределяет процесс обработки этих блоков по другим узлам. После этого каждый узел запускает функцию map для полученных данных, генерируя промежуточные данные. Затем промежуточные данные сортируются, разделяются и передаются процессам, которые локально применяют на узлах функцию reduce. Наконец, выходные данные, полученные при выполнении заданий reduce, собираются в файлы. Один «кластер» может содержать последовательность таких шагов MapReduce.

Вопрос. Какие типы инстансов Amazon EC2 поддерживает Amazon EMR?

Подробные сведения о новых доступных типах инстансов и ценах в разных регионах см. на странице цен EMR.

Вопрос. Сколько времени займет работа кластера?

Время работы кластера зависит от ряда факторов, в том числе от типа кластера, от объема входных данных и от количества и типа инстансов Amazon EC2 в кластере.

Вопрос: Сможет ли Amazon EMR возобновить выполнение кластера в случае отказа главного узла?

Да. Кластер EMR (версии 5.23 или новее) можно запустить с тремя главными узлами. Это позволит поддерживать высокую доступность таких приложений, как YARN Resource Manager, HDFS NameNode, Spark, Hive и Ganglia. Amazon EMR автоматически переключается на работу с резервным основным узлом, если происходит сбой основного главного узла либо таких критических процессов, как Resource Manager или NameNode. Главный узел не может стать причиной отказа всей системы. Это позволяет долгоживущим кластерам EMR работать бесперебойно. В случае отказа Amazon EMR автоматически заменяет неисправный главный узел новым главным узлом с той же конфигурацией и загрузочными действиями. 

Вопрос: Сможет ли Amazon EMR возобновить выполнение кластера в случае отказа другого узла?

Да. Amazon EMR обладает отказоустойчивостью в таких случаях, и при отказе узла выполнение задания будет продолжено. Amazon EMR также выделит новый узел, если центральный узел выйдет из строя. Однако Amazon EMR не сможет заменить узлы, если все узлы в кластере выйдут из строя.

Вопрос: Есть ли у меня доступ к узлам кластера по SSH?

Да. Вы можете подключиться к узлам вашего кластера по SSH и выполнять команды Hadoop непосредственно из них. Доступ по SSH в определенный узел возможен только после входа в главный узел.

Вопрос: Что собой представляют загрузочные сценарии Amazon EMR?

Загрузочные сценарии – это возможность запускать пользовательскую настройку до начала выполнения кластера в Amazon EMR. Загрузочные сценарии можно использовать для установки ПО или настройки инстансов перед началом работы кластера. Подробнее о загрузочных сценариях см. в руководстве для разработчиков EMR.

Вопрос: Как использовать загрузочные сценарии?

Скрипт для загрузочного сценария можно написать на любом языке, установленном на инстансе кластера, включая Bash, Perl, Python, Ruby, C++ и Java. Доступен ряд предопределенных загрузочных сценариев. После написания скрипт нужно загрузить в Amazon S3 и при запуске кластера указать его местонахождение. Подробные сведения об использовании загрузочных сценариев см. в руководстве для разработчиков

Вопрос. Как настроить Hadoop для кластера?

Настройки Hadoop, заданные по умолчанию в EMR, подходят для выполнения большинства задач. Тем не менее, при наличии особых требований, связанных с ресурсами памяти и обработкой данных, может потребоваться изменить эти настройки. Например, если при выполнении заданий кластера интенсивно используются ресурсы памяти, можно уменьшить требования к процессору и сократить объем памяти, выделенный для контроля за ходом работы. В этом случае для настройки кластера при запуске имеется предопределенный загрузочный сценарий. Информацию о настройке и инструкции по применению см. в разделе Настройка загрузочного сценария для интенсивного использования памяти руководства для разработчиков. Дополнительный предопределенный загрузочный сценарий позволяет настроить любые значения параметров кластера. Инструкции по применению см. в разделе Настройка загрузочных сценариев Hadoop руководства для разработчиков.

Вопрос. Можно ли изменить число подчиненных узлов в работающем кластере?

Да. Есть два типа узлов: (1) узлы ядра с распределенной файловой системой Hadoop (HDFS), где находятся данные длительного хранения и выполняются задания Hadoop, и (2) узлы заданий, на которых выполняются только задания Hadoop. Во время работы кластера можно увеличить количество узлов ядра и увеличить либо уменьшить количество узлов заданий. Это можно сделать с помощью API, Java SDK или интерфейса командной строки. Подробнее о том, как изменить размер работающего кластера, см. в разделе об изменениях размера работающих кластеров в руководстве для разработчиков. Также можно использовать управляемое масштабирование EMR.

Вопрос. В каких случаях следует использовать узлы ядра, а в каких – узлы заданий?

Поскольку данные длительного хранения размещаются в файловой системе HDFS узлов ядра, которые не могут быть удалены, их следует зарезервировать для рабочих нагрузок, потребность в которых имеется до момента завершения работы кластера. Так как узлы заданий не содержат файловой системы HDFS и их можно добавлять и удалять, их лучше использовать для периодических рабочих нагрузок. Группы инстансов задач можно запускать на спотовых инстансах с целью увеличения объема при минимальных затратах.

Вопрос. В каких случаях может потребоваться изменить количество узлов в работающем кластере?

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

Вопрос. Можно ли автоматически менять число подчиненных узлов между шагами кластера?

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

Вопрос: Как разрешить доступ к моему кластеру для других пользователей IAM?

Чтобы создать новый кластер, видимый для всех пользователей IAM, в командной строке EMR при создании кластера задайте параметр ‑‑visible‑to‑all‑users. Например, elastic‑mapreduce ‑‑create ‑‑visible‑to‑all‑users. Если вы используете Консоль управления, выберите пункт «Visible to all IAM Users» на панели «Advanced Options» мастера создания кластера.

Чтобы сделать существующий кластер видимым для всех пользователей IAM, необходимо воспользоваться интерфейсом командной строки EMR. Задайте параметр ‑‑set‑visible‑to‑all‑users, указав идентификатор кластера. Например, elastic‑mapreduce ‑‑set‑visible‑to‑all‑users true ‑‑jobflow j‑xxxxxxx. Эту процедуру может выполнить только создавший кластер пользователь.

Подробнее об этом см. в разделе о настройках пользовательских разрешений в руководстве для разработчиков по EMR.

Использование тегов в кластере

Вопрос. Каким ресурсам Amazon EMR можно присваивать теги?

Теги можно присваивать активным кластерам Amazon EMR. Поскольку кластер Amazon EMR состоит из инстансов Amazon EC2, тег, присвоенный кластеру Amazon EMR, будет распространен на все активные инстансы Amazon EC2 в этом кластере. Добавлять, редактировать или удалять теги кластеров, работа которых завершена, или выключенных инстансов Amazon EC2, которые ранее входили в активный кластер, невозможно.

Вопрос: Можно ли использовать теги Amazon EMR для предоставления разрешений на работу с ресурсами пользователям IAM?

Нет, Amazon EMR не поддерживает возможность предоставления разрешений на работу с ресурсами на основе тегов. Следует однако отметить, что теги, распространяемые на инстансы Amazon EC2, функционируют так же, как и обычные теги Amazon EC2. Таким образом, если теги, распространяемые на инстансы кластера Amazon EMR, удовлетворяют условиям политики IAM для Amazon EC2, то она будет для них действовать.

Вопрос: Сколько тегов можно присвоить одному ресурсу?

Кластеру Amazon EMR можно присвоить до десяти тегов.

Вопрос: Будут ли теги кластера Amazon EMR отображаться для каждого инстанса Amazon EC2 этого кластера? Если удалить тег кластера Amazon EMR, будет ли он автоматически удален для всех связанных инстансов EC2?

Да, Amazon EMR распространяет теги кластера на инстансы EC2, на которых выполняется этот кластер. При присвоении кластеру Amazon EMR тега последний также появится на связанных инстансах Amazon EC2. Аналогичным образом при удалении тега из кластера Amazon EMR этот тег будет также удален из связанных с кластером инстансов Amazon EC2. Тем не менее, если вы используете политики IAM для Amazon EC2 и планируете применять функциональные возможности тегирования Amazon EMR, убедитесь в наличии у вас разрешения на использование API тегирования Amazon EC2 CreateTags и DeleteTags.

Вопрос: Как сегментировать отображаемые в счете затраты по тегам?

Здесь нужно выбрать теги, которые вы хотите использовать в отчете по затратам AWS. Чтобы увидеть затраты на многокомпонентные ресурсы, вы можете упорядочить данные счета, сгруппировав ресурсы с одинаковыми тегами.

Вопрос: Как определить инстансы Amazon EC2, относящиеся к кластеру Amazon EMR?

У инстансов Amazon EC2, связанных с кластером Amazon EMR, есть два системных тега:

  • aws:elasticmapreduce:instance‑group‑role=CORE
    • Key = instance-group role ; Value = [CORE or TASK];
  • aws:elasticmapreduce:job‑flow‑id=j‑12345678
    • Key = job‑flow‑id ; Value = [JobFlowID]

Вопрос: Можно ли редактировать теги непосредственно на инстансах Amazon EC2?

Да, вы можете добавлять или удалять теги непосредственно на инстансах Amazon EC2, относящихся к кластеру Amazon EMR, но делать это не рекомендуется, так как система тегирования Amazon EMR не синхронизирует изменения, сделанные непосредственно на связанных с кластером инстансах Amazon EC2. Добавлять и удалять теги кластера Amazon EMR рекомендуется на консоли Amazon EMR, интерфейса командной строки или посредством API, чтобы гарантировать применение правильных тегов к кластеру и всем связанным с ним инстансам Amazon EC2.

EMR Serverless

Общие

Вопрос. Что такое Amazon EMR Serverless?

Amazon EMR Serverless – это новый вариант развертывания в Amazon EMR, который позволяет запускать такие платформы для работы с большими данными, как Apache Spark и Apache Hive, при этом исключая необходимость настраивать и масштабировать кластеры, а также управлять ими.

Вопрос. Кто может использовать EMR Serverless?

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

Вопрос. Как начать работу с EMR Serverless?

EMR Studio, интерфейс командной строки (CLI) или интерфейсы API можно использовать, чтобы отправлять задания, отслеживать их состояние и создавать конвейеры для запуска в EMR Serverless. Чтобы начать работу с EMR Studio, войдите в консоль управления AWS, перейдите в Amazon EMR под категорией «Аналитика» и выберите Amazon EMR Serverless. Выполните шаги, описанные в консоли управления AWSперейдите в Amazon EMR под категорией «Аналитика» и выберите Amazon EMR Serverless. Выполните шаги, описанные в Руководстве по началу работы, чтобы создать приложение с помощью EMR Serverless и начать отправлять задания. Дополнительные сведения см. на странице Взаимодействие с приложением в AWS CLI, чтобы запускать приложения и отправлять задания с помощью CLI. Можно также найти примеры и образец кода EMR Serverless в нашем репозитории GitHub.

Вопрос. Какие платформы с открытым исходным кодом поддерживает EMR Serverless?

В настоящее время EMR Serverless поддерживает движки Apache Spark и Apache Hive. Если вы хотите получить поддержку других платформ, например Apache Presto или Apache Flink, отправьте запрос по адресу emr-feedback@amazon.com.

Вопрос. В каких регионах доступен сервис EMR Serverless?

Сервис EMR Serverless доступен в следующих регионах AWS: Азиатско-Тихоокеанский регион (Мумбаи), Азиатско-Тихоокеанский регион (Сеул), Азиатско-Тихоокеанский регион (Сингапур), Азиатско-Тихоокеанский регион (Сидней), Азиатско-Тихоокеанский регион (Токио), Канада (Центральная), Европа (Франкфурт), Европа (Ирландия), Европа (Лондон), Европа (Париж), Европа (Стокгольм), Южная Америка (Сан-Паулу), Восток США (Северная Вирджиния), Восток США (Огайо), Запад США (Северная Калифорния) и Запад США (Орегон).

Вопрос. В чем разница между Amazon EMR Serverless, Amazon EMR для EC2, Amazon EMR для AWS Outposts и Amazon EMR для EKS?

Amazon EMR позволяет запускать приложения в кластерах на базе EC2, кластерах EKS, Outposts или Serverless. Кластеры EMR для EC2 подойдут клиентам, которым нужен максимальный и гибкий контроль над своими приложениями. С помощью кластеров EMR для EC2 клиенты могут выбирать тип инстанса EC2 в зависимости от требований к производительности конкретного приложения, настраивать Linux AMI, конфигурацию инстансов EC2, настраивать и расширять платформы с открытым исходным кодом, а также устанавливать дополнительное индивидуальное ПО в инстансах кластеров. Amazon EMR для EKS – подходящий вариант для тех клиентов, которым требуется стандартизировать EKS для управления кластерами в приложениях или использования различных версий платформ с открытым исходным кодом в одном и том же кластере. Сервис Amazon EMR для AWS Outposts предназначен для тех пользователей, которые хотят запускать EMR ближе к своим центрам обработки данных и в пределах Outpost. EMR Serverless подходит для тех клиентов, которые желают избежать необходимости управлять кластерами и предпочитают запускать приложения с помощью платформ с открытым исходным кодом.

Вопрос. Чем EMR Serverless отличается от Amazon EMR для EC2?


Возможность


EMR Serverless


Amazon EMR для EC2 

Amazon EMR для EKS 


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


Да


Да

Да

Отказоустойчивость к сбоям зон доступности


Да


Нет

Да

Автоматическое увеличение или уменьшение масштаба ресурсов при необходимости


Да


Да

Да

Возможность шифрования для данных в местах хранения


Да


Да

Да


Поддержка платформ с открытым исходным кодом


Spark и Hive


несколько

Spark


Поддержка точной авторизации с помощью AWS Lake Formation


Нет


Да

Нет

Поддержка Apache Hudi и Apache Iceberg

Да

Да

Да

Интеграция с Apache Ranger для таблиц и управление разрешениями на доступ к столбцам данных


Нет


Да

Нет

Настройка образов операционных систем


Да


Да

Да

Настройка установленных платформ с открытым исходным кодом

Да

Да

Да

Настройка и загрузка дополнительных библиотек и зависимостей

Да

Да

Да

Запуск рабочих нагрузок из SageMaker Studio в рамках рабочего процесса машинного обучения

Нет


Да

Нет

Подключение к блокнотам Jupyter с самостоятельным хостингом

Нет

Да

Да

Создание и оркестрация конвейеров данных с помощью Apache Airflow и управляемых рабочих процессов Amazon для Apache Airflow (MWAA)


Да


Да

Да

Создание и оркестрация конвейеров данных с помощью AWS Step Functions

Да


Да

Да

Вопрос. Какие версии выпусков EMR поддерживает EMR Serverless?

EMR Serverless поддерживает выпуски EMR 6.6 и новее. С помощью EMR Serverless вы получаете ту же среду выполнения EMR с оптимизированной производительностью, что и при использовании других вариантов развертывания EMR, которая на 100 % совместима со стандартными платформами с открытым исходным кодом на уровне API.

Вопрос. Включена ли плата за предварительно инициализированную мощность в BilledResourceUtilization?

Использование BilledResourceUtilization учитывает только продолжительность использования предварительно инициализированной мощности для выполнения задания и не учитывает время простоя такой мощности.

Вопрос. В чем разница между оплаченным и общим использованием ресурсов?


Если продолжительность работы сотрудника меньше 60 секунд, BilledResourceUtilization будет считать ее как 60 секунд, тогда как TotalResourceUtilization округлит ее до ближайшей секунды. Кроме того, BilledResourceUtilization исключает из расчета 20 ГБ бесплатного хранилища.

Приложения, исполнители и рабочие задания

Вопрос. Что такое приложение и как его создать?

С помощью Amazon EMR Serverless можно создать одно или несколько приложений EMR Serverless, использующих платформы аналитики с открытым исходным кодом. Чтобы создать приложение, необходимо задать такие атрибуты: 1) версия выпуска Amazon EMR для той версии платформы с открытым исходным кодом, которую вы хотите использовать; 2) конкретные системы аналитики, которые вы хотите использовать для своего приложения, например Apache Spark 3.1 или Apache Hive 3.0. После создания приложения вы можете начинать выполнять задания по обработке данных или интерактивные запросы в вашем приложении.

Вопрос. Что такое исполнитель?

Приложение EMR Serverless внутренне использует исполнителей для выполнения ваших рабочих нагрузок. После отправки задания EMR Serverless вычисляет ресурсы, необходимые для его выполнения, и назначает исполнителей. EMR Serverless разбивает рабочие нагрузки на задачи, подготавливает и настраивает исполнителей с помощью платформы с открытым исходным кодом и списывает их после завершения задания. EMR Serverless автоматически увеличивает или уменьшает количество исполнителей в зависимости от рабочей нагрузки и параллелизма, необходимого на каждом этапе выполнения задания, таким образом устраняя необходимость рассчитывать количество исполнителей для запуска ваших рабочих нагрузок. Размер по умолчанию исполнителей зависит от типа вашего приложения и версии выпуска Amazon EMR. Его можно изменить при планировании запуска задания.

Вопрос. Можно ли указывать минимальное и максимальное количество исполнителей, необходимое для выполнения задания?

С помощью EMR Serverless вы можете предоставить минимальное и максимальное количество исполнителей, которые будут пользоваться ресурсами одновременно, а также указать настройки виртуальных ЦПУ и памяти для работников. Вы также можете установить лимит максимального потребления ресурсов приложением для контроля затрат.

Вопрос. Когда нужно создавать несколько приложений?

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

  1. использование различных платформ с открытым исходным кодом;
  2. использование разных версий платформ с открытым исходным кодом для разных примеров использования;
  3. выполнение A/B-тестирования при переходе с одной версии на другую;
  4. поддержка отдельных логических сред для тестовых и рабочих сценариев;
  5. обеспечение отдельных логических сред для разных команд с независимым управлением затратами и отслеживанием использования;
  6. разделение приложений по разным видам деятельности.

Вопрос. Можно ли изменить свойства приложения EMR Serverless по умолчанию после его создания?

Да. Вы можете изменить такие свойства приложения, как первоначальная производительность, лимит максимального потребления ресурсов, параметры подключения и сети, с помощью EMR Studio или вызова API / команды CLI.

Вопрос. В каких случаях следует создавать приложение с предварительно инициализированным набором исполнителей?

Приложению EMR Serverless без предварительно инициализированных исполнителей требуется до 120 секунд для определения и подготовки необходимых ресурсов. EMR Serverless предоставляет дополнительную функцию, которая обеспечивает инициализацию исполнителей и готовность к ответу за считанные секунды, что позволяет эффективно создать пул дежурных работников для приложения. Эта функция называется предварительно инициализированными ресурсами. Ее можно настроить для каждого приложения, установив параметр первоначальной производительности приложения.

Таким образом можно моментально запускать задания, что идеально подходит для реализации срочных задач. Вы можете указать количество исполнителей, которые вы хотите предварительно инициализировать при запуске приложения EMR Serverless. Предварительно инициализированных исполнителей впоследствии можно использовать для мгновенного запуска заданий при их отправке. Если для задания требуется большее количество исполнителей, чем было выбрано для предварительной инициализации, EMR Serverless автоматически добавит их (в пределах указанного вами максимального лимита). После завершения задания EMR Serverless автоматически возвращается к поддержке указанных вами предварительно инициализированных исполнителей. Исполнители, простаивающие в течение 15 минут, автоматически отключаются. Вы можете изменить параметр по умолчанию для времени ожидания в режиме простоя для своего приложения с помощью API UpdateApplication или EMR Studio.

Вопрос. Как отправлять задания и управлять ими в EMR Serverless?

Вы можете отправлять задания EMR Serverless и управлять ими с помощью EMR Studio, SDK/CLI или наших коннекторов Apache Airflow.

Вопрос. Как включить зависимости в задания, которые я хочу запустить в EMR Serverless?

Для PySpark вы можете упаковать свои зависимости Python с помощью virtualenv и передать файл архива с помощью параметра --archives, который позволяет исполнителям использовать зависимости во время запуска задания. Для Scala или Java вы можете упаковать свои зависимости в виде JAR-файлов, загрузить их в Amazon S3 и передать с помощью параметров --jars или --packages при запуске задания в EMR Serverless.

Вопрос. Поддерживают ли приложения EMR Serverless Spark и Hive функции, определяемые пользователем (UDF)?

EMR Serverless поддерживает UDF на базе Java. Вы можете упаковать их в виде JAR-файлов, загрузить в S3 и использовать в своих скриптах Spark или HiveQL.

Вопрос. Какие конфигурации для исполнителей поддерживает EMR Serverless?

Подробные сведения см. в разделе Поддерживаемые конфигурации для работников.

Вопрос. Можно ли отменить задание EMR Serverless, если оно выполняется дольше, чем ожидалось?

Да. Вы можете отменить запущенное задание EMR Serverless в EMR Studio или с помощью вызова API/CLI cancelJobRun.

Вопрос. Можно ли добавить дополнительное хранилище для исполнителей?

EMR Serverless предоставляет 20 ГБ краткосрочного хранилища на каждого исполнителя. Если вам потребуется увеличить объем хранилища, вы можете настроить его, выбрав от 20 до 200 ГБ, во время отправки задания.

Вопрос. Где можно найти примеры кода?

Образцы кода EMR Serverless можно найти в нашем репозитории GitHub.

Вопрос. Какие варианты работы доступны в EMR Serverless?

EMR Serverless предлагает два варианта: работа по требованию и предварительно инициализированные задания.

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

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

Вопрос. Можно ли настроить бессерверные приложения EMR в нескольких зонах доступности?

Да, приложения EMR Serverless можно настроить в нескольких зонах доступности. Процесс настройки нескольких зон доступности зависит от типа используемых вами рабочих ресурсов.

При использовании только рабочих ресурсов по требованию EMR Serverless по умолчанию распределяет задания по нескольким зонам доступности, но каждое задание выполняется только в одной. Вы можете выбрать, какие зоны доступности использовать, связав подсети с зонами. В случае сбоя в зоне доступности EMR Serverless автоматически выполнит задание в исправной зоне доступности.

При использовании рабочих ресурсов с предварительной инициализацией EMR Serverless выбирает исправную зону доступности из указанных вами подсетей. Задания отправляются в этой зоне доступности до тех пор, пока вы не остановите приложение. Если зона доступности станет неработоспособной, вы можете перезапустить приложение, чтобы переключиться на исправную зону.

Вопрос. Можно ли подключиться к хранилищам данных в другом регионе?

EMR Serverless может получить доступ к определенным ресурсам AWS в том же регионе только без подключения к VPC. См. другие аспекты. Чтобы получить доступ к ресурсам AWS в другом регионе или ресурсам других регионов, вам необходимо настроить доступ к VPC и шлюз NAT для маршрутизации ресурсов AWS к общедоступным адресам.

Мониторинг и отладка

Вопрос. Как отслеживать приложения и состояние выполнения заданий Amazon EMR Serverless?

Метрики Amazon EMR Serverless на уровне приложений и заданий публикуются каждые 30 секунд в Amazon CloudWatch.

Вопрос. Как запустить пользовательский интерфейс Spark и Tez с помощью EMR Serverless?

В EMR Studio вы можете выбрать запущенное или завершенное задание EMR Serverless, а затем нажать кнопку пользовательского интерфейса Spark или Tez, чтобы запустить их.

Безопасность и управление данными

Вопрос. Могу ли я получить доступ к ресурсам в виртуальном частном облаке Amazon (VPC)?

Да. Вы можете настроить приложения Amazon EMR Serverless для доступа к ресурсам в вашем собственном VPC. Подробности см. в разделе документации Настройка доступа к VPC

Вопрос. Какой тип изоляции можно получить с EMR Serverless?

Каждое приложение EMR Serverless изолировано от других приложений и работает в безопасном облаке Amazon VPC.

Квоты на основе vCPU на уровне аккаунта

Вопрос. Что меняется в квотах сервисов Бессерверной конфигурации Amazon EMR?
Бессерверная конфигурация Amazon EMR вводит новую квоту на сервисы под названием «Максимальное количество одновременных vCPU на аккаунт». Эта квота на базе vCPU позволяет установить максимальное количество совокупных vCPU, до которого могут масштабироваться ваши приложения в пределах региона. Существующие квоты на уровне приложений, основанные на работниках (максимальное количество активных работников), прекратят свою поддержку 1 февраля 2023 года.

Вопрос. Где я могу просматривать и управлять квотой vCPU моего аккаунта?
Вы можете просматривать квоты, управлять ими и запрашивать их увеличение в консоли квот на обслуживание AWS. Дополнительная информация приведена в разделе Запрос на увеличение квоты в руководстве пользователя касательно квоты на обслуживание.

Вопрос. В чем разница между квотой vCPU на уровне аккаунта и свойством maximumCapacity на уровне приложения?
EMR Serverless предоставляет два способа контроля затрат: 1) Максимальная квота одновременных vCPU на аккаунт применяется ко всем приложениям EMR Serverless в регионе в вашем аккаунте. 2) Параметр maximumCapacity ограничивает vCPU конкретного приложения EMR Serverless. Вы должны использовать квоту на базе vCPU для ограничения максимального количества одновременно используемых vCPU всеми приложениями в регионе и свойство maximumCapacity для ограничения ресурсов, используемых конкретным приложением. Например, если у вас есть 5 приложений и каждое может масштабироваться до 1000 vCPUs, установите свойство maximumCapacity равным 1000 vCPUs для каждого приложения и настройте квоту vCPU на уровне аккаунта на 5 * 1000 = 5000 vCPU.

Вопрос. Как я узнаю, что моя квота аккаунта на базе vCPU исчерпана?
Если вы превысите квоту vCPU на уровне аккаунта, EMR Serverless перестанет предоставлять новые мощности. Если вы попытаетесь создать новое приложение после превышения квоты, это завершится неудачей с таким сообщением об ошибке: «Application failed to create as you have exceeded the maximum concurrent vCPUs per account service quota. You can view and manage your service quota using AWS Service Quotas console» (Не удалось создать приложение, так как превышена максимальная квота одновременного использования vCPU на сервис аккаунта. Вы можете просматривать и управлять квотами сервиса с помощью консоли квот на обслуживание AWS). Если вы отправите новое задание после превышения квоты, оно будет отменено с таким сообщением об ошибке: «Job failed as you have exceeded the maximum concurrent vCPUs per account service quota. You can view and manage your service quota using AWS Service Quotas console» (Задание не выполнено, так как вы превысили максимальную квоту одновременного использования vCPUs для сервиса аккаунта. Вы можете просматривать и управлять квотами сервиса с помощью консоли квот на обслуживание AWS). Подробнее см. в документации.

Цены

Вопрос. Как Amazon EMR Serverless может помочь сократить расходы на развертывание больших данных?

С помощью Amazon EMR Serverless можно сократить расходы тремя способами. Во-первых, отсутствуют операционные расходы на обеспечение безопасности и масштабирование кластеров, а также управление ими. Во-вторых, EMR Serverless автоматически увеличивает количество работников на каждом этапе обработки вашего задания и уменьшает их количество, когда они уже не требуются. Плата взимается за совокупные ресурсы, такие как виртуальные ЦПУ, память и хранилище, использованные за период времени с момента начала работы исполнителя до ее завершения и с округлением до ближайшей секунды с минимальным учитываемым временем – 1 минута. Например, для обработки вашего задания может потребоваться 10 исполнителей на первые 10 минут и 50 исполнителей – на следующие 5 минут. При точном автоматическом масштабировании взимается плата только за 10 исполнителей в течение 10 минут и 50 исполнителей в течение 5 минут. В результате вам не придется платить за ресурсы, которые используются недостаточно эффективно. В-третьих, EMR Serverless предоставляет среду выполнения Amazon EMR с оптимизированной производительностью для Apache Spark, Apache Hive и Presto. Среда выполнения Amazon EMR совместима с API и более чем в два раза быстрее, чем стандартные системы аналитики с открытым исходным кодом, поэтому ваши задания выполняются быстрее и позволяют снизить затраты на вычислительные операции.

Вопрос. Сопоставима ли стоимость EMR Serverless со стоимостью спотовых инстансов Amazon EMR для EC2?

Это зависит от текущего коэффициента использования кластера EMR для EC2. Если вы запускаете кластеры EMR с помощью инстансов EC2 по требованию и текущий коэффициент использования вашего кластера составляет менее 70 %, EMR Serverless предоставит вам более низкую совокупную стоимость владения (TCO). Если вы используете экономичные планы EC2 и текущий коэффициент использования вашего кластера составляет менее 50 %, EMR Serverless предоставит вам более низкую совокупную стоимость владения (TCO). А если вы используете спотовые инстансы EC2, Amazon EMR для EC2 и Amazon EMR для EKS, они по-прежнему будут более экономичными.

Вопрос. Взимается ли плата за предварительно инициализированных исполнителей даже после завершения заданий?

Да. Если вы не остановите исполнителей после завершения задания, с вас будет взиматься плата.

Вопрос. Куда мне обращаться с вопросами, комментариями и пожеланиями?

Срочные запросы и ценную обратную связь по EMR Serverless можно отправлять по адресу emr-feedback@amazon.com.

Amazon EMR для Amazon EKS

Вопрос. Что такое Amazon EMR для Amazon EKS?
Amazon EMR для Amazon EKS – это модель развертывания Amazon EMR, которая позволяет клиентам легко и экономично обрабатывать огромные объемы данных. Это модель на основе размещенных аналитических платформ, работающих в гибком управляемом сервисе Amazon EKS в контейнерах, с масштабной вычислительной инфраструктурой Amazon Elastic Compute Cloud (Amazon EC2), AWS Fargate и Amazon Simple Storage Service (Amazon S3).

Вопрос. Для чего нужно Amazon EMR для Amazon EKS?
Amazon EMR для Amazon EKS изолирует аналитическое задание от сервисов и инфраструктуры, которые обрабатывают это задание на основе контейнеров. Вы можете сосредоточиться на разработке своего приложения, уделяя меньше внимания управлению инфраструктурой, поскольку EMR для EKS выполняет динамическую настройку инфраструктуры на основе вычислений, памяти и зависимостей приложения от задания. Команды по работе с инфраструктурой могут централизованно управлять общей вычислительной платформой для консолидации рабочих нагрузок EMR с другими приложениями на основе контейнеров. Несколько команд, организаций или бизнес-подразделений могут одновременно запускать собственные аналитические процессы в общей инфраструктуре независимо друг от друга и без ущерба для изоляции, обеспечиваемой Amazon EKS и AWS Identity and Access Management (IAM).

Вопрос. Какие преимущества доступны пользователям Apache Spark для Amazon EKS?
Если вы уже используете Apache Spark для Amazon EKS, вам доступны все преимущества Amazon EMR, например автоматическое выделение ресурсов и масштабирование, а также возможность использовать последние полностью управляемые версии платформ для анализа больших данных с открытым исходным кодом. К вашим услугам оптимизированная среда выполнения EMR для Apache Spar, производительность которой в три раза превосходит Apache Spark для EKS с открытым исходным кодом, а также бессерверная аналитика данных посредством EMR Studio и пользовательского интерфейса Apache Spark UI, детализированный контроль доступа к данным и поддержка шифрования данных.

Вопрос. Как этот сервис связан и взаимодействует с другими сервисами AWS?
Amazon EKS представляет клиентам управляемую среду для запуска Kubernetes в AWS и позволяет добавлять вычислительные ресурсы с помощью управляемой группы узлов EKS или AWS Fargate. В ходе выполнения заданий EMR для EKS можно получить доступ к собственным данным в Amazon S3, а мониторинг и ведение журнала можно интегрировать с Amazon CloudWatch. AWS Identity and Access Management (IAM) позволяет управлять доступом на основе ролей как для заданий, так и для зависимых сервисов AWS.

Вопрос. Как работает сервис Amazon EMR для Amazon EKS?
Зарегистрируйте свой кластер EKS в Amazon EMR. Затем отправьте задания Spark в EMR посредством интерфейса командной строки, SDK или EMR Studio. EMR отправляет запрос планировщику Kubernetes на планирование подов посредством EKS. EMR для EKS создает контейнер под каждое выполняемое задание. Контейнер содержит базовый образ Amazon Linux 2 с обновлениями безопасности, а также Apache Spark и связанные зависимости для запуска Spark и зависимости вашего приложения. Каждое задание запускает под. Под обеспечивает скачивание контейнера и запускает его в работу. В случае предварительного развертывания образа контейнера в узле используется кэшированный образ, а скачивание не выполняется. В модуле могут быть развернуты внешние контейнеры, такие как серверы пересылки журналов или метрик. Работа пода завершается по окончании задания. По окончании задания вы можете выполнить отладку посредством пользовательского интерфейса Spark.

Вопрос. Какие вычислительные сервисы AWS можно использовать в сочетании с Amazon EMR для EKS?
Вы можете использовать Amazon EMR для EKS как с инстансами Amazon Elastic Compute Cloud (EC2) для поддержки более широких возможностей настройки, так и с бессерверным сервисом AWS Fargate для обработки аналитики, не выделяя инстансы EC2 и не управляя ими. Доступность приложений может автоматически улучшаться за счет распределения аналитических заданий по нескольким зонам доступности AWS.

Вопрос. Как начать работу с EMR для EKS?
Чтобы начать работу, зарегистрируйте кластер EKS посредством Amazon EMR. После регистрации создайте ссылку на регистрацию в определении задания (которое включает зависимости приложений и параметры платформы), отправив свои рабочие нагрузки в EMR для выполнения. EMR для EKS позволяет использовать различные платформы, версии и конфигурации аналитики больших данных с открытым исходным кодом для аналитических приложений в одном кластере EKS. Подробнее см. в нашей документации.

Вопрос. Как отправить аналитические приложения в EMR для EKS?
Вы отправляете аналитические приложения с помощью AWS SDK или интерфейса командной строки, записных книжек Amazon EMR Studio и сервисов оркестрации рабочих процессов, таких как Apache Airflow и Amazon Managed Workflows для Apache Airflow. AWS EMR на подключаемом модуле воздушного потока EKS можно загрузить скачать с S3. Чтобы установить подключаемый модуль контейнеров EMR для Amazon Managed Workflows для Apache Airflow, см. документацию.

Вопрос. Можно ли использовать одну и ту же версию EMR для кластеров EMR и приложений в EKS?

Да. Для приложений, работающих в кластерах EMR, и приложений, работающих в EKS, можно использовать одну и ту же версию EMR.

Вопрос. Как устранить проблемы в работе аналитических приложений?
Для диагностики и устранения проблем в работе приложений Spark можно использовать пользовательский интерфейс Amazon EMR Spark. Для всех аналитических приложений EMR предоставляет доступ к сведениям о приложениях, связанным журналам и метрикам в течение 30 дней после завершения их использования. Задания можно индивидуально настроить для отправки журналов в местоположение Amazon S3 или Amazon CloudWatch.

Вопрос. Можно ли просматривать приложения EMR в EKS?
Да. Приложения EMR отображаются в консоли EKS как развертывания и задания Kubernetes.

Вопрос. Можно ли изолировать несколько заданий или приложений друг от друга в одном кластере EKS?
Да. Kubernetes предусматривает встроенную функцию изоляции заданий. Кроме того, каждое задание можно настроить для запуска с учетом собственной роли выполнения, чтобы ограничить для задания доступ к ресурсам AWS.

Вопрос. Как EMR для EKS способствует сокращению затрат?
EMR для EKS позволяет снизить затраты, устраняя необходимость запускать выделенные кластеры. Вы можете использовать общий кластер EKS для запуска аналитических приложений, которым требуются разные версии платформ аналитики больших данных с открытым исходным кодом. Вы также можете использовать тот же кластер EKS для запуска других приложений на основе контейнеров, не связанных с EMR.

Вопрос. Как начисляется плата за EMR для EKS?
Цены на Amazon EMR для EKS рассчитываются на основе ресурсов виртуального ЦПУ и памяти, запрошенных для подов, на которых выполняется ваше задание, с поминутной детализацией. Подробней о ценах см. на странице цен Amazon EMR.

Вопрос. Чем EMR для EKS отличается от EMR для EC2?

Возможность

EMR для EKS

EMR для EC2

Последняя поддерживаемая версия EMR

Да

Да

Поддержка нескольких зон доступности для заданий

Да

Нет

Поддержка нескольких пользователей при обработке небольшого объема данных

Да

Нет

Область действия версии EMR

задание

кластер

Автомасштабирование кластера

Да

Да

Управляемое масштабирование

Нет

Да

Поставщики вычислительных услуг

EC2, Fargate

EC2

Шифрование данных

Да

Да

Аутентификация Kerberos

Нет

Да

Размещенные приложения

Только Spark

Несколько

AWS Lake Formation

Нет

Да

Интеграция Apache Ranger

Нет

Да

Настраиваемые AMI и образы

Да

Да

Интеграция с Sagemaker и Zeppelin

Да, с Livy

Да

Самостоятельный хостинг записных книжек

Нет

Да

Интеграция с EMR Studio

Да

Да

Zeppelin, JEG

Нет

Да

Оркестрация с Apache Airflow

Да

Да

Оркестрация с AWS StepFunctions

Да

Да

Вопрос. Что такое шаблоны пода?

EMR для EKS позволяет использовать шаблоны пода Kubernetes, чтобы настроить место и способ выполнения задания в кластере Kubernetes. Шаблоны пода Kubernetes предоставляют многоразовую схему или шаблонный код, которые декларативно указывают на то, каким образом должен быть задействован под Kubernetes для вашего кластера EKS.

Вопрос. Почему стоит использовать шаблоны пода для заданий в EMR для EKS?

Шаблоны пода обеспечивают больший контроль над планированием заданий в Kubernetes. Например, вы можете сократить затраты, запустив задачи драйвера Spark на спотовых инстансах Amazon EC2 или разрешив выполнение требующих SSD заданий только на инстансах с поддержкой SSD. Шаблоны пода на EMR для EKS позволяют тщательно контролировать распределение ресурсов и запуск пользовательских контейнеров одновременно с вашим заданием. Следовательно, сокращать затраты и увеличивать продуктивность ваших заданий.

Вопрос. Что такое под?

Поды – один или более контейнеров с общими сетевыми ресурсами и ресурсами хранения, которые функционируют на рабочем узле Kubernetes. EMR для EKS использует поды при выполнении ваших заданий, распределяя задачи для драйвера и исполнителей Spark в качестве индивидуальных подов.

Вопрос. Какие существуют варианты использования шаблонов пода?

Используя шаблоны пода, можно оптимизировать и производительность, и затраты. Например, вы можете сэкономить затраты, обозначив задания, запускаемые на спотовых инстансах EC2, или повысить производительность, запланировав задания на инстансах EC2 с поддержкой GPU или SSD. Пользователям часто требуется тщательный контроль рабочей нагрузки, чтобы поддерживать работу нескольких команд или организаций в EKS, а шаблоны пода упрощают выполнение заданий в группах узлов, предназначенных для команды. Кроме того, вы можете развернуть внешние контейнеры, чтобы запустить код инициализации для вашего задания, или включить стандартные инструменты мониторинга, такие как FluentD, для маршрутизации лога.

Вопрос. Могу ли я выбрать разные шаблоны пода для моих драйверов и исполнителей Spark?

Можете, но это не обязательно для обеспечения индивидуальных шаблонов для драйверов и исполнителей. Например, вы можете настроить селекторы узлов и допуски, чтобы драйверы Spark запускались только в инстансах по требованию AWS EC2, а исполнители Spark – только в инстансах AWS Fargate. При отправке задания настройте свойства spark spark.kubernetes.driver.podTemplateFile и spark.kubernetes.executor.podTemplateFile для ссылки на местоположение шаблона S3.

Вопрос. Какие значения шаблона я могу выбрать?

Вы можете выбрать как поля на уровне пода (включая тома, привязку пода, контейнеры инициализации, селектор узла), так и поля на уровне основного контейнера Spark (включая EnvFrom, рабочий каталог, жизненный цикл, запись тома контейнера). Полный список допустимых значений указан в нашей документации.

Вопрос. Где найти дополнительную информацию о шаблонах пода?

Amazon EKS уже поддерживает шаблоны пода, а более подробная информация о поддержке шаблонов пода на Amazon EMR для EKS есть в нашей документации и в документации шаблона пода Apache Spark.

Вопрос. Почему нужно использовать собственные образы в EMR для EKS?

Без использования собственных образов для управления зависимостями приложений в EMR для EKS потребуется во время исполнения указывать ссылки на них во внешней службе хранилища, например в Amazon S3. Теперь же благодаря поддержке собственных образов вы можете создать полностью автономный образ Docker с приложением и всеми библиотеками, от которых оно зависит. Вам больше не придется поддерживать, обновлять или отслеживать версии для библиотек во внешнем хранилище, а разработку приложений для работы с большими данными можно вести по тем же процессам DevOps, которые уже сейчас используют другие контейнеризованные приложения. Вам нужно лишь указать и запустить нужный образ.

Вопрос. Что такое пользовательский образ?

Пользовательским называется образ Docker («базовый образ»), предоставленный в EMR для EKS, который содержит среду выполнения EMR и соединители для подключения к другим сервисам AWS, который вы можете изменить, добавив зависимости приложения или дополнительные пакеты. Полученный таким способом образ можно сохранить в Amazon Elastic Container Registry (ECR) или в вашем собственном реестре контейнеров Docker.

Вопрос. Какие существуют варианты использования для пользовательских образов?

Клиенты могут создать базовый образ с собственными корпоративными библиотеками и сохранить его а Amazon Elastic Container Registry (Amazon ECR). Наши клиенты могут настроить для себя образы, включив зависимости конкретных приложений. Полученный неизменяемый образ можно проверить на отсутствие уязвимостей, а затем развернуть в тестовых и рабочих средах. Например, вы можете добавить библиотеки Java SDK, Python или R напрямую в образ, как для любого контейнерного приложения.

Вопрос. Что входит в базовый образ?

В базовый образ включаются те же среда выполнения и компоненты Spark Runtime, которые вы получаете при отправке задания без пользовательского образа.

Вопрос. В каких случаях следует указать другой пользовательский образ для драйверов и исполнителей Spark?

Вы можете указать отдельные образы для драйверов и исполнителей Spark, если есть необходимость включить особые зависимости или библиотеки. Удалив из обоих образов ненужные библиотеки, вы сможете уменьшить их размер и ускорить время запуска задач. Вы можете указать один образ для драйверов и исполнителей (spark.kubernetes.container.image) или отдельные образы для драйверов (spark.kubernetes.driver.container.image) и исполнителей (spark.kubernetes.executor.container.image).

Вопрос. Где найти дополнительную информацию о пользовательских шаблонах?

Дополнительные сведения о поддержке пользовательских образов в Amazon EMR для EKS Amazon EMR вы можете изучить в нашей документации или в документации Apache Spark.

Вопрос. Взимается ли дополнительная оплата за пользовательские образы?

Функцию пользовательских образов можно использовать бесплатно.

Amazon EMR для AWS Outposts

Вопрос. Что такое AWS Outposts?

AWS Outposts позволяет использовать оригинальные сервисы, инфраструктуру и операционные модели AWS практически в любых центрах обработки данных, колокационных центрах или на локальных объектах. С помощью EMR для Outposts можно развертывать и масштабировать локальные кластеры EMR и управлять ими точно так же, как в облаке.

Вопрос. Когда нужно использовать EMR для Outposts?

Если вы используете локальные развертывания Apache Hadoop и с трудом удовлетворяете спрос на ресурсы в пиковые периоды, то можете с помощью EMR для Outposts увеличить возможности обработки, не перемещая данные в облако. С помощью EMR для Outposts можно запускать новый кластер EMR локально за считаные минуты и подключать существующие наборы данных в локальном хранилище HDFS для удовлетворения такого спроса и выполнения соглашений об уровне обслуживания (SLA).

Если вам нужно обрабатывать данные, которые должны оставаться в локальной среде для управления, обеспечения соответствия требованиям или по другим причинам, вы можете с помощью EMR для Outposts развернуть и запустить такие приложения, как Apache Hadoop и Apache Spark, в той же локальной среде, в которой находятся данные. Это снижает потребность в перемещении больших объемов локальных данных в облако, благодаря чему сокращается общее время обработки таких данных.

Если вы начали перенос данных и рабочих нагрузок Apache Hadoop в облако и желаете приступить к работе с EMR до завершения миграции, используйте AWS Outposts для запуска кластеров EMR, которые подключаются к имеющемуся у вас локальному хранилищу HDFS. Затем вы можете постепенно переместить свои данные в Amazon S3 в рамках перехода на облачную архитектуру.

Вопрос. Какие версии EMR поддерживает EMR для Outposts?

Минимальный поддерживаемый выпуск Amazon EMR: 5.28.0.

Вопрос. Какие приложения EMR доступны при использовании Outposts?

Поддерживаются все приложения выпуска EMR 5.28.0 и более новых версий. Полный список приложений EMR приведен в примечаниях к выпуску.

Вопрос. Какие возможности EMR не поддерживаются EMR для Outposts?

  • Спотовые инстансы EC2 недоступны в AWS Outposts. При создании кластера нужно выбирать инстансы по требованию EC2.
  • В AWS Outposts доступна подгруппа типов инстансов EC2. Список типов инстансов, поддерживаемых EMR и Outposts, приведен в документации.
  • При добавлении томов Amazon EBS к инстансам в AWS Outposts поддерживается только тип хранилища General Purpose SSD (GP2).

Вопрос. Можно ли использовать кластеры EMR в Outpost для считывания данных из существующих локальных кластеров Apache Hadoop?

Рабочие нагрузки, выполняемые в EMR для Outpost, могут считывать и записывать данные в существующем хранилище HDFS, что дает возможность легко выполнить интеграцию с существующими локальными развертываниями Apache Hadoop. Благодаря этому можно увеличить возможности обработки данных с помощью EMR без переноса данных.

Вопрос. Можно ли выбрать место хранения данных?

Когда кластер EMR запускается в Outpost, все ресурсы для вычислений и хранения данных развертываются в Outpost. Данные, записанные локально в кластер EMR, хранятся в локальных томах EBS в Outpost. Такие инструменты, как Apache Hive, Apache Spark, Presto, а также другие приложения EMR, можно настроить на локальную запись данных в Outpost, во внешнюю файловую систему (например, уже установленную HDFS) или в Amazon S3. С помощью EMR для Outposts можно добиться полного контроля над хранением данных в Amazon S3 или в локальной среде Outpost.

Вопрос. Требуют ли какие-либо возможности EMR передачи данных в S3?

При запуске кластера EMR в Outpost можно включить ведение журналов. Когда ведение журналов включено, журналы кластера передаются в указанную корзину S3. Эти журналы используются для упрощения отладки кластеров после отключения. Если ведение журналов отключено, журналы не будут передаваться в S3.

Вопрос. Что произойдет, если в Outpost закончатся ресурсы?

При запуске кластера в Outpost EMR попытается запустить запрошенное вами количество инстансов EC2 указанного типа, работающих по требованию. Если в Outpost не будет ресурсов, EMR получит уведомление о недостаточном количестве ресурсов. EMR будет повторять попытку в течение определенного времени. Если доступные ресурсы не появятся, кластер не запустится. Такой же процесс применяется и при изменении размера кластера. Если в Outpost окажется недостаточно ресурсов для запрошенных типов инстансов, EMR не сможет масштабировать кластер. Можно легко настроить оповещения Amazon CloudWatch для отслеживания использования ресурсов в Outposts и получения оповещений в тех случаях, когда доступность ресурсов инстанса будет ниже необходимого минимума.

Вопрос. Что произойдет в случае проблем с сетевым соединением между Outpost и AWS?

Если возникнет проблема с сетевым соединением между Outpost и регионом AWS, кластеры в Outpost продолжат работать, но вы не сможете выполнять некоторые действия, пока она не будет решена. До восстановления соединения вы не сможете создавать новые кластеры или выполнять новые действия с существующими кластерами. В случае сбоя инстанса он не будет автоматически заменен. Кроме того, такие действия, как добавление шагов для работающего кластера, проверка состояния выполнения шага и отправка событий и метрик CloudWatch, будут отложены до восстановления соединения.

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

Использование томов EBS

Вопрос: Какие ранее недоступные возможности появились теперь?

Большинство инстансов EC2 имеют фиксированные ресурсы хранения, подключенные к инстансу и известные как «хранилище инстанса». Теперь вы сможете добавлять тома EBS к инстансам в кластере Amazon EMR, что позволит индивидуально настраивать хранилище в инстансе. Данная возможность также позволит запускать кластеры Amazon EMR в семействах инстансов, совместимых только с EBS, таких как M4 и C4.

Вопрос: В чем заключаются преимущества добавления томов EBS к инстансу, запущенному в Amazon EMR?

Преимущества добавления томов EBS к инстансу будут заметны в следующих случаях.

  1. Ваши требования к обработке настолько велики, что требуется хранилище HDFS (или локальное) большего объема, чем доступно в настоящий момент в инстансе. С помощью томов EBS вы сможете индивидуально настраивать ресурсы хранения на инстансе относительно предоставляемых им вычислительных ресурсов. Оптимизация хранилища в инстансе позволит вам сократить расходы.
  2. Вы используете семейство инстансов предыдущего поколения (например, семейство M1 и M2) и хотите перейти на семейство инстансов последнего поколения, но мешает ограничение для типов нового поколения на хранилище, доступное для каждого узла. Теперь вы сможете использовать любой тип инстанса нового поколения и добавлять тома EBS для оптимизации хранилища. Внутренние оценки показывают, что вы можете снизить затраты и повысить производительность, выполнив перемещение с семейства инстансов предыдущего поколения (M1 или M2) на семейство нового поколения (M4, C4 и R3). Команда Amazon EMR рекомендует запустить приложение, чтобы сделать правильный вывод.
  3. Вы хотите использовать семейство нового поколения M4 и C4, совместимое только с EBS, или выполнить миграцию на такой инстанс.

Вопрос: Можно ли сохранить данные в томе EBS после завершения работы кластера?

В настоящее время сервис Amazon EMR удаляет тома после завершения работы кластера. Если требуется сохранить данные после окончания жизненного цикла кластера, рассмотрите в качестве хранилища данных сервис Amazon S3.

Вопрос: Какие тома EBS можно подключать к инстансу?

Сервис Amazon EMR позволяет использовать различные типы томов EBS: универсальные тома SSD (GP2), магнитные тома и тома с выделенными IOPS (SSD).

Вопрос: Что происходит с томом EBS при завершении работы кластера?

Сервис Amazon EMR удаляет тома после завершения работы кластера EMR.

Вопрос. Можно ли использовать EBS с инстансами, в которых уже есть хранилище инстанса?

Да. Вы можете добавить тома EBS к инстансам, в которых уже есть хранилище инстансов.

Вопрос. Можно ли подключить том EBS к уже запущенному кластеру?

Нет. В настоящее время тома EBS можно добавлять только при запуске кластера.

Вопрос: Можно ли делать снимки состояния томов из кластера?

API EBS позволяет выполнить снимок состояния кластера. Однако сервис Amazon EMR в настоящее время не позволяет восстановить состояние из снимка.

Вопрос. Можно ли использовать зашифрованные тома EBS?

Вы можете зашифровать корневое устройство EBS и тома хранилища, используя AWS KMS в качестве поставщика ключей. См. подробные сведения в разделе о шифровании локального диска.

Вопрос. Что происходит при удалении прикрепленного тома из запущенного кластера?

Удаление прикрепленного тома из запущенного кластера будет считаться сбоем узла. Сервис Amazon EMR заменит узел и том EBS на аналогичные.

Рабочие нагрузки EMR

Вопрос. Что такое Apache Spark?

Apache SparkTM – это система распределенной обработки данных с открытым исходным кодом, которая применяется для обработки больших данных. Быстрое выполнение аналитических запросов к данным любого объема обеспечивается благодаря кэшированию в памяти и оптимизированному исполнению запросов. Amazon EMR – лучший вариант развертывания Apache Spark в облаке. Сервис сочетает возможности интеграции и строгость тестирования, характерные для коммерческих дистрибутивов Spark, с масштабируемостью, простотой и экономичностью облака. Amazon EMR позволяет запускать кластеры Spark за считанные минуты без необходимости выделять узлы, настраивать и оптимизировать кластер или изменять конфигурацию Spark. EMR предусматривает среду выполнения Amazon EMR для Apache Spark, среду выполнения с оптимизированной производительностью для Apache Spark, активную в кластерах Amazon EMR по умолчанию. Скорость в среде выполнения Amazon EMR для Apache Spark может быть более чем в три раза выше, чем скорость в кластерах без среды выполнения EMR. Кроме того, Amazon EMR имеет 100%-ю совместимость API со стандартным Apache Spark. Подробнее о Spark и о Spark на Amazon EMR.

Вопрос. Что такое Presto?

Presto – это распределенный механизм обработки запросов SQL с открытым исходным кодом, разработанный для быстрого выполнения аналитических запросов к данным любого объема. С помощью Amazon EMR кластеры Presto можно запускать за считаные минуты. При этом не нужно выделять узлы, настраивать и оптимизировать кластер или изменять конфигурацию Presto. EMR позволяет выделять от одного до сотен и даже тысяч вычислительных инстансов за считанные минуты. Presto предусматривает два проекта сообщества: PrestoDB и PrestoSQL. Amazon EMR поддерживает оба проекта. Подробнее о Presto и Presto на Amazon EMR.

Использование Hive

Вопрос. Что такое Apache Hive?

Hive – это инфраструктура аналитики и хранения данных с открытым исходным кодом, представляющая собой надстройку Hadoop. Hive использует язык Hive QL на основе SQL, обеспечивающий структурирование, систематизацию и выдачу запросов к данным, которые хранятся в Amazon S3. Hive QL расширяет возможности стандартного языка SQL. Он обеспечивает превосходную поддержку функций map/reduce и сложных расширяемых типов данных, определяемых пользователем, например JSON и Thrift. Это позволяет обрабатывать источники сложных неструктурированных данных, такие как текстовые документы и файлы журналов. Hive поддерживает пользовательские расширения посредством определяемых пользователем функций на Java, развертываемых с использованием хранилища Amazon S3. Подробнее об Apache Hive см. здесь.

Вопрос. Каковы преимущества использования Hive с Amazon EMR?

Используя Hive с сервисом Amazon EMR, можно создавать сложные приложения для обработки данных с помощью языка запросов, в основе которого лежит привычный SQL, и простых в использовании инструментов Amazon EMR. С помощью Amazon EMR, можно использовать приложения Hive как надежные хранилища данных для выполнения таких задач, как анализ данных, мониторинг и бизнес‑аналитика.

Вопрос: Чем Hive отличается от обычных реляционных СУБД?

Традиционные системы РСУБД обеспечивают семантику транзакций и набор свойств ACID, индексирование и кэширование таблиц для чрезвычайно быстрого извлечения небольших объемов данных, быстрое обновление небольших объемов данных и целостность ссылочных данных. Как правило, их работа обеспечивается одной мощной машиной, поэтому не поддерживается ни выполнение функций map и reduce для данных таблицы, ни операции со сложными пользовательскими типами данных.

Напротив, Hive выполняет SQL‑подобные запросы с помощью алгоритмов MapReduce. Соответственно, эта система оптимизирована для выполнения полнотабличного сканирования кластером машин, и поэтому подходит для обработки очень больших объемов данных. Hive позволяет разбить таблицу на разделы, благодаря чему можно сканировать не всю таблицу, а только ее раздел, если это допустимо с точки зрения выполняемого запроса.

Обычные системы РСУБД лучше использовать в случаях, требующих поддержки семантики транзакций и ссылочной целостности, с частым выполнением небольших обновлений, тогда как Hive лучше подходит для создания офлайн‑отчетов, преобразования и анализа больших наборов данных, например для анализа посещаемости большого веб‑сайта или группы веб‑сайтов.

Достаточно распространена практика экспорта данных из систем РСУБД в хранилище Amazon S3, где можно автономно выполнить анализ данных в кластерах Amazon EMR с системой Hive.

Вопрос: Как начать работу с Hive в кластерах Amazon EMR?

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

Вопрос: Есть ли в Hive новые возможности специально для работы с Amazon EMR?

Да. Подробности см. в документации.

  • Кластер EMR можно запустить с несколькими главными узлами для поддержки высокой доступности Apache Hive. Amazon EMR автоматически переключается на работу с резервным основным узлом, если происходит сбой основного главного узла либо таких критических процессов, как Resource Manager или NameNode. Таким образом, вы можете запускать Apache Hive в кластерах EMR без прерывания.
  • Amazon EMR позволяет задавать управляемое масштабирование EMR для кластеров Apache Hive с целью оптимизированного использования ресурсов. Управляемое масштабирование EMR позволяет автоматически изменять размер кластера для достижения максимальной производительности при минимально возможных затратах. Управляемое масштабирование EMR позволяет задавать минимальные и максимальные пределы вычислений для кластеров, а Amazon EMR автоматически изменяет их размер для обеспечения максимальной производительности и эффективного использования ресурсов. Управляемое масштабирование EMR непрерывно выбирает ключевые метрики, связанные с рабочими нагрузками в кластерах.
  • Amazon EMR 6.0.0 обеспечивает дополнительную поддержку Hive LLAP, что позволяет вдвое повысить производительность по сравнению с EMR 5.29. Дополнительную информацию см. здесь.
  • Теперь вы можете использовать S3 Select с Hive для Amazon EMR с целью повышения производительности. S3 Select позволяет приложениям извлекать из объекта только часть данных, что снижает объем данных, передаваемых между Amazon EMR и Amazon S3.
  • Amazon EMR также обеспечивает высокую производительность сложных запросов Apache Hive. EMR по умолчанию использует Apache Tez, что значительно быстрее, чем Apache MapReduce. За счет использования Apache MapReduce нескольких этапов сложный запрос Apache Hive можно разбить на четыре или пять заданий. Apache Tez разработан для более сложных запросов, поэтому одно и то же задание в Apache Tez будет выполняться как одно задание, что обеспечивает значительно более высокую скорость по сравнению с Apache MapReduce.
  • Amazon EMR позволяет и дальше использовать метахранилище как локальное или сделать его внешним. EMR обеспечивает интеграцию с каталогом данных AWS Glue, Amazon Aurora, Amazon RDS и AWS Lake Formation. Amazon EMR обеспечивает извлечение информации непосредственно из Glue или Lake Formation для заполнения хранилища метаданных.
  • Вы можете загружать разделы таблицы из хранилища Amazon S3 автоматически. Ранее для импортирования таблицы, разбитой на разделы, требовалась отдельная инструкция alter table для каждого раздела таблицы. Теперь Amazon EMR содержит новый тип оператора языка Hive, alter table recover partitions, который позволяет с легкостью импортировать таблицы во множество кластеров одновременно без применения общего хранилища метаданных. Эту функциональную возможность используют для чтения таблиц, содержащих данные, записываемые внешними процессами, например для чтения файлов журналов.
  • Вы можете записывать данные непосредственно в Amazon S3. При записи данных в таблицы, размещенные в Amazon S3, установленная в Amazon EMR версия Hive выполняет запись непосредственно в Amazon S3 без использования временных файлов. Это дает значительный выигрыш в производительности, однако следует учесть, что с точки зрения Hive файловая система HDFS и хранилище S3 функционируют по‑разному. Если таблица расположена в Amazon S3, невозможно с помощью одного и того же оператора одновременно выполнять чтение и запись в одну и ту же таблицу. Чтобы обновить таблицу в хранилище S3, создайте временную таблицу в локальной файловой системе HDFS кластера, запишите в нее результаты и затем скопируйте их в Amazon S3.
  • Вы можете получить доступ к ресурсам в Amazon S3. Версия Hive, установленная в Amazon EMR, позволяет ссылаться на ресурсы, такие как скрипты для пользовательских операций map и reduce или дополнительные библиотеки, расположенные в Amazon S3, непосредственно из скрипта Hive (например, при добавлении файла JAR: s3://elasticmapreduce/samples/hive‑ads/libs/jsonserde.jar).

Вопрос: Какие типы кластеров Hive можно использовать?

Поддерживаются два типа кластеров Hive: интерактивные и пакетные. В интерактивном режиме пользователь может запустить кластер, а затем запустить скрипты Hive непосредственно на главном узле. Обычно такой режим используется для спонтанного анализа данных и разработки приложений. В пакетном режиме скрипт Hive хранится в Amazon S3 со ссылкой на начало кластера. Обычно пакетный режим используют для повторяющихся задач, например генерации отчетов.

Вопрос: Как запустить кластер Hive?

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

Вопрос: Когда стоит использовать Hive, а когда PIG?

И Hive, и PIG предоставляют языки обработки данных высокого уровня с поддержкой сложных типов данных для работы с большими наборами данных. Язык Hive представляет собой вариант языка SQL, поэтому его будет проще освоить тем пользователям, которые уже знакомы с SQL и реляционными базами данных. В Hive имеется поддержка разделов таблиц, поэтому кластеры Amazon EMR могут работать только с тем разделом таблицы, который относится к выполняемому запросу, без сканирования всей таблицы. Как PIG, так и Hive поддерживают оптимизацию запросов, при этом PIG обеспечивает оптимизацию на уровне скриптов, а Hive оптимизирует запросы на уровне операторов.

В конечном итоге, делая выбор между Hive и PIG, следует исходить из конкретных требований к области применения приложения, а также из предпочтений разработчиков и составителей запросов.

Вопрос. Какую версию Hive поддерживает Amazon EMR?

Новая версия Hive для Amazon EMR указана в документации.

Вопрос. Может ли запись в таблицу выполняться двумя кластерами одновременно?

Нет. Hive не поддерживает одновременной записи в таблицу, поэтому не следует одновременно выполнять запись в одну и ту же таблицу из разных источников или считывать данные из таблицы во время записи в нее. При одновременном выполнении чтения и записи или записи из разных источников невозможно предсказать результат действий Hive.

Вопрос: Могут ли кластеры совместно работать с данными?

Да. Данные в хранилище Amazon S3 можно считывать с помощью скрипта Hive, включив в него операторы «create external table». Такой оператор потребуется для каждого внешнего ресурса, к которому осуществляется доступ.

Вопрос: Следует ли создать один большой кластер и разделить его между пользователями или запустить множество небольших кластеров?

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

Вопрос: Можно ли получить доступ к скрипту или ресурсу JAR, расположенному в локальной файловой системе?

Нет. Сначала следует загрузить скрипт или ресурс JAR в корзину Amazon S3 или на главный узел кластера, прежде чем к ним можно будет обратиться. Для загрузки данных в корзину Amazon S3 можно использовать различные инструменты, включая s3cmd, jets3t или S3Organizer.

Вопрос: Можно ли запустить постоянный кластер, выполняющий множество запросов Hive?

Да. Если вы запускаете кластер в режиме ручного выключения, его работа не будет остановлена между выполнением шагов Hive. Чтобы снизить риск потери данных, рекомендуется периодически сохранять все важные данные в хранилище Amazon S3. Рекомендуется также регулярно передавать задачи новому кластеру, чтобы проверить процесс на возможность восстановления после отказа главного узла.

Вопрос: Могут ли шаги Hive выполняться множеством пользователей при совместном использовании одного и того же источника данных?

Да. Скрипты Hive, выполняемые множеством пользователей в отдельных кластерах, могут содержать операторы «create external table» для одновременного импортирования данных, расположенных в Amazon S3.

Вопрос: Может ли множество пользователей выполнять запросы в одном и том же кластере?

Да. В пакетном режиме шаги при выполнении упорядочиваются. Шаги Hive могут быть добавлены к одному и тому же кластеру множеством пользователей, но выполняться они будут сериями. В интерактивном режиме несколько пользователей могут авторизоваться в одном и том же кластере и одновременно выполнять операторы Hive.

Вопрос: Можно ли предоставлять доступ к данным множеству пользователей AWS?

Да. К данным можно предоставлять общий доступ с помощью стандартного механизма Amazon S3, описанного здесь.

Вопрос: Поддерживает ли Hive доступ для подключений JDBC?

Да. Hive предоставляет диск JDBC, который можно использовать для программного выполнения операторов Hive. Чтобы запустить сервис JDBC в кластере, необходимо передать необязательный параметр в командной строке Amazon EMR. При этом нужно также создать туннель SSH, поскольку для группы безопасности не разрешены внешние подключения.

Вопрос: Как выполняется обновление пакетов для образов AMI EMR?

При первой загрузке образ AMI Amazon Linux для EMR подключается к репозиториям yum AMI Amazon Linux для установки обновлений безопасности. При использовании собственного образа AMI эту функцию можно отключить, но по соображениям безопасности делать это не рекомендуется.

Вопрос: Можно ли устанавливать обновления своих пакетов в кластерах EMR?

Да. При установке обновлений для пакетов в ваших кластерах рекомендуется использовать загрузочные сценарии.

Вопрос: Можно ли с помощью Hive обрабатывать данные, хранящиеся в DynamoDB?

Да. Для этого просто нужно определить внешнюю таблицу Hive на основании нужной таблицы DynamoDB. С помощью Hive можно анализировать данные, хранящиеся в DynamoDB, при этом результаты анализа можно загрузить обратно в DynamoDB или сохранить в Amazon S3. Подробнее об этом см. в Руководстве разработчика.

Работа с Hudi

Вопрос. Что такое Apache Hudi?

Apache Hudi – это платформа с открытым исходным кодом для управления данными, упрощающая их инкрементную обработку и разработку конвейера данных. Apache Hudi позволяет управлять данными в Amazon S3 на уровне записи, упрощая захват меняющихся данных и прием потоковой передачи данных, а также представляет платформу для работы с конфиденциальными данными в случаях, когда требуются обновления и удаления на уровне записи. Наборы данных, которыми управляет Apache Hudi, хранятся в S3 в открытых форматах, а интеграция с Presto, Apache Hive, Apache Spark и каталогами данных AWS Glue обеспечивает доступ к обновленным данным посредством знакомых инструментов практически в режиме реального времени.

Вопрос. В каких случаях стоит использовать Apache Hudi?

Apache Hudi – это практичное решение для управления данными в S3 на уровне записи. Существует пять типичных сценариев использования таких возможностей.

  1. Соблюдение законов о конфиденциальности данных, согласно которым организации должны удалять данные пользователей или обновлять параметры использования их данных в соответствии с изменениями, внесенными пользователями. Apache Hudi позволяет вставлять, обновлять и удалять на уровне записи данные, которые хранятся в S3, используя форматы данных с открытым исходным кодом, такие как Apache Parquet и Apache Avro.
  2. Использование потоков данных в режиме реального времени и применение журналов захвата меняющихся данных из корпоративных систем. Во многих организациях существует требование, чтобы данные, размещенные в хранилищах корпоративных (EDW) и рабочих (ODS) данных, были доступны в Amazon S3, где они могут подвергаться обработке и анализу ядрами системы управления базами данных SQL, такими как Apache Hive и Presto. Apache Hudi упрощает применение журналов изменений и обеспечивает пользователям доступ к данным практически в режиме реального времени.
  3. Восстановление запоздавших (неверных) данных. Запоздавшие (неверные) данные требуют перезапуска, а также обновления имеющихся наборов данных для включения новых или обновленных записей. Apache Hudi позволяет выполнить так называемую операцию upsert для записей в имеющемся наборе данных, при этом платформа обновляет или вставляет записи в зависимости от их наличия в наборе данных.
  4. Отслеживание изменений в наборе данных с возможностью их откатить. Благодаря Apache Hudi каждое изменение в наборе данных отслеживается как подтверждение записи и может подвергаться откату, что позволяет найти конкретное изменение и отменить его.
  5. Упрощение управления файлами в S3. Чтобы поддерживать эффективный размер файлов данных, клиентам приходится разрабатывать специальные решения, которые отслеживают и перезаписывают множество мелких файлов в несколько крупных. Благодаря Apache Hudi пользователи могут управлять файлами данных в S3, легко устанавливая оптимальный размер файла для хранения данных, при этом Hudi объединяет файлы, обеспечивая практичный размер.
  6. Запись изменений в целевой набор данных Hudi. Наборы данных Hudi можно извлекать поэтапно, что позволяет получать ВСЕ и ТОЛЬКО обновленные и новые строки с указанного момента времени.

Вопрос. Как создать набор данных Apache Hudi?

Наборы данных Apache Hudi создаются при помощи Apache Spark. Это так же просто, как и запись в Apache Spark файла DataFrame. Метаданные для наборов данных Apache Hudi могут также храниться в каталоге данных AWS Glue или хранилище метаданных Hive, что упрощает обнаружение данных и способствует интеграции с Apache Hive и Presto.

Вопрос. Как Apache Hudi управляет наборами данных?

При создании набора данных с помощью Apache Hudi можно также выбрать, для какого способа доступа к данным его следует оптимизировать. Для сценариев использования с большим количеством операций чтения Apache Hudi применит стратегию управления Copy on Write (Копировать при записи), которая оптимально подходит для частого чтения наборов данных. Эта стратегия предусматривает организацию данных с помощью столбцовых форматов хранения, а также слияние данных с обновлениями при записи последних. Для рабочих нагрузок с большим объемом записи Apache Hudi использует стратегию управления данными Merge on Read (Слияние при чтении), которая предусматривает организацию данных с помощью сочетания столбцовых и строчных форматов хранения. Таким образом, обновления добавляются к файлу в формате хранения на основе строк, а слияние выполняется в период чтения для предоставления обновленных результатов.

Вопрос. Как записывать данные в набор Apache Hudi?

Изменения в наборы данных Apache Hudi вносятся при помощи Apache Spark. Благодаря Apache Spark операции над наборами данных Apache Hudi осуществляются при помощи API Spark DataSource, что позволяет читать и записывать данные. Запись DataFrame с недавно добавленными данными или обновлениями существующих данных можно осуществлять посредством того же DataSource API. Утилита Hudi DeltaStreamer также доступна к использованию.

Вопрос. Как читать данные из набора Apache Hudi?

Читать данные можно с помощью Apache Spark, Apache Hive, Presto, Amazon Redshift Spectrum или Amazon Athena. Создавая набор данных, вы можете опубликовать его метаданные в каталоге данных AWS Glue или хранилище метаданных Hive. В случае публикации в хранилище метаданных набор данных будет иметь вид обычной таблицы, к которой вы сможете отправлять запросы с помощью Apache Hive и Presto.

Вопрос. Какие рекомендации или ограничения следует учитывать при использовании Apache Hudi?

Полный список рекомендаций или ограничений, которые следует учитывать при использовании Apache Hudi в Amazon EMR, изложен в документации по Amazon EMR.

Вопрос. Как Apache Hudi будет работать с имеющимися данными?

Если у вас есть данные, для управления которыми вы хотите использовать Apache Hudi, данные Apache Parquet можно легко преобразовать в набор данных Apache Hudi, используя инструмент импорта, предоставляемый вместе с Apache Hudi в Amazon EMR. Кроме того, с помощью утилиты Hudi DeltaStreamer или Apache Spark вы можете перезаписать имеющиеся данные как набор данных Apache Hudi.

Использование Impala

Вопрос: Что такое Impala?

Impala – это один из инструментов с открытым исходным кодом семейства Hadoop, предназначенный для интерактивных спонтанных запросов с синтаксисом SQL. В нем используется не MapReduce, а механизм массово‑параллельной обработки (MPP), как в традиционных системах управления реляционными базами данных (РСУБД). Архитектура массово‑параллельной обработки позволяет очень быстро выполнять запрос к данным в таблицах HDFS или HBase, а также использовать способность инфраструктуры Hadoop обрабатывать различные типы данных и получать схему БД во время исполнения. Благодаря этому Impala отлично подходит для интерактивной аналитики с низкой задержкой. В инструменте Impala используется метахранилище Hive для хранения информации о входных данных, включая имена разделов и типы данных. Инструмент Impala, установленный в сервисе Amazon EMR, требует образы AMI с версией Hadoop 2.x или новее. Подробнее об инструменте Impala см. здесь.

Вопрос: Какие функции предоставляет инструмент Impala, установленный в сервисе Amazon EMR?

Аналогично использованию сервиса Hive, применение Impala в сервисе Amazon EMR позволяет создавать сложные приложения для обработки данных с применением синтаксиса SQL. Однако инструмент Impala работает быстрее в определенных вариантах использования (см. ниже). В сервисе Amazon EMR инструмент Impala можно использовать как надежное хранилище данных, применяемое для выполнения таких задач, как анализ, мониторинг и бизнес‑аналитика данных. Ниже перечислены три примера такого использования:

  • Использование Impala вместо Hive в долго работающих кластерах для выполнения спонтанных запросов. Impala сокращает время интерактивного запроса до нескольких секунд, что делает его отличным инструментом для быстрого анализа данных. Можно запустить инструмент Impala в том же кластере, что и пакетные процессы MapReduce, применять Impala в долго работающих аналитических кластерах с сервисами Hive или Pig или создавать кластеры, оптимизированные под запросы Impala.
  • Использование Impala вместо Hive для пакетных заданий ETL в переходных кластерах Amazon EMR. Impala отрабатывает многие запросы быстрее, чем Hive, что повышает производительность для таких рабочих нагрузок. Как и в Hive, в инструменте Impala используется SQL, поэтому запросы легко переносить из Hive в Impala.
  • Использование Impala с инструментами бизнес‑аналитики сторонних поставщиков. Подключите клиентский драйвер ODBC или JDBC к вашему кластеру и применяйте Impala в качестве движка для мощных инструментов визуализации и панелей управления.

В сервисе Amazon EMR можно создавать как пакетные, так и интерактивные кластеры Impala. К примеру, долго работающие кластеры Amazon EMR с установленным инструментом Impala можно применять для интерактивных спонтанных запросов, а переходные кластеры Impala – для быстрых рабочих нагрузок ETL.

Вопрос: Чем инструмент Impala отличается от традиционных РСУБД?

Традиционные РСУБД обеспечивают семантику транзакций, а также атомарность, согласованность, изолированность и надежность базы данных. Они также предоставляют возможности индексирования и кэширования таблиц, что позволяет быстро извлекать и обновлять небольшие объемы данных, а также обеспечивать ограничения ссылочной целостности. Обычно такие системы развернуты на одной мощной машине и не поддерживают обработку сложных пользовательских типов данных. В инструменте Impala используется похожая система распределенных запросов, но данные запросов хранятся в файловой системе HDFS, а метахранилище Hive применяется для хранения информации о входных данных. Как и в сервисе Hive, схема запроса предоставляется во время исполнения, что облегчает ее изменение. Также инструмент Impala может исполнять запросы к различным сложным типам данных и выполнять пользовательские функции. Однако, поскольку Impala обрабатывает данные в памяти, важно осознавать аппаратные ограничения кластера и оптимизировать запросы для повышения производительности.

Вопрос: Чем Impala отличается от Hive?

Для исполнения SQL‑запросов в инструменте Impala используется механизм массово‑параллельной обработки (MPP), а в Hive – модель MapReduce. В Impala, в отличие от Hive, не расходуются ресурсы на создание заданий MapReduce, что и приводит к ускорению запросов. Однако инструмент Impala потребляет значительное количество ресурсов памяти, поэтому доступное свободное место в кластере накладывает ограничение на объем памяти, потребляемой каждым запросом. В Hive это ограничение отсутствует, поэтому этот сервис успешно обрабатывает большие массивы данных с тем же аппаратным обеспечением. В целом рекомендуется применять инструмент Impala для быстрых интерактивных запросов, а Hive – для рабочих нагрузок ETL при больших объемах данных. Инструмент Impala разработан для быстрых запросов и отлично подходит для спонтанного анализа, однако он требует значительного объема памяти для исполнения сложных запросов и обработки очень больших объемов данных. Вследствие этих ограничений инфраструктура Hive рекомендуется для рабочих нагрузок, где скорость имеет меньшее значение, чем результат исполнения. Нажмите здесь для просмотра сравнительных показателей производительности инструментов Impala и Hive.

Вопрос: Можно ли использовать сервис Hadoop версии 1?

Нет, для работы с Impala требуется Hadoop версии 2. Impala не запустится в кластере с образом AMI, на котором установлен сервис Hadoop версий 1.x.

Вопрос: Какие типы инстансов следует использовать для кластеров Impala?

Для наилучшей производительности инструмента Impala мы рекомендуем использовать для кластера инстансы с оптимизированным объемом памяти. Тем не менее мы отмечаем преимущества в производительности перед сервисом Hive и при использовании стандартных типов инстансов. Рекомендуем прочесть раздел Тестирование производительности и оптимизация запросов в руководстве для разработчиков по Amazon EMR. Эта информация поможет точнее оценивать ресурсы памяти, требуемые для кластера, относительно конкретного набора данных и типов запросов. На размер памяти влияют тип сжатия, разделы и конкретный запрос (количество операторов JOIN, размер результата и т. п.). Можно использовать оператор EXPLAIN для оценки памяти и других ресурсов, необходимых для запроса Impala.

Вопрос: Что произойдет, если во время исполнения запроса память закончится?

Если память закончится, то запросы не будут выполнены, а демон Impala, установленный на затронутом узле, будет отключен. Затем сервис Amazon EMR перезапустит демона на этом узле, чтобы инструмент Impala был готов к обработке следующего запроса. Данные в файловой системе HDFS узла останутся доступными, поскольку отключается только демон, но весь узел остается активным. При спонтанном анализе данных с помощью инструмента Impala время запроса измеряется в секундах; поэтому если запрос не срабатывает, вы сможете быстро обнаружить проблему и отправить следующий запрос.

Вопрос: Поддерживает ли инструмент Impala пользовательские функции?

Да, Impala поддерживает функции, определяемые пользователем (UDF). Функции UDF для инструмента Impala можно написать на языке Java или C++. Можно также изменить функции UDF или определяемые пользователем агрегатные функции, созданные для сервиса Hive, и использовать их в инструменте Impala. Нажмите здесь для получения информации о функциях UDF в сервисе Hive.

Вопрос: Где хранятся данные, к которым обращается инструмент Impala?

Impala выполняет запросы к данным в таблицах HDFS или HBase.

Вопрос: Можно ли одновременно запустить сервисы Impala и MapReduce в одном кластере?

Да. Можно создать многоклиентский кластер с сервисами Impala и MapReduce. Однако необходимо выделить ресурсы (память, диск, ЦП) для каждого приложения с помощью инструмента YARN сервиса Hadoop 2.x. Выделенные ресурсы должны определяться требованиями к заданиям, планируемым для каждого приложения.

Вопрос: Поддерживает ли инструмент Impala драйверы ODBC и JDBC?

Хотя существует возможность использования драйверов ODBC, инструмент Impala представляет собой отличный движок для инструментов сторонних разработчиков, подключенных через JDBC. Загрузить клиентский драйвер JDBC для Impala можно с веб‑сайта http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip. С клиентского компьютера, на котором установлен инструмент бизнес‑аналитики, подключите драйвер JDBC к ведущему узлу кластера Impala, используя протокол SSH или VPN через порт 21050. Подробнее об этом см. на странице Open an SSH Tunnel to the Master Node.

Работа с Pig

Вопрос: Что такое Apache Pig?

Pig – это пакет аналитики с открытым исходным кодом, представляющий собой надстройку сервиса Hadoop. Управление пакетом Pig происходит с помощью SQL‑подобного языка Pig Latin, позволяющего пользователям структурировать и объединять источники данных, хранящиеся в корзине Amazon S3, и выполнять запросы к ним. Помимо SQL‑подобных операций, в Pig Latin реализована превосходная поддержка функций map/reduce и сложных расширяемых пользовательских типов данных. Это позволяет обрабатывать источники сложных неструктурированных данных, такие как текстовые документы и файлы журналов. Pig поддерживает пользовательские расширения с помощью пользовательских функций, написанных на языке Java и развернутых в хранилище Amazon S3.

Вопрос: Каковы преимущества использования Pig с Amazon EMR?

Используя Pig с сервисом Amazon EMR, можно создавать сложные приложения обработки данных с помощью языка запросов, в основе которого лежит привычный SQL, и простых в использовании инструментов Amazon EMR. С помощью Amazon EMR можно использовать приложения Pig как надежные хранилища данных для выполнения таких задач, как анализ, мониторинг и бизнес‑аналитика данных.

Вопрос: Как начать работу с пакетом Pig в сервисе Amazon EMR?

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

Вопрос: Есть ли в Pig новые возможности специально для работы с Amazon EMR?

Да. Ниже перечислены три новые функции, расширяющие возможности Pig при использовании с Amazon EMR.

a) Доступ ко множеству файловых систем. По умолчанию задание Pig может получить доступ к входным, выходным или временным данным только одной удаленной файловой системы, будь то хранилище HDFS или корзина Amazon S3. Благодаря сервису EMR любое задание пакета Pig может получить доступ к любому количеству необходимых файловых систем. Преимущество заключается в том, что временные данные задания всегда хранятся в локальной файловой системе HDFS, что повышает производительность.

b) Загрузка ресурсов из S3. Сервис EMR расширяет возможности Pig, позволяя загружать собственные файлы JAR и скрипты из файловой системы S3, например «REGISTER s3:///my‑bucket/piggybank.jar».

c) Дополнительная функция Piggybank для обработки типов String и DateTime.

Вопрос: Какие типы кластеров Pig поддерживаются?

Pig поддерживает два типа кластеров: интерактивные и пакетные. В интерактивном режиме пользователь может запустить кластер, а затем запустить скрипты Pig непосредственно на главном узле. Обычно такой режим используется для спонтанного анализа данных и разработки приложений. В пакетном режиме скрипт Pig хранится в Amazon S3 со ссылкой на начало кластера. Обычно пакетный режим используют для повторяющихся задач, например генерации отчетов.

Вопрос: Как запустить кластер Pig?

Как пакетные, так и интерактивные кластеры можно запустить из Консоли управления AWS, интерфейса командной строки EMR или через API.

Вопрос: Какие версии пакета Pig поддерживает сервис Amazon EMR?

Amazon EMR поддерживает различные версии пакета Pig.

Вопрос: Можно ли записывать данные в корзину Amazon S3 из двух разных кластеров одновременно?

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

Вопрос: Можно ли разделять входные данные в корзине S3 между кластерами?

Да. Можно одновременно считывать одни и те же данные в корзине S3 в два разных кластера.

Вопрос: Можно ли предоставлять доступ к данным множеству пользователей AWS?

Да. Данные можно разделять с помощью стандартного механизма сервиса Amazon S3, описанного на веб‑странице http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html.

Вопрос: Следует ли создать один большой кластер и разделить его между пользователями или запустить множество небольших кластеров?

Сервис Amazon EMR предоставляет уникальную возможность использовать оба способа. С одной стороны, один большой кластер можно эффективно использовать для обработки регулярных пакетных нагрузок. С другой стороны, если предполагается выполнение спонтанных запросов или изменение рабочих нагрузок, можно создать несколько отдельных кластеров, которые предназначены для конкретных задач и имеют совместный доступ к источникам данных, хранящимся в корзине Amazon S3.

Вопрос: Можно ли получить доступ к скрипту или ресурсу JAR, расположенному в локальной файловой системе?

Нет. Сначала следует загрузить скрипт или ресурс JAR в корзину Amazon S3 или на главный узел кластера, прежде чем к ним можно будет обратиться. Для загрузки данных в корзину Amazon S3 можно использовать различные инструменты, включая s3cmd, jets3t или S3Organizer.

Вопрос: Можно ли запустить постоянный кластер, исполняющий несколько запросов Pig?

Да. Если вы запускаете кластер в режиме ручного выключения, его работа не будет остановлена между выполнением шагов Pig. Чтобы снизить риск потери данных, рекомендуется периодически сохранять все важные данные в хранилище Amazon S3. Рекомендуется также регулярно передавать задачи новому кластеру, чтобы проверить процесс на возможность восстановления после отказа главного узла.

Вопрос: Поддерживает ли пакет Pig доступ из JDBC?

Нет. Pig не поддерживает доступ из JDBC. 

Работа с БД HBase

Вопрос: Что такое Apache HBase?

HBase – это нереляционная распределенная БД с открытым исходным кодом на основе БД BigTable от Google. Разработанная в рамках проекта Apache Software Foundation's Hadoop, она представляет собой надстройку распределенной файловой системы Hadoop (HDFS) и обеспечивает аналогичные BigTable возможности для Hadoop. HBase обеспечивает эффективное отказоустойчивое хранение большого количества разреженных данных за счет сжатия и хранения по столбцам. HBase также обеспечивает быстрый поиск данных, поскольку они хранятся в оперативной памяти, а не на диске. HBase оптимизирована для операций последовательной записи и эффективно выполняет операции пакетной вставки, обновления и удаления данных. HBase эффективно работает с Hadoop, используя его файловую систему и обеспечивая прямой ввод и вывод данных для заданий Hadoop. База данных HBase также интегрируется с Apache Hive, поддерживая SQL‑подобные запросы к таблицам HBase, операции слияния с таблицами Hive и стандарт Java Database Connectivity (JDBC). Подробнее об Apache HBase см. здесь.

Вопрос. Есть ли в HBase новые возможности специально для работы с Amazon EMR?

Благодаря Amazon EMR вы можете использовать HBase в Amazon S3 для хранения корневого каталога HBase и метаданных кластера непосредственно в Amazon S3, а также для создания реплик для чтения и снимков. Подробную информацию см. в этой документации.

Вопрос. Какие версии HBase поддерживает сервис Amazon EMR?

Последние версии HBase, поддерживаемые Amazon EMR, указаны здесь.

Связующая библиотека Kinesis

Вопрос: Какие функции выполняет связующая библиотека сервисов EMR и Kinesis?

Связующая библиотека позволяет сервису EMR считывать и запрашивать данные напрямую из потоков Kinesis. Это дает возможность выполнять пакетную обработку потоков Kinesis с помощью существующих инструментов семейства Hadoop, таких как Hive, Pig, MapReduce, Hadoop Streaming и Cascading.

Вопрос: Какие новые функции предоставляет связующая библиотека сервисов EMR и Kinesis?

Чтение и обработка данных из потоков Kinesis требуют создания, развертывания и поддержки независимых приложений потоковой обработки. Это требует времени и усилий. Однако благодаря связующей библиотеке можно считывать и анализировать поток Kinesis, написав простой скрипт Hive или Pig. Это означает, что можно анализировать потоки Kinesis с помощью SQL! Конечно, можно использовать другие инструменты семейства Hadoop. Вам не придется разрабатывать или поддерживать новый набор приложений обработки.

Вопрос: Кому могут пригодиться эти функции?

Эта интеграция будет полезна для следующих групп пользователей:

  • пользователи Hadoop, заинтересованные в использовании обширного набора инструментов семейства Hadoop в целях анализа потоков Kinesis;
  • пользователи Kinesis, ищущие простой способ создания и исполнения приложений потоковой обработки и функций ETL для данных Kinesis;
  • бизнес‑аналитики и ИТ‑специалисты, желающие выполнять спонтанный анализ данных в потоках Kinesis с помощью знакомых инструментов, например языка SQL (через Hive) или скриптовых языков, таких как Pig.

Вопрос: Каковы возможные примеры использования этой интеграции?

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

  • Анализ лога потоковой передачи. Можно анализировать веб‑журналы потоковой передачи для создания списка десяти самых распространенных типов ошибок каждые несколько минут по региону, браузеру и домену доступа.
  • Комплексный процесс обработки данных. Можно объединить потоки Kinesis с данными, хранящимися в корзине S3, таблицах DynamoDB и файловой системе HDFS. Вы сможете написать запросы, которые объединят сведения о посещениях от сервиса Kinesis с данными о рекламных кампаниях, хранящимися в таблице DynamoDB, что позволит выявить наиболее эффективные категории рекламных объявлений, размещенных на определенных веб‑сайтах.
  • Спонтанные запросы. Периодически можно загружать данные из сервиса Kinesis в файловую систему HDFS и делать их доступными в качестве локальной таблицы Impala для выполнения быстрых интерактивных аналитических запросов.

Вопрос: Какую версию образа AMI в сервисе EMR поддерживает связующая библиотека?

Требуется образ EMR AMI версии 3.0.4 или новее.

Вопрос: Является ли связующая библиотека отдельным модулем?

Нет. Это встроенный компонент дистрибутива Hadoop от компании Amazon, включенный в образы AMI в сервисе EMR версий 3.0.4 и новее. Для начала работы с этой функцией пользователю необходимо развернуть кластер с образом AMI версии 3.0.4 или новее.

Вопрос: Данные какого формата сервис EMR может считывать из потока Kinesis?

Интеграция EMR и Kinesis не зависит от формата данных. Можно считывать данные в любом формате. Отдельные записи Kinesis представлены в среде Hadoop как стандартные записи, которые можно считывать с помощью любого инструмента Hadoop MapReduce. В отдельные платформы, например Hive, Pig и Cascading, встроены компоненты для сериализациии и десериализации, которые упрощают для разработчиков выполнение запросов к данным в разных форматах и не требуют создания собственного кода. Например, в Hive пользователи могут считывать данные из файлов JSON, XML и SEQ, указав соответствующее значение Hive SerDe при определении таблицы. В Pig есть похожий компонент Loadfunc/Evalfunc, а в Cascading – Tap. Пользователи Hadoop могут использовать все разнообразие адаптеров Hadoop без необходимости создания кода для обработки разных форматов. Можно использовать собственные форматы десериализации, чтобы считывать специализированные данные в любом из перечисленных инструментов.

Вопрос: Как анализировать поток Kinesis с помощью инструмента Hive в сервисе EMR?

Создайте таблицу, ссылающуюся на поток Kinesis. Затем эту таблицу можно анализировать, как любую таблицу в Hive. Подробнее см. в учебных пособиях.

Вопрос: Как создавать запросы, объединяющие данные потока Kinesis с другими источниками данных, используя инструмент Hive?

Сначала создайте таблицу, ссылающуюся на поток Kinesis. После создания таблицы Hive ее можно объединить с таблицами, привязанными к другим источникам данных, таким как корзина Amazon S3, сервис Amazon DynamoDB и файловая система HDFS. Это объединит данные из потока Kinesis с другими источниками данных.

Вопрос: Эта интеграция доступна только для сервиса Hive?

Нет. Можно использовать инструменты Hive, Pig, MapReduce, Hadoop Streaming и Cascading.

Вопрос: Как создать запланированные задания, запускаемые в потоке Kinesis?

Связующая библиотека EMR Kinesis предоставляет возможности, помогающие настраивать запланированные периодические задания и управлять ими с помощью традиционных средств планирования, таких как Cron. Например, можно разработать скрипт Hive, выполняющийся каждые N минут. В параметрах конфигурации задания можно указать его логическое имя. Логическое имя служит меткой, информирующей связующую библиотеку EMR Kinesis, что отдельные экземпляры задания являются частями одной запланированной операции. Логическое имя позволяет использовать принцип итераций, описанный ниже.

Поскольку MapReduce является инструментом пакетной обработки, то в целях анализа потока Kinesis с помощью сервиса EMR непрерывный поток разбивается на пакеты. Каждый пакет называется итерацией. Каждой итерации присваивается номер, начиная с 0. Границы каждой итерации определяются начальным и конечным порядковыми номерами. После этого итерации последовательно обрабатываются сервисом EMR.

При сбое попытки связующая библиотека EMR Kinesis попробует повторить операцию в пределах логического имени, начиная с известного начального порядкового номера итерации. Эта функция гарантирует, что последующие исполнения той же итерации получат те же входные записи из потока Kinesis, что и предыдущие. Это обеспечивает согласованную и непротиворечивую обработку потока Kinesis.

Можно указать логические имена и итерации в качестве динамических параметров в соответствующих инструментах Hadoop. Например, в учебном пособии в разделе «Running queries with checkpoints» приведен образец кода, который показывает запланированный запрос Hive, назначающий логическое имя запросу и увеличивающий итерацию после каждого успешного исполнения задания.

Кроме того, в учебных пособиях представлен пример сценария, выполненного с помощью планировщика Cron.

Вопрос: Где хранятся метаданные логических имен и итераций?

Метаданные, позволяющие связующей библиотеке EMR Kinesis работать в запланированном режиме, хранятся в Amazon DynamoDB. Необходимо выделить таблицу в Amazon DynamoDB и указать ее в качестве входного параметра для задания Hadoop. Важно правильно настроить параметр IOPS для таблицы, чтобы включить эту интеграцию. Подробнее о настройке таблицы в сервисе Amazon DynamoDB см. в учебном пособии.

Вопрос: Что происходит, когда обработка итерации не срабатывает?

Идентификаторы итераций предоставляются пользователем и указывают на определенный диапазон (начальный и конечный порядковые номера) в потоке Kinesis. Данные, соответствующие этому диапазону, загружаются на этапе Map задания MapReduce. Этот этап управляется инфраструктурой и будет автоматически перезапущен (три раза по умолчанию) в случае сбоя задания. Если повторные попытки не срабатывают, все равно можно запустить обработку повторно, начиная с последней успешной границы данных или прошлых границ данных. Это поведение контролируется посредством использования параметра kinesis.checkpoint.iteration.no во время обработки. Подробнее о настройке этого параметра для различных инструментов семейства Hadoop см. в учебном пособии.

Вопрос: Можно ли запускать несколько запросов в одной итерации?

Да. Можно указать предыдущую итерацию, установив параметр kinesis.checkpoint.iteration.no в последующей обработке. Такая реализация гарантирует, что последующие исполнения той же итерации получат те же входные записи из потока Kinesis, что и предыдущие.

Вопрос: Что происходит, если записи в итерации в потоке Kinesis истекают?

Если начальный и (или) конечный порядковые номера в итерации принадлежат записи, которая истекла в потоке Kinesis, задание Hadoop не выполнится. Потребуется другое логическое имя, чтобы обработать данные с начала потока Kinesis.

Вопрос: Можно ли добавить данные из сервиса EMR в поток Kinesis?

Нет. Связующая библиотека EMR Kinesis на данный момент не поддерживает запись данных в поток Kinesis.

Вопрос: Поддерживает ли библиотека связи сервисов EMR Hadoop и Kinesis непрерывную потоковую обработку?

Инструмент Hadoop MapReduce является системой пакетной обработки. Поэтому он не поддерживает непрерывные запросы. Однако появляется набор инструментов семейства Hadoop, например Twitter Storm и Spark Streaming, позволяющих разработчикам создавать приложения непрерывной потоковой обработки. Связующую библиотеку Storm для Kinesis можно загрузить из GitHub по этой ссылке, а здесь можно найти учебное пособие по настройке Spark Streaming в сервисе EMR и выполнению непрерывных запросов.

Кроме того, разработчики могут использовать клиентскую библиотеку Kinesis для разработки приложений потоковой обработки в реальном времени. Подробнее о разработке собственных приложений Kinesis см. в документации по ссылке.

Вопрос: Можно ли указать данные для доступа, чтобы считывать поток Kinesis, управляемый другим аккаунтом AWS?

Да. Можно считывать потоки из другого аккаунта AWS, указав соответствующие данные доступа к аккаунту, которому принадлежит поток Kinesis. По умолчанию связующая библиотека Kinesis использует данные доступа, указанные пользователем при создании кластера. Можно изменить эти данные, чтобы получить доступ к потокам из других аккаунтов AWS, установив параметры kinesis.accessKey и kinesis.secretKey. В примерах ниже показано, как установить параметры kinesis.accessKey и kinesis.secretKey в инструментах Hive и Pig.

Пример кода для Hive:
...
STORED BY
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Пример кода для Pig:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

Вопрос: Можно ли выполнить множество параллельных запросов в одном потоке Kinesis? Повлияет ли это на производительность?

Да. Пользователь может выполнить множество параллельных запросов в одном потоке, используя разные логические имена для каждого запроса. Однако считывание сегмента в потоке Kinesis ограничено скоростью 2 МБ/с. Следовательно, если в одном потоке выполняется N параллельных запросов, каждый запрос получит примерно (2/N) МБ/с на сегмент. Это может замедлить обработку, а в некоторых случаях привести к сбою запросов.

Вопрос: Можно ли объединять и анализировать множество потоков Kinesis в сервисе EMR?

Да. К примеру, в инструменте Hive можно создать и соединить две таблицы, связанные с двумя разными потоками Kinesis.

Вопрос: Обрабатывает ли библиотека EMR Kinesis события масштабирования Kinesis, такие как слияние и разделение?

Да. Реализация охватывает события слияния и разделения. Библиотека Kinesis связывает отдельные сегменты Kinesis (логическая единица масштаба в потоке Kinesis) с заданиями привязки Hadoop MapReduce. Каждый уникальный сегмент, находящийся в потоке в течение логического периода итерации, приведет к созданию одного задания привязки. При слиянии или разделении сегментов библиотека Kinesis выделит новые уникальные идентификаторы сегментов. В итоге инструмент MapReduce выделит больше заданий привязки для чтения данных из Kinesis. Все это прозрачно для пользователя.

Вопрос: Что происходит, когда в потоке наблюдаются периоды «тишины»?

Реализация включает возможность настраивать параметр kinesis.nodata.timeout. Например, рассмотрим случай, когда параметр kinesis.nodata.timeout установлен на две минуты, а запрос Hive требуется исполнять каждые десять минут. Кроме того, предположим, что некие данные записывались в поток после исполнения предыдущей итерации (десять минут назад). В текущий момент новые записи не поступают, то есть в потоке наступила тишина. В таком случае при запуске текущей итерации запроса библиотека Kinesis не обнаружит новых записей. Библиотека будет выполнять запросы к потоку в течение двух минут и, если новых записей не поступит, обработает только те, которые уже были прочитаны в текущем пакете потока. Однако, если новые записи начнут поступать перед истечением параметра kinesis.nodata.timeout, библиотека будет ждать дополнительное время, соответствующее значению параметра kinesis.iteration.timeout. Информацию об определении этих параметров см. в учебных пособиях.

Вопрос: Как выполнить отладку запроса, отказывающего в каждой итерации?

В случае сбоя обработки можно использовать те же инструменты, что применяются для отладки заданий Hadoop. Можно также использовать веб‑консоль Amazon EMR, помогающую идентифицировать ошибки и получить доступ к журналам ошибок. Подробнее об отладке задания EMR см. здесь.

Вопрос: Что произойдет, если я укажу таблицу DynamoDB, к которой у меня нет доступа?

Задание не выполнится, а в журнале ошибок появится возникшая в данном задании ошибка.

Вопрос: Что будет, если сбой произойдет не при выполнении задания, а при создании контрольной точки в БД DynamoDB?

Задание не выполнится, а в журнале ошибок появится возникшая в данном задании ошибка.

Вопрос: Как добиться максимальной производительности чтения из потока Kinesis в сервисе EMR?

Производительность чтения потока Kinesis зависит от размера инстанса и размера записи в потоке Kinesis. Чтобы улучшить этот параметр, рекомендуем использовать инстансы размера m1.xlarge или более как для главного, так и для центральных узлов. 

Соглашение об уровне обслуживания

Вопрос. Что такое соглашение об уровне обслуживания Amazon EMR?

См. Соглашение об уровне обслуживания.

Вопрос. Что включено в Соглашение об уровне обслуживания для Amazon EMR?

AWS будет предпринимать коммерчески целесообразные усилия для обеспечения доступности каждого сервиса Amazon EMR на уровне бесперебойной работы не менее 99,9 % за любой оплачиваемый месяц в каждом из регионов AWS («Обязательство по сервису»).

Вопрос. Что происходит в случае нарушения обязательства по сервису?

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

Вопрос. Как узнать, могу ли я претендовать на эту компенсацию? Как ее получить?

Чтобы получить компенсацию, необходимо подать заявку в центре поддержки AWS Support Center. Сведения об условиях получения компенсации и правилах оформления заявки см. на странице https://aws.amazon.com/emr/sla/

Сведения о ценах на Amazon EMR

Перейти на страницу цен
Готовы приступить к разработке?
Начало работы с Amazon EMR
Есть вопросы?
Связаться с нами