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

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

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

Вопрос: Для чего предназначен сервис Amazon EMR?

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

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

Вопрос: Кто может пользоваться сервисом Amazon EMR?

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

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

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

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

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

Вопрос. Что такое 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.

Кластеры

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

«Кластером» в Amazon EMR принято называть кластер Amazon EMR и все определенные для него этапы обработки данных. У каждого кластера есть уникальный идентификатор, начинающийся с «j‑».

Вопрос: Что такое шаг кластера?

Шаг кластера – это определяемая пользователем единица обработки данных, обычно соответствующая одной операции с данными. Шаг кластера представляет собой приложение 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: сбой во время выполнения шага.

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

Вопрос. Как получить доступ к Amazon EMR?

Вы можете работать с Amazon EMR с помощью EMR Studio, консоли управления AWS, инструментов командной строки, пакетов SDK или API EMR.

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

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

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

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

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

Завершить работу кластера можно в любой момент, выбрав его в Консоли управления 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 EMR?

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

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

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

Вопрос. Как выбрать подходящий тип инстанса Amazon EC2?

Изложенное в этом разделе поможет вам определить типы инстансов, способы приобретения и объем хранилища, которые необходимо выделить для каждого типа узла в кластере 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 соответствующих тегов.

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

Разработка

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

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

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

Создать задание по обработке данных можно на своем компьютере, к примеру, с помощью таких плагинов Eclipse или NetBeans, как IBM MapReduce Tools для Eclipse (http://www.alphaworks.ibm.com/tech/mapreducetools). Эти инструменты позволяют без труда создавать задания MapReduce и выполнять их отладку и локальное тестирование. Кроме того, можно создать кластер из одного и более инстансов непосредственно в Amazon EMR.

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

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

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

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

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

Да. Если при запуске кластеров Amazon EMR была активирована защита от прерывания, они будут продолжать работать до явного завершения работы. Таким образом, пользователь может добавлять шаги к кластеру по мере необходимости. Этим способом можно воспользоваться в процессе отладки приложения, избавив себя от необходимости каждый раз ждать запуска кластера. Постоянный кластер можно также использовать как долго работающий кластер хранилища данных. Его можно объединить с хранилищами данных и пакетами аналитики, представляющими собой надстройку Hadoop, такими как Hive и Pig.

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

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

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

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

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

Для выполнения пользовательских JAR‑файлов Hadoop можно использовать Java или работать с другими языками программирования, включая Perl, Python, Ruby, C++, PHP и R, с помощью утилиты Hadoop Streaming. Инструкции по использованию Hadoop Streaming можно найти в Руководстве для разработчиков.

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

Amazon EMR создает инстансы кластера на базе образа машины Amazon Linux Amazon Machine Image (AMI), оптимизированного для Amazon EMR. Образ AMI содержит ОС Amazon Linux, другое ПО и необходимые конфигурации инстанса для размещения приложений в кластере. Срок действия Amazon Linux AMI завершится 31 декабря 2020 г. Версии EMR AMI 5.30.0, 6.0.0, а также более новые версии работают на базе Amazon Linux 2. Помимо этого, можно использовать собственный образ AMI, созданный на основе AMI Amazon Linux. Это позволяет выполнять сложную предварительную настройку практически для любого приложения. Подробнее см. в руководстве Using a Custom AMI.

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

Да. См. раздел Интерфейс пользователя Hadoop в руководстве для разработчиков, чтобы узнать, как получить доступ к интерфейсу пользователя Hadoop.

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

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

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

Узнать, какие последние версии поддерживаются Amazon EMR, можно в документации.

Вопрос. Участвует ли Amazon в процессе доработки Hadoop сообществом разработчиков ПО с открытым исходным кодом?

Да. Amazon EMR активно взаимодействует с сообществом разработчиков ПО с открытым исходным кодом и вносит множество исправлений в исходный код Hadoop.

Вопрос. Выполняет ли Amazon EMR обновление поддерживаемой версии Hadoop?

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

Вопрос: Через какой промежуток времени Amazon EMR прекращает поддержку старых версий Hadoop?

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

Отладка

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

Чтобы определить причину неисправности, для сбора информации о кластере можно использовать несколько инструментов. Некоторые требуют инициализации при запуске кластера; другие доступны для каждого кластера. Вы можете получить доступ к инструментам отображения сведений о кластере, к инструментам обзора файлов журнала, а также к инструментам мониторинга производительности кластера. Дополнительную информацию см. в документации.

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

Вы можете подключиться к основному узлу посредством SSH. Hadoop также публикует пользовательские интерфейсы в виде веб-сайтов, размещенных на основных узлах и узлах задач. Эти веб-сайты также доступны только на локальных веб-серверах узлов. Указанные веб-интерфейсы можно просматривать в инстансах кластеров.

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

Да. Существует несколько вариантов доступа к постоянным пользовательским интерфейсам приложений вне кластера для Apache Spark, пользовательского интерфейса Tez и сервера YARN Timeline Server, а также к нескольким пользовательским интерфейсам приложений в кластере и сводке истории приложений в консоли EMR для всех приложений YARN. Дополнительную информацию см. в документации.

EMR Notebooks

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

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

Вопрос. Что можно делать с помощью сервиса 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, не выполняя вход в консоль управления AWS?

Нет. Чтобы создать или открыть записную книжку и выполнять запросы в кластере EMR, необходимо войти в консоль управления AWS. Система сохраняет файлы записных книжек в корзину S3 в формате ipynb. Эти файлы можно скачать и открыть на локальном компьютере.

Вопрос. Какие языки программирования поддерживает сервис EMR Notebooks?

Сервис EMR Notebooks поддерживает ядра PySpark, SparkR, SparkSQL, Spark (Scala) и Python.

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

В свой код вы можете импортировать библиотеки, имеющиеся в репозитории Anaconda с открытым исходным кодом. Вы можете импортировать эти библиотеки и использовать их локально в записных книжках.

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

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

Вопрос. Какие ограничения действуют для сервиса EMR Notebooks?

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

Вопрос. Как остановить записную книжку?

Воспользуйтесь консолью EMR. Щелкните Notebooks, выберите необходимую записную книжку в списке и нажмите кнопку Stop. В результате сеанс записной книжки будет завершен, и ее будет невозможно открыть в редакторе записных книжек. Чтобы повторно запустить записную книжку, нажмите кнопку Start.

Вопрос. Как удалить записную книжку?

Воспользуйтесь консолью EMR. Щелкните Notebooks, выберите необходимую записную книжку в списке и нажмите кнопку Delete. При удалении записной книжки она будет удалена только из списка в консоли. Файлы записной книжки останутся в расположении Amazon S3, которое вы указали при создании записной книжки.

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

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

Прежде чем выполнять код в редакторе записных книжек, необходимо удостовериться, что записная книжка находится в состоянии Ready. Это состояние означает, что интерфейс между приложениями в кластере и редактором записных книжек подготовлен к запуску запросов и выполнению кода. Чтобы открыть редактор, выберите необходимую записную книжку в списке «Notebooks» и нажмите кнопку Open, чтобы запустить редактор записных книжек в новой вкладке браузера. В редакторе записных книжек в списке Kernel выберите ядро языка программирования для запросов. После того как ядро будет запущено и готово к работе, можно выполнить код так же, как вы обычно делаете в записной книжке Jupyter. Например, можно нажать кнопку Run в одной ячейке, щелкнуть Run All в меню Cell и т. д.

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

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

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

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

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

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

Вопрос. Что произойдет, если я закрою редактор записных книжек, когда он выполняет какой-либо код в кластере?

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

Вопрос. Завершит ли работу кластер EMR, если он больше не подключен к записной книжке?

Нет. Необходимо принудительно завершить его работу.

Вопрос. Какие другие приложения Apache Hadoop можно использовать с сервисом EMR Notebooks?

На данный момент сервис EMR Notebooks поддерживает решение Spark в экосистеме Hadoop.

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

Да, вы можете изменять кластеры EMR. Перед заменой кластеров необходимо остановить записные книжки. После этого выберите необходимый кластер в списке Notebooks, щелкните View Details, щелкните Change cluster и выберите работающий кластер либо добавьте новый, а затем щелкните Change cluster and start the notebook.

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

Система автоматически сохраняет файлы записной книжки в формате ipynb через постоянные промежутки времени в расположении Amazon S3, указанном при создании записной книжки. У файла записной книжки такое же имя, что и у записной книжки в консоли EMR. Кроме того, можно в любое время сохранить записную книжку вручную с помощью команды Save and Checkpoint в редакторе записных книжек. В результате будет создан IPYNB-файл с таким же именем, и он будет сохранен во вложенной папке с именем checkpoint. Система заменяет предыдущие файлы контрольных точек последним файлом контрольной точки. Команда Save as недоступна в редакторе записных книжек.

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

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

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

Чтобы начать работу с сохраненной записной книжкой, щелкните ее в списке Notebooks в консоли EMR.

Вопрос. Можно ли интегрировать корпоративный Active Directory с сервисом EMR Notebooks?

Доступ к сервису EMR Notebooks можно получить только через консоль управления AWS для EMR. Вы можете создать федерацию пользователей из Active Directory (AD) с AWS Management, чтобы использовать функцию единого входа. Дополнительные сведения см. в статье Enabling federation to AWS using Active Directory, ADFS and SAML 2.0.

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

У пользователей должно быть утверждение политики на основе удостоверений, предоставляющее разрешения на создание и использование записных книжек EMR. В дополнение к пользовательской политике сервис EMR Notebooks использует роль сервиса для доступа к другим ресурсам AWS и выполнения действий. Дополнительные сведения см. в разделе Security for EMR Notebooks в руководстве по выпуску Amazon EMR.

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

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

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

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

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

Нет, одновременно открыть записную книжку может только один пользователь. Чтобы просмотреть сведения о текущем пользователе, выберите записную книжку в списке «Notebooks» и щелкните «View details». В результате отобразится имя пользователя, а в поле «Last modified by» отобразится имя ресурса Amazon IAM пользователя, который внес последние изменения в записную книжку. Дополнительные сведения об именах ресурсов Amazon (ARN) см. в разделе Amazon Resource Names в общем справочнике по AWS

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

Для управления доступом к своим записным книжкам используйте теги записных книжек с помощью политик IAM на основе удостоверений. По умолчанию система автоматически добавляет в записную книжку тег, сопоставленный с пользователем, создающим записную книжку. Дополнительные сведения см. в разделе Using Notebook Tags to Control IAM User Access в руководстве по управлению EMR.

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

Нет, на данный момент кластеры EMR с Kerberos не поддерживаются.

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

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

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

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

EMR Studio

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

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

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

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

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

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

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

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

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

EMR Studio представляет собой первую интегрированную среду разработки на основе EMR для Notebook. EMR Studio позволяет легко создавать и развертывать Spark и другие приложения для работы с большими данными. Amazon SageMaker Studio предоставляет единый визуальный веб‑интерфейс, в котором можно проводить все этапы разработки машинного обучения. 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 Single Sign-On (SSO) – это поставщик услуг единого входа для EMR Studio. Список поставщиков удостоверений, поддерживаемых AWS SSO, можно найти в документации.

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

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

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

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

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

Записные книжки можно использовать на кластерах EMR. Записные книжки можно прикрепить как к существующим, так и к новым кластерам. В 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. При добавлении пользователей и групп из AWS Single Sign-On (AWS SSO) в EMR Studio администраторы могут назначить политику сеанса пользователю или группе для применения детальных элементов управления разрешениями. Политики сеанса помогают администраторам детализировать разрешения пользователей, не создавая несколько ролей IAM. Дополнительную информацию о политиках сеанса см. в разделе о политиках и разрешениях в руководстве AWS Identity and Access Management User.

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

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

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

Вопрос. Как отправить данные в хранилище 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 см. по ссылке.

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

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

Безопасность

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

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

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

Механизмы аутентификации 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.

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

Вопрос: Как 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 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

Нет

Да

 

Нет

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

Использование 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

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