Статьи

Выполнение рабочего процесса Elive MapReduce Hive из консоли управления AWS

Фон

Amazon Web Services (AWS) представили свою функцию Elastic MapReduce (EMR) с сообщением об объявлении Amazon Elastic MapReduce, опубликованном Джеффом Барром 2 апреля 2009 года:

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

За последние 3 или 4 года ученые, исследователи и коммерческие разработчики признали и приняли модель программирования MapReduce . Изначально описанная в знаковой статье , модель MapReduce идеально подходит для обработки больших наборов данных на кластере процессоров. Легко масштабировать приложение MapReduce до заданий произвольного размера, просто добавляя больше вычислительной мощности. Вот очень простой обзор потока данных в типичном задании MapReduce:

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

Hadoop — это реализация модели программирования MapReduce с открытым исходным кодом. Если у вас есть оборудование, вы можете следовать указаниям, приведенным в документации по установке кластера Hadoop, и, если повезет, вскоре начать работу.

Следующие три более ранних публикации OakLeaf охватывают предварительный просмотр Apache Hadoop группы Microsoft SQL Server в Windows Azure (также известный как HadoopOnAzure):

В этом руководстве предполагается, что у вас есть учетная запись AWS и вы знакомы с Консолью управления AWS, но не требуется предварительное знание Apache Hadoop, MapReduce или Hive.


Использование образца контекстной рекламы AWS для создания файла feature_index

Контекстная реклама — это название примера приложения AWS Apache Hive. Контекстная реклама Amazon с использованием Apache Hive и статьи Amazon EMR от 25.09.2009, последнее обновление от 15.02.2012, описывает пример сценария приложения следующим образом:

Компания, занимающаяся интернет-рекламой, управляет хранилищем данных, используя Hive и Amazon Elastic MapReduce. Эта компания использует в Amazon EC2 компьютеры, которые обслуживают показы рекламы и перенаправляют клики на рекламируемые сайты. Машины, работающие в Amazon EC2, сохраняют каждое впечатление и щелкают в файлах журналов, отправляемых в Amazon S3.

Хранение логов на Amazon S3

Машины для показа рекламы создают два типа файлов журналов: журналы показов и клики. Каждый раз, когда мы показываем рекламу покупателю, мы добавляем запись в журнал показов. Каждый раз, когда клиент нажимает на объявление, мы добавляем запись в журнал кликов.

Каждые пять минут рекламные автоматы отправляют файл журнала, содержащий последний набор журналов, на Amazon S3. Это позволяет нам производить своевременный анализ журналов. См. Следующую статью о мониторинге работоспособности программ показа объявлений: http://aws.amazon.com/articles/2854.

Машины рекламного сервера помещают свои журналы показов в Amazon S3. Например:

  s3://elasticmapreduce/samples/hive-ads/tables/impressions/
  dt=2009-04-13-08-05/ec2-12-64-12-12.amazon.com-2009-04-13-08-05.log

We put the log data in the elasticmapreduce bucket and include it in a subdirectory called tables/impressions. The impressions directory contains additional directories named such that we can access the data as a partitioned table within Hive. The naming syntax is [Partition column]=[Partition value]. For example: dt=2009-04-13-05.
Запуск процесса разработки

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

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

Есть два способа запустить интерактивный поток работ. Вы можете использовать интерфейс командной строки Amazon Elastic MapReduce, доступный по адресу http://aws.amazon.com/developertools/2264, или использовать консоль управления AWS, доступную по адресу http://console.aws.amazon.com.

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

Создание корзины S3 для хранения выходных файлов Feature_index приложения Hive

1. Перейдите по адресу http://console.aws.amazon.com , перейдите на вкладку S3 Консоли управления, чтобы открыть страницу Buckets, выберите Create Bucket в списке Actions, чтобы открыть форму с тем же именем, введите имя для bucket. и выберите ближайший к вам регион:

образ

2. Нажмите Создать, чтобы создать корзину, закройте форму и перейдите на вкладку Elastic MapReduce.

Зарегистрируйте учетную запись EMR, если это необходимо

3. Если вы еще этого не сделали, вам будет предложено зарегистрировать учетную запись EMR:

образ

4A. Нажмите кнопку «Зарегистрироваться в Elastic MapReduce», чтобы открыть страницу «Подтверждение личности по телефону», введите номер телефона, к которому у вас есть немедленный доступ, номер телефона и нажмите «Продолжить».

4В. Как правило, менее чем за минуту, робот-координатор попросит вас написать или сказать четырехзначный проверочный код, который отображается на шаге 2. Если он верен, шаг 3 будет отображаться так, как показано здесь:

образ

4C. Нажмите «Продолжить», чтобы отобразить страницу «Обновление учетной записи»:

образ

5. При получении электронного письма следуйте его инструкциям, чтобы вернуться на домашнюю страницу консоли управления EMR:

образ

Добавьте файл feature_index в корзину с помощью запроса Hive

6. Выберите тот же регион, который вы выбрали для группы S3 для размещения проекта, и нажмите кнопку «Создать новый поток работ», чтобы открыть форму «Создать новый поток работ». Введите Имя потока работ, выберите «Запустить образец приложения» и выберите «Контекстная реклама» (скрипт Hive) из списка:

образ

7. При желании нажмите ссылку «Подробнее», чтобы открыть контекстную рекламу с использованием учебника Apache Hive и Amazon EMR, упомянутого в начале этого раздела:

образ

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

образ

7. Замените заполнитель <yourbucket> на имя контейнера, указанное вами на шаге 1:

образ

8. Нажмите «Продолжить», чтобы открыть страницу «Настройка экземпляров EC2» и принять значения по умолчанию для групп «Основной» (1), «Основной» (2) и «Задача» (0):

образ

Примечание . Вам будет выставлен счет за использование не менее одного часа трех экземпляров EC2 Linux / UNIX = 0,27 долл. США за обработку плюс очень небольшую сумму за передачу данных. Ниже приведен отчет об использовании сеанса, описанного в этой статье:

образ

Операции куста из консоли управления автоматически прекращаются после сохранения окончательных данных в S3.

9. Нажмите «Продолжить», чтобы открыть страницу «Дополнительные параметры». Если вы хотите настроить или запустить задания из командной строки, примите ваши стандартные (или другие) пары ключей и оставшиеся значения по умолчанию:

образ

10. Нажмите «Продолжить», чтобы открыть страницу «Действия Bootstrap» и принять опцию «No Bootstrap Actions» по умолчанию:

образ

11. Нажмите Продолжить, чтобы открыть страницу обзора:

образ

Примечание . Префикс s3n DNS представляет собственный (а не блочный) формат файла S3, что важно, когда вы используете Amazon S3 в качестве источника данных для интерактивных операций Hive с предварительным просмотром Apache Hadoop в Windows Azure в Windows Azure, который будет представлен ниже в этом руководстве.

12. Нажмите Создать поток работ, чтобы закрыть форму и запустить рабочий процесс:

образ

13. Примерно через 10 минут для подготовки экземпляров состояние меняется на RUNNING:

образ

14. Еще через 8 минут для обработки рабочего процесса состояние изменяется на SHUTTING_DOWN:

образ

15. Еще через пару минут состояние изменится на ЗАВЕРШЕНО, а аргументы для операции Hive появятся в столбце Args нижней панели:

образ

16. Перейдите на вкладку S3, выберите <YourBucket> на панели навигации, дважды щелкните имена папок, чтобы перейти в папку <YourBucket> / hive -ads / output / <Date> / feature_index , нажмите кнопку «Свойства» и вкладку «Разрешения». нажмите «Добавить дополнительные разрешения», выберите «Все» в списке «Получатель гранта» и установите флажок «Список», чтобы предоставить общедоступное разрешение на просмотр файла [ов] в этой папке. Выберите файл 00000 , снова нажмите «Добавить дополнительные разрешения», выберите «Все» и установите флажок «Открыть / загрузить», чтобы предоставить общедоступный доступ к файлу:

образ

17. Нажмите Сохранить, чтобы сохранить изменения. Если у вас есть редактор текстовых файлов, который хорошо работает с большими (~ 100 МБ) файлами, такими как TextPad, дважды щелкните имя файла, сохраните его в папке «Загрузки» и откройте его в текстовом редакторе:

образ

Примечание . Формат документа — Apache Hadoop SequenceFile , стандартный формат таблиц Hive, в данном случае несжатый. Вы можете импортировать этот формат в таблицы Hive с помощью команды CREATE EXTERNAL TABLE с модификатором STORED AS SEQUENCEFILE , как описано далее в этом руководстве.


Создание интерактивного Hadoop в таблице кустов Azure из файла Amazon Feature_index

В моем руководстве « Использование данных из больших двоичных объектов Windows Azure с Apache Hadoop для Windows Azure CTP» , упомянутом ранее, описывается, как указать большой двоичный объект Windows Azure в качестве источника данных для интерактивного запроса Hive с помощью предварительного просмотра HadoopOnAzure команды SQL Server. В этом разделе описывается аналогичный процесс, который заменяет файл, созданный на предыдущих этапах, в качестве источника данных таблицы Hive.

В этом разделе предполагается, что вы получили приглашение протестировать Apache Hadoop в Windows Azure Preview. Если нет, перейдите на эту целевую страницу , нажмите на ссылку приглашения и заполните анкету, чтобы получить код приглашения по электронной почте:

образ

Чтобы настроить источник данных S3 и выполнить запросы HiveQL в интерактивном режиме, выполните следующие действия:

1. Перейдите на целевую страницу HadoopOnAzure (HoA) , нажмите «Войти» и укажите свой Live ID и пароль, чтобы открыть главную страницу HoA (см. Шаг 2), если у вас есть активный кластер, или страницу «Запросить кластер», если вы нет. В этом случае введите глобально уникальный префикс DNS для кластера, выберите размер кластера, введите свой административный логин, пароль и подтверждение пароля:

образ

Примечание . Пароли должны содержать заглавные и строчные буквы и цифры. Символы не допускаются. Когда ваш пароль и подтверждение пройдут проверку, кнопка «Запросить кластер» станет активной. Если большой кластер доступен, выберите его. В течение периода предварительного просмотра плата не взимается.

2. Нажмите кнопку «Запросить кластер», чтобы начать подготовку и отобразить ее статус. Через несколько минут открывается главная страница HoA:

образ

Примечание : срок службы кластера составляет 48 часов; вы можете обновить кластер только в течение последних шести часов жизни. Счет истории заданий будет равен 0, если вы ранее не выполняли задания.

3. Нажмите плитку Управление кластером, чтобы открыть страницу с тем же именем:

образ

4. Нажмите кнопку «Настроить S3», чтобы открыть страницу «Загрузить с Amazon S3», введите свой ключ доступа AWS и секретный ключ и примите стандартную файловую систему S3N по умолчанию:

образ

5. Нажмите «Сохранить настройки», чтобы отобразить сообщение «Успешная загрузка Amazon S3», несмотря на то, что вы ничего не загрузили.

6. Дважды щелкните стрелку назад, чтобы вернуться на главную страницу HoA, щелкните плитку Interactive Console, чтобы открыть консоль, и нажмите кнопку Hive, чтобы выбрать функцию Interactive Hive.

7. Введите следующий запрос HiveQL DDL в текстовое поле внизу страницы, чтобы определить связанную таблицу:

CREATE EXTERNAL TABLE feature_index (
   feature STRING,
   ad_id STRING,
   clicked_percent DOUBLE )
COMMENT 'Amazon EMR Hive Output'
STORED AS SEQUENCEFILE
LOCATION 's3n://oakleaf-emr/hive-ads/output/2012-05-29/feature_index';

 

образ

8. Нажмите кнопку Evaluate, чтобы выполнить запрос и создать связанную таблицу Hive:

образ

Примечание . Данные не загружаются, пока вы не выполните запрос, который возвращает строки. Выполнение SELECT COUNT (*) FROM feature_index указывает, что в таблице 1750 650 строк.

9. Откройте список таблиц, который отображает таблицу, которую вы только что создали, и hivesampletable HoA . Список столбцов отображает список имен столбцов выбранной таблицы.

10. Чтобы отобразить первые 20 строк таблицы, нажмите «Очистить экран», а затем введите и выполните следующий запрос HiveQL:

SELECT * FROM feature_index LIMIT 20

образ

11. В разделе «Применение эвристики» контекстной рекламы AWS с использованием статей Apache Hive и Amazon EMR предлагается выполнить следующий пример запроса HiveQL к таблице feature_index «, чтобы увидеть, как он работает для функций« us: safari »и« ua: хром «»:

SELECT ad_id, -sum(log(if(0.0001 > clicked_percent, 0.0001, clicked_percent))) AS value
FROM feature_index
WHERE feature = 'ua:safari' OR feature = 'ua:chrome'
GROUP BY ad_id
ORDER BY value DESC
LIMIT 100 ; 

Согласно статье:

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

Примечание . Исходный запрос отсортирован по возрастанию; сортировка по убыванию сначала дает более интересные результаты (больше шансов на клик):

образ

Вот существенное содержание скрытой истории улья:

2012-05-30 18:34:58,774 Stage-1 map = 0%, reduce = 0%
2012-05-30 18:35:13,836 Stage-1 map = 1%, reduce = 0%
2012-05-30 18:35:16,852 Stage-1 map = 63%, reduce = 0%
2012-05-30 18:35:19,883 Stage-1 map = 100%, reduce = 0%
2012-05-30 18:35:34,899 Stage-1 map = 100%, reduce = 33%
2012-05-30 18:35:37,930 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201205301808_0002
Launching Job 2 out of 2
Number of reduce tasks determined at compile time: 1
…
2012-05-30 18:36:05,649 Stage-2 map = 0%, reduce = 0%
2012-05-30 18:36:17,664 Stage-2 map = 50%, reduce = 0%
2012-05-30 18:36:20,680 Stage-2 map = 100%, reduce = 0%
2012-05-30 18:36:35,711 Stage-2 map = 100%, reduce = 100%
Ended Job = job_201205301808_0003
OK
Time taken: 133.969 seconds