Веб-разработчик, облачные технологии
25,7
рейтинг
6 ноября 2013 в 09:13

Разработка → Кластеры Hadoop по запросу из облака: внутреннее устройство, первые шаги, задачи, Hive перевод tutorial

image
Некоторое время назад, в рамках конференции Strata + Hadoop World был анонсирован выход в коммерческой эксплуатацию Windows Azure HDInsight — облачного сервиса 100% совместимого с Apache Hadoop. Подробности о истории появления сервиса и его возможностях можно найти в этой статье на Хабре. Об анонсах конференции Strata + Hadoop World можно прочитать в другой свежей статье.

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

Windows Azure HDInsight предлагает следующие преимущества для своих пользователей:

  • Работа с большими данными с помощью знакомых инструментов: благодаря глубокой интеграции с инструментами бизнес-аналитики от Microsoft, такими как PowerPivot, Power View и Excel, сервис HDInsight позволяет вам легко анализировать ваши данные с помощью возможностей Hadoop. Прозрачно объединяйте данные из различных источников данных, включая HDInsight с помощью Power Query. Легко анализируйте и визуализируйте географические данные с помощью Power Map – новый картографический 3D-инструмент в Excel 2013;
  • Гибкость – HDInsight предлагает гибкость соответствующую изменениям потребностей вашей организации. С богатым набором скриптов PowerShell вы можете размещать и администрировать кластер Hadoop за считанные минуты вместо привычных часов или даже дней. Если вам нужен кластер большего размера, просто удалите существующий и создайте новый нужного размера в течении нескольких минут без потери каких либо данных;
  • Hadoop корпоративного уровня: HDInsight предлагает безопасность и управляемость корпоративного уровня. Благодаря выделенному узлу Secure Node, сервис HDInsight помогает обезопасить ваш кластер Hadoop. В дополнение, мы упростили управление вашим кластером Hadoop с помощью внушительного набора скриптов PowerShell;
  • Богатые возможности для разработчиков: сервис HDInsight предлагает мощные возможности для разработки приложений с богатым выбором языков, включая .NET, Java и другие. Разработчики на платформе .NET могут воспользоваться мощью запросов LINQ to Hive.

О Windows Azure HDInsight


Windows Azure HDInsight – 'это 100% совместимый дистрибутив Apache Hadoop доступный на платформе Windows Azure в качестве сервиса. Вместо того чтобы строить свой собственный дистрибутив, компания Microsoft выбрала партнерство с Hortonworks для портирования Apache Hadoop на платформу Windows. Micrsoft вложила более 6000 человекочасов и более 25000 строк кода в различные проекты в рамках Apache относящиеся к экосистеме Hadoop.



Одним из самых заметных вкладов Microsoft является разработка Windows Azure Storage-Blob (WASB) – тонкой прослойки, которая представляет блоки блобов хранилища Windows Azure в виде файловой системы HDFS вашего кластера Windows Azure HDInsight. Microsoft так же активно участвует и вкладывает усилия в проект Hive Stinger и работает над тем, чтобы достигнуть лучшей интеграции безопасности на платформе Windows.

Архитектура кластера в облаке, получаемого по запросу в виде сервиса представлена на следующей картинке:



На рисунке представлены следующие элементы:

Secure Role или Gateway Node – реверсивный прокси, который работает в качестве шлюза вашего кластера Hadoop. Secure Role отвечает за задачи аутентификации и авторизации и предоставляет конечные точки для WebHcat, Ambari, HiveServer, HiveServer2 и Oozie на 433 порту. Для того, чтобы подключиться к кластеру вы используете свои учетные данные указанные при создании кластера;

Head Node – это узел представленный виртуальной машиной уровня Extra Large (8 ядер, 14 GB RAM). В HDInsight Head Node выполняет важную роль, беря на себя ключевые функции кластера Hadoop: NameNode, Secondary NameNode и JobTracker. Head Node содержит в себе и выполняет следующие операционные сервисы и сервисы данных:

  • HiveServer and HiveServer2
  • Pig
  • Sqoop
  • Metastore
  • Derbyserver
  • Oozie
  • Templeton
  • Ambari

Worker Nodes – это узлы представленные виртуальными машинами уровня Large (4 ядра, 7 GB RAM). Worker Roles отвечают за запуск сервисов, которые поддерживают планирование задач, исполнение задач и доступ к данным:

  •     TaskTracker
  •     DataNode
  •     Pig
  •     Hive Client

Windows Azure Storage-BLOB (WASB) – файловая система по умолчанию в вашем кластере Windows Azure HDInsight представлена в виде хранилища Windows Azure Blob Storage. Microsoft реализовал тонкую прослойку поверх Blog Storage, которая представляет хранилище в виде файловой системы HDFS, которую мы называем Windows Azure Storage-Blob или WASB.



Отличная новость состоит в том, что вы можете взаимодействовать с WASB с помощью команд DFS используя Blob Storage REST API или через многочисленные популярные утилиты.

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

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

Наконец, хранение данных в WASB позволит вам поделиться ими с другими облачными сервисами или приложениями запущенными вне вашего кластера. Верно и обратное: хранимые в Windows Azure Storage данные из других сервисов могут быть c легкостью получены в кластер HDInsight.

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

Local HDFS – кроме WASB в кластере HDInsight вам также доступно и локальное хранилище HDFS, однако его использование не поощряется, так как оно более затратное (работа с ним приравнивается к работе кластера) и все что храниться в локальном HDFS будет удалено вместе с кластером, когда вы от него отказываетесь.

Версии приложений доступные в HDInsight. На сегодня внутри кластера Hadoop в сервисе HDInsight вам по запросу доступны следующие версии приложений и сервисов:
Компонент
Версия
Apache Hadoop
1.2.0
Apache Hive
0.11.0
Apache Pig
0.11
Apache Sqoop
1.4.3
Apache Oozie
3.2.2
Apache HCatalog
Merged with Hive
Apache Templeton
0.1.4
SQL Server JDBC Driver
3.0
Ambari
API v1.0
Вы всегда можете найти актуальную информацию о версиях компонент кластера HDInsight по следующей ссылке.

Начало работы с HDInsight


Кластер HDInsight может быть создан из портала управления Windows Azure выбрав в меню Data Services пункт HDInsight. Для того чтобы создать кластер вам понадобиться указать наименование, размер кластер и количество узлов данных (Data Nodes), пароль для доступа к кластеру.

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



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

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



Запуск первой задачи Map/Reduce для вашего кластера


Перед тем как вы запустите в кластере свою первую задачу вам потребуется подготовить ваше окружение для исопльзования командлетов PowerShell. Для работы с этими командлетами вам нужно установить Windows Azure Powershell и HDInsight PowerShell. Для этого просто перейдите по ссылкам на “Шаге 1” вашей приветственной страницы в панели управления кластером Windows Azure.

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

Запустите пример с помощью следующих команд для того, чтобы создать определения задачи (job definition). Определние задачи содержит всю информацию, необходимую для задачи, например, какие мэпперы (mappers) или редьюсеры (reducers) использовать, какие данные использовать в качестве входных и где размещать выходные данные. В примере кода мы используем программу MapReduce и тестовый файл, который уже содержится в кластере. Мы так же создадим директорию для сохранения выходных данных.
$jarFile = "/example/jars/hadoop-examples.jar"

$className = "wordcount"

$statusDirectory = "/samples/wordcount/status"

$outputDirectory = "/samples/wordcount/output"

$inputDirectory = "/example/data/gutenberg"

$wordCount = New-AzureHDInsightMapReduceJobDefinition -JarFile $jarFile -ClassName 
 
$className -Arguments $inputDirectory, $outputDirectory -StatusFolder $statusDirectory
Выполните следующие команды для того чтобы получить информацию о вашей подписки на Windows Azure и для того, чтобы начать выполнение программы MapReduce. Задачи MapReduce обычно длятся продолжительное время, здесь мы используем пример для демонстрации того, как использовать асинхронные команды для старта выполнения задачи.
$subscriptionId = (Get-AzureSubscription -Current).SubscriptionId

$wordCountJob = $wordCount | Start-AzureHDInsightJob -Cluster HadoopIsAwesome -

Subscription $subscriptionId  | Wait-AzureHDInsightJob -Subscription $subscriptionId
Наконец, выполните следующую команду для получения и отображения всех результатов выполнения задачи.
Get-AzureHDInsightJobOutput -Subscription (Get-AzureSubscription -Current).SubscriptionId 
-Cluster bc-newhdstorage -JobId $wordCountJob.JobId –StandardError
Результат этой команды и вывод информации о выполнении задачи вы увидите в терминале, так как показано ниже.



Выходные данные задачи были размещены в вашем хранилище в директории "/samples/wordcount/output”. Откройте средство просмотра хранилища в портале Windows Azure и перейдите к этому файлу чтобы скачать его и изучить содержимое.



Создание первой Hive-задачи


На стартовой странице есть примеры команд для подключения к кластеру и запуску Hive-задач. Щелкните на кнопку Hive в переключателе Job Type для доступа к примеру.



Запустите следующую команду для подключения к вашему кластеру.
Use-AzureHDInsightCluster HadoopIsAwesome (Get-AzureSubscription -Current).SubscriptionID
Затем выполните следующую команду для запуска запроса HiveQL к кластеру. Этот запрос использует тестовую таблицу, которая уже размещена в кластере при его создании.
Invoke-Hive "select country, state, count(*) as records from hivesampletable group by country, state order by records desc limit 5"
Этот запрос – пример простого запроса с select и group by, после его выполнения вы увидите результаты в окне PowerShell:



Узнать о Windows Azure HDInsight больше


В этой статье мы рассмотрели насколько это простая задача – создать и запустить кластер HDInsight и начать анализировать свои данные. Но HDInsight предлагает значительно больше возможностей, которые вы можете изучить, например, загрузку своих собственных наборов данных, запуск сложных изощренных задач и анализ результатов. Для того чтобы узнать больше о том, как работать с HDInsight посетите страницу с документацией или используйте следующие прямые ссылки на статьи (на англ.):


Статьи на русском доступны на портале AzureHub.ru:


Для информации о ценах сервиса Windows Azure HDInsight посетите эту страницу.
В  статье частично была использована информация из этой статьи официального блога.

Примеры использования Windows Azure HDInsight


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

Город Барселона выбрал инструменты бизнес-аналитики и обработки больших данных от Microsoft, в том числе Windows Azure HDInsight. Анонс и подробное описание примера;

Политехнический институт Вирджинии использует HDInsight для обработки данных генома. Подробное описание примера;

Датская исследовательская организация Chr. Hansen разработчик натуральных ингредиентов для продуктовых, фармакологических и сельскохозяйственных производств исопльзует Windows Azure HDInsight для увеличения скорости обработки данных в 100 раз по сравнению со своим прошлым способом. Подробное описание примера.

Компания 343 Industries — разработчики игры Halo 4 используют Windows Azure HDInsight для проведения аналитических исследований на основе данных полученных от более 50 миллионов проданных экземпляров игр серии Halo для того, чтобы сделать онлайн-сервисы еще лучше. Подробное описание примера.

Медицинская компания Ascribe Ltd из Великобританнии – лидер в своей области – использует Windows Azure HDInsight для улучшения качества клинических исследований, предлагая исследователям значительно более быстрый способ обрабатывать данные большого объема из большого числа источников. Подробное описание примера.

Полезные ссылки


Ниже вы найдете ссылки на ресурсы, которые помогут вам в использовании облачной платформы Microsoft:


А если вы уже разрабатываете на Windows Azure  или хотите найти разработчиков своего сервиса, посетите сервис appprofessionals.ru.

Мы будем рады ответить на ваши  вопросы по адресу azurerus@microsoft.com. И ждем вас в Сообществе Windows Azure на Facebook. Здесь вы найдете экспертов (не забудьте задать им вопросы), фотографии и много-много новостей.
Перевод: Windows Azure Team
Владимир @XaocCPS
карма
776,6
рейтинг 25,7
Веб-разработчик, облачные технологии
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (0)

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