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

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

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

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

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

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

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

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

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

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

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

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

Ядром распределенной обработки данных в Amazon EMR является Apache Hadoop. Hadoop – это программная инфраструктура на Java с открытым исходным кодом, которая поддерживает работу распределенных приложений, требующих обработки больших объемов данных, в больших кластерах на базе стандартного аппаратного обеспечения. Hadoop использует модель программирования MapReduce, согласно которой данные разделяются на множество мелких рабочих фрагментов, каждый из которых может быть выполнен на любом узле кластера. Эта инфраструктура широко используется разработчиками, крупными компаниями и стартапами. Она зарекомендовала себя в качестве надежной программной платформы для обработки петабайтов данных на кластерах из тысяч стандартных компьютеров.

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

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

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

Presto (или PrestoDB) – это ядро обработки распределенных SQL‑запросов с открытым исходным кодом, разработанное для быстрого выполнения аналитических запросов к данным любого объема. С помощью Amazon EMR можно запускать кластеры Presto за считаные минуты без необходимости выделять узлы, настраивать и оптимизировать кластер или изменять конфигурацию Presto. 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 с помощью Консоли управления AWS, инструментов командной строки, пакетов SDK или API EMR.

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

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

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

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

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

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

Вопрос: Поддерживает ли Amazon EMR одновременную работу множества кластеров?

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

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

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

Вернуться к началу >>


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

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

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

Создать задание по обработке данных можно на своем компьютере, к примеру, с помощью таких плагинов 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, запущенные с флагом ‑‑alive, будут продолжать работу до принудительной остановки, благодаря чему пользователь может добавлять шаги к кластеру по мере необходимости. Этим способом можно воспользоваться в процессе отладки приложения, избавив себя от необходимости каждый раз ждать запуска кластера. Постоянный кластер можно также использовать как долго работающий кластер хранилища данных. Его можно объединить с хранилищами данных и пакетами аналитики, представляющими собой надстройку 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 (AMI) Amazon Linux, оптимизированного для Amazon EMR. Образ AMI содержит ОС Amazon Linux, другое ПО и необходимые конфигурации инстанса для размещения приложений в кластере. Помимо этого, можно использовать собственный образ AMI, созданный на основе AMI Amazon Linux. Это позволяет выполнять сложную предварительную настройку практически для любого приложения. Подробнее см. в руководстве Using a Custom AMI.

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

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

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

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

Вопрос: Какие версии 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 останутся работоспособными.

Вернуться к началу >>


Вопрос: Как выполняется отладка кластера?

Выберите кластер, который нужно отладить, затем нажмите кнопку «Debug», чтобы открыть окно отладки кластера в Консоли управления AWS. Здесь можно отследить процесс работы кластера и выявить проблемы, возникающие во время выполнения шагов, заданий, задач, а также при попытке выполнения задач. Посредством SSH можно также подключиться непосредственно к инстансам Amazon Elastic Compute Cloud (Amazon EC2), на которых работает кластер, и устранить проблемы в кластере с помощью привычного для вас отладчика командной строки.

Вопрос: Что собой представляет инструмент отладки кластера?

Инструмент отладки кластера – это раздел Консоли управления AWS, позволяющий отследить процесс работы кластера и выявить проблемы, возникающие во время выполнения шагов, заданий, задач, а также при попытке выполнения задач. Чтобы воспользоваться им, выберите кластер, который нужно отладить, а затем нажмите кнопку «Debug».

Вопрос: Как включить функцию отладки кластера?

Чтобы включить функцию отладки, установите флаг «Enable Debugging» во время создания кластера в Консоли управления AWS или задайте параметры ‑‑enable‑debugging и ‑‑log‑uri при создании кластера в интерфейсе командной строки.

Вопрос: Где можно ознакомиться с инструкциями по работе с окном отладки кластера?

Сведения о том, как открыть и использовать окно отладки кластера, вы найдете в разделе «Консоль управления AWS» Руководства для разработчиков.

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

Можно выполнять отладку всех типов кластеров, поддерживаемых Amazon EMR, включая пользовательские JAR‑файлы, потоковые процессы, задачи Hive и Pig.

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

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

Вопрос: Можно ли пользоваться функцией отладки кластеров без регистрации в Amazon SimpleDB?

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

Вопрос: Можно ли удалить из Amazon SimpleDB историю кластера?

Да. Вы можете удалить домены Amazon SimpleDB, созданные сервисом Amazon EMR от вашего имени. Инструкции см. в документации Amazon SimpleDB.

Вернуться к началу >>


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

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

Вопрос: Где находятся логи кластеров, работа которых завершена?

Логи системы Hadoop и пользовательские логи будут помещены в корзину Amazon S3, указанную вами при создании кластера.

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

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

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

Да. Приложение Hadoop может загружать данные из любых источников в Интернете или из других сервисов AWS. Обратите внимание на то, что при загрузке данных из Интернета будет взиматься плата за использование полосы пропускания EC2. Amazon EMR также предоставляет доступ к данным в DynamoDB на основе инфраструктуры Hive.

Вернуться к началу >>


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

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

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

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

Подробней о ценах на Amazon EMR см. на странице цен.

Плата за использование сервисов Amazon EC2, Amazon S3 и Amazon SimpleDB взимается отдельно. Использование Amazon EMR оплачивается на посекундной основе для каждого типа инстанса (минимальный уровень составляет одну минуту) с момента запроса кластера до завершения его работы. Подробные сведения о типах инстансов Amazon EC2, ценах на спотовые и зарезервированные инстансы Amazon EC2, Amazon S3 и Amazon SimpleDB вы найдете по приведенным ниже ссылкам.

Типы инстансов Amazon EC2

Цены на зарезервированные инстансы Amazon EC2

Цены на спотовые инстансы Amazon EC2

Цены на Amazon S3

Цены на Amazon SimpleDB

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

Начисление платы начинается при запуске кластера сервисом Amazon EMR. Плата начисляется только за фактически использованные ресурсы. Например, рассмотрим запуск 100 стандартных малых инстансов Amazon EC2 в кластере Amazon EMR. Стоимость Amazon EMR составляет дополнительные 0,015 USD в час. Инстансы Amazon EC2 сразу начнут загружаться, но необязательно начнут работу одновременно. Amazon EMR отследит время запуска каждого инстанса и зарегистрирует его в кластере, чтобы инстанс мог принимать задания по обработке.

В течение первых 10 минут после получения запроса о запуске Amazon EMR либо запускает кластер (если все инстансы доступны), либо регистрирует в нем столько инстансов, сколько возможно. По истечении 10 минут Amazon EMR начнет обработку данных (и начисление платы) в кластере, как только будет доступно 90 % запрашиваемых инстансов. После регистрации оставшихся 10 % запрашиваемых инстансов Amazon EMR начинает начислять плату также и за них.

Итак, если в вышеприведенном примере все 100 запрашиваемых инстансов становятся доступны в течение 10 минут после отправки запроса о запуске, с вас будет взиматься 1,50 USD в час (100 * 0,015 USD) до завершения работы кластера. Если в течение 10 минут станут доступны только 90 инстансов, с вас будет взиматься 1,35 USD в час (90 * 0,015 USD) до тех пор, пока в вашем кластере работает именно такое количество инстансов. После регистрации оставшихся 10 инстансов с вас будет взиматься 1,50 USD в час (100 * 0,015 USD) до завершения работы кластера.

Каждый кластер продолжает работать до момента, когда произойдет одно из следующих событий: завершение работы кластера с помощью вызова API TerminateJobFlows или аналогичного инструмента, самостоятельная остановка кластера или прекращение работы кластера из‑за программного или аппаратного сбоя.

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

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

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

В Консоли управления AWS для каждого кластера есть столбец «Normalized Instance Hours», в котором отображается использованное кластером на данный момент время вычислений, округленное до часов. Нормализованное время работы инстанса – это время вычислений, определяемое на основе следующего стандарта: 1 час работы инстанса m1.small = 1 час нормализованного времени вычислений. В таблице ниже приведен фактор нормализации, используемый для расчета нормализованного времени работы инстансов различных размеров.

Размер инстанса Коэффициент нормализации
Small 1
Medium 2
Large 4
Хlarge 8
2xlarge 16
4xlarge 32
8xlarge 64

Например, если кластер из 10 узлов с инстансами r3.8xlarge работает в течение часа, общее нормализованное время работы инстанса, отображаемое в консоли, составит 640 часов (10 (количество узлов) x 64 (фактор нормализации) x 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.

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

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

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

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

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

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

Вернуться к началу >>


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

Пользователи загружают входные данные и приложение для их обработки в хранилище Amazon S3. Затем Amazon EMR запускает указанное пользователем количество инстансов Amazon EC2. Сервис запускает кластер, передавая входные данные из Amazon S3 по протоколу S3N на запущенные инстансы 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 EMR управляет кластером Amazon EC2 или вычислительными инстансами, используя высокодоступную проверенную сетевую инфраструктуру и ЦОД Amazon. Средством обработки данных в Amazon EMR является испытанное в данной отрасли отказоустойчивое ПО Hadoop. Hadoop разбивает данные на множество частей и назначает несколько инстансов Amazon EC2 для обработки каждой части. Таким образом, если какому‑либо инстансу Amazon EC2 не удастся обработать одну из частей данных, можно будет использовать результаты работы другого инстанса Amazon EC2.

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

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

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

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

Amazon EMR поддерживает 12 типов инстансов EC2, включая стандартные инстансы, инстансы с высокой производительностью ЦПУ, инстансы с большим объемом памяти, инстансы вычислительных кластеров, инстансы с преобладанием ресурсов ввода‑вывода и инстансы с большим объемом хранилища. У стандартных инстансов отношение ресурсов памяти к ресурсам ЦПУ таково, что они подходят для большинства приложений общего назначения. Инстансы с высокой производительностью ЦПУ обладают пропорционально большим объемом ресурсов ЦПУ, чем оперативной памяти (RAM), и подходят для приложений, требующих больших вычислительных мощностей. Инстансы с большим объемом памяти предоставляют увеличенную емкость памяти для приложений, требующих высокой пропускной способности. Инстансы вычислительных кластеров обладают довольно большим объемом ресурсов ЦПУ и повышенной сетевой производительностью, благодаря чему идеально подходят для приложений, требующих высокопроизводительных вычислений, а также для других ресурсоемких приложений, привязанных к сети. Инстансы с большим объемом хранилища предоставляют 48 ТБ хранилища на 24 дисках и прекрасно подходят для приложений, требующих последовательного доступа к огромным наборам данных, таким как приложения хранения данных и обработки логов. Подробные сведения о доступных типах инстансов и ценах в разных регионах см. на странице цен EMR.

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

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

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

Оптимальное количество инстансов для кластера зависит от приложения и определяется, исходя из количества ресурсов, требуемых для хранения и обработки данных, и приемлемого времени выполнения задания. Как правило, рекомендуется выделить 60 % дискового пространства для хранения обрабатываемых данных, а остальное оставить для вывода промежуточных данных. Таким образом, с учетом трехкратной репликации в файловой системе HDFS для обработки 5 ТБ данных инстансами m1.xlarge с объемом дискового пространства в 1690 ГБ рекомендуется создать кластер, содержащий не менее (5 ТБ * 3)/(1690 ГБ * 0,6) = 15 центральных узлов m1.xlarge. Количество инстансов можно увеличить, если при выполнении задания генерируется большой объем промежуточных данных или требуется большое количество операций ввода‑вывода. Чтобы повысить производительность обработки, можно также добавить дополнительные узлы заданий. Подробнее о локальном хранилище инстансов для конфигураций с разными типами инстансов см. на странице Типы инстансов Amazon EC2.

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

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

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

Нет. В случае отказа главного узла работа кластера будет завершена, и потребуется перезапустить задание. В настоящее время Amazon EMR не поддерживает автоматическое выполнение аварийного переброса главных узлов и восстановление их состояния. В случае сбоя главного узла в Консоли управления AWS будет выведено сообщение «The master node was terminated», указывающее на необходимость запуска нового кластера. Пользователь может задать в кластере контрольные точки для сохранения промежуточных данных (т. е. данных, созданных на промежуточных этапах кластера, которые еще не прошли этап reduce) в хранилище Amazon S3, что в случае сбоя позволит возобновить работу кластера с последней контрольной точки.

Вопрос: Сможет ли 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 и при запуске кластера указать его местонахождение. Подробнее об использовании загрузочных сценариев см. в Руководстве для разработчиков: http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/.

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

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

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

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

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

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

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

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

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

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

Вопрос: Как разрешить доступ к моему кластеру для других пользователей 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 будут правильные теги.

Вернуться к началу >>

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

Большинство инстансов 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?

Нет. Зашифрованные тома в текущей версии не поддерживаются.

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

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

Вернуться к началу >>


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

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

Вопрос: Каковы преимущества использования 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?

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

a) Автоматическая загрузка разделов таблицы из хранилища Amazon S3. Ранее для импортирования таблицы, разбитой на разделы, требовался отдельный оператор alter table для каждого раздела таблицы. Теперь Amazon EMR содержит новый тип оператора языка Hive, alter table recover partitions, который позволяет с легкостью импортировать таблицы во множество кластеров одновременно без применения общего хранилища метаданных. Эту функциональную возможность используют для чтения таблиц, содержащих данные, записываемые внешними процессами, например для чтения файлов журналов.

b) Назначение хранилища метаданных вне инстансов кластера. По умолчанию хранилище метаданных, в котором Hive сохраняет информацию о схеме таблиц, находится на главном узле, поэтому после прекращения работы кластера оно перестает существовать. Данная возможность позволяет выбрать другое местоположение для хранилища метаданных, например в инстансе MySQL, уже запущенном в облаке EC2.

c) Запись данных непосредственно в Amazon S3. При записи данных в таблицы, размещенные в Amazon S3, установленная в Amazon EMR версия Hive выполняет запись непосредственно в Amazon S3 без использования временных файлов. Это дает значительный выигрыш в производительности, однако следует учесть, что с точки зрения Hive файловая система HDFS и хранилище S3 функционируют по‑разному. Если таблица расположена в Amazon S3, невозможно с помощью одного и того же оператора одновременно выполнять чтение и запись в одну и ту же таблицу. Чтобы обновить таблицу в хранилище S3, создайте временную таблицу в локальной файловой системе HDFS кластера, запишите в нее результаты и затем скопируйте их в Amazon S3.

d) Доступ к ресурсам в 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?

Amazon EMR поддерживает множество версий Hive, включая версию 0.11.0.

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

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

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

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

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

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

Вопрос: Можно ли получить доступ к скрипту или ресурсу 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. Подробнее см. в Руководстве разработчика.

Вернуться к началу >>


 

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

Вернуться к началу >>


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

Вернуться к началу >>


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

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

С помощью Amazon EMR резервную копию БД HBase можно сохранить в Amazon S3 (полностью или пошагово, вручную или автоматически) и восстановить базу из ранее сохраненной резервной копии. Подробнее о HBase и EMR.

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

Сервис Amazon EMR поддерживает версии HBase 0.94.7 и 0.92.0. Для использования HBase версии 0.94.7 необходимо задать образ AMI версии 3.0.0. Для использования интерфейса командной строки требуется версия 2013‑10‑07 или новее.

Вернуться к началу >>


Вопрос: Какие функции выполняет связующая библиотека сервисов 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 поддерживает связующая библиотека?

Требуется образ 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 по ссылке.

Вопрос: Можно ли указать данные для доступа, чтобы считывать поток 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 или более как для главного, так и для центральных узлов.

Вернуться к началу >>