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

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

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

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

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

Вопрос: На каком движке обработки данных работает Amazon EMR?

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

Вопрос: Что такое кластер 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 поддерживает 32- и 64-битную версии Debian/Squeeze.

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

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

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

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

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

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

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

Да, некоторые пользователи EMR в качестве движка обработки данных используют продукты Spark и Shark (размещенный в оперативной памяти движок mapreduce и хранилище данных). Инструкции см. в статье по ссылке.

Вопрос: Участвует ли 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. Плата начисляется только за фактически использованные ресурсы. Например, рассмотрим запуск ста стандартных малых инстансов Amazon EC2 в кластере Amazon EMR. Стоимость Amazon EMR составляет дополнительные 0,015 USD в час. Инстансы Amazon EC2 начнут загружаться немедленно, но необязательно начнут работу одновременно. Amazon EMR отслеживает время запуска каждого инстанса и регистрирует его в кластере, чтобы инстанс мог принимать задания по обработке.

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

Итак, если в вышеприведенном примере все сто запрашиваемых инстансов становятся доступны в течение десяти минут после отправки запроса о запуске, с вас будет взиматься 1,50 USD в час (100 * 0,015 USD) до завершения работы кластера. Если в течение десяти минут станут доступны только девяносто инстансов, с вас будет взиматься 1,35 USD в час (90 * 0,015 USD) до тех пор, пока в вашем кластере работает именно такое количество инстансов. После регистрации оставшихся десяти инстансов с вас будет взиматься 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 EMR из хранилища Amazon S3.

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

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

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

Amazon EMR поддерживает 12 типов инстансов EC2, включая стандартные инстансы, инстансы с преобладанием ЦПУ, инстансы с преобладанием памяти, инстансы вычислительных кластеров, инстансы с преобладанием ресурсов ввода-вывода и инстансы с преобладанием ресурсов хранилищ. У стандартных инстансов отношение ресурсов памяти к ресурсам ЦПУ таково, что они подходят для большинства приложений общего назначения. Инстансы с преобладанием ЦПУ обладают пропорционально большим объемом ресурсов ЦПУ, чем оперативной памяти (RAM), и подходят для приложений с высокой интенсивностью вычислений. Инстансы с преобладанием памяти предоставляют большой объем памяти для приложений с высокой пропускной способностью. Инстансы вычислительных кластеров обладают довольно большим объемом ресурсов ЦПУ и повышенной сетевой производительностью, благодаря чему идеально подходят для приложений, поддерживающих высокопроизводительные вычисления, а также для других ресурсоемких приложений, привязанных к сети. Инстансы с преобладанием ресурсов хранилища обеспечивают 48 ТБ хранилища на двадцати четырех дисках и прекрасно подходят для приложений, требующих последовательного доступа к огромным наборам данных, таким как приложения хранения данных и обработки логов. Подробные сведения о доступных типах инстансов и ценах в разных регионах см. на странице цен 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 инстансы Microsoft Windows?

В настоящее время Amazon EMR поддерживает 32- и 64-битные версии инстансов Debian/Lenny, однако мы прислушиваемся к отзывам наших пользователей и со временем добавим новые возможности решения ваших задач по обработке данных.

Вопрос: Что собой представляют установочные скрипты 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?

Чтобы начать работу, ознакомьтесь с нашим руководством или обучающим видео, которые вы найдете по ссылке: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862

Вопрос: Есть ли в 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, описанного на веб-странице http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html.

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

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

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

При обновлении запускается требуемый набор пакетов из дистрибутива стабильной версии Debian, который включает обновления безопасности. Обновление пакетов выполняется при появлении обновлений в Debian/stable. Версия пакетов «r-recommended» образов AMI соответствует версии Debian/stable (http://packages.debian.org/search?keywords=r-recommended).

Вопрос: Можно ли устанавливать обновления своих пакетов в кластерах 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?

Лучше всего начать с просмотра обучающих видео: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269.

Вопрос: Предоставляет ли пакет 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) Дополнительная функция Piggyback для обработки типов String и DateTime. Информация доступна на веб-странице http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730.

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

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

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

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

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

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

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

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

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

  • Анализ лога потоковой передачи: можно анализировать веб-журналы потоковой передачи для создания списка 10 самых распространенных типов ошибок каждые несколько минут по региону, браузеру и домену доступа.
  • Комплексные процессы обработки данных: можно объединить потоки 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 требуется исполнять каждые 10 минут. Кроме того, предположим, что некие данные записывались в поток после исполнения предыдущей итерации (10 минут назад). В текущий момент новые записи не поступают, то есть в потоке наступила тишина. В таком случае при запуске текущей итерации запроса библиотека Kinesis не обнаружит новых записей. Библиотека будет опрашивать поток в течение двух минут и, если новых записей не поступит, обработает только те, которые уже были прочитаны в текущем пакете потока. Однако, если новые записи начнут поступать перед истечением параметра kinesis.nodata.timeout, библиотека будет ждать дополнительное время, соответствующее значению параметра kinesis.iteration.timeout. Информацию об определении этих параметров см. в учебных материалах.

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

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

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

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

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

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

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

Производительность потока Kinesis зависит от размера инстанса и размера записи в потоке Kinesis. Для данной функции рекомендуется использовать инстансы размера m1.xlarge или более как для ведущего, так и для базовых узлов.

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