Microsoft Azure
Облачный бизнес
Вам понадобится

Microsoft Azure

Попробуйте платформу Microsoft Azure совершенно бесплатно.

Visual Studio

Бесплатная версия Visual Studio, позволяющая создавать приложения для платформы Microsoft Azure.

SDKs и дополнительные
инструменты

Инструменты разработки приложений для платформы Microsoft Azure.

Введение в HDInsight

HDInsight Services for Microsoft Azure — это сервис, позволяющий работать с кластером Apache Hadoop в Облаке, предоставляющий программную среду для операций управления, анализа и отчетности по Большим Данным. 

Я не буду подробно останавливаться на возможностях Hadoop. Он был впервые представлен в 2005 г. в составе проекта Apache Software Foundation и представляет собой программную платформу распределенной обработки значительных объемов данных. Скажем, петабайтный размер не является для нее препятствием. Платформа Hadoop основана на распределенной файловой системе HDFS (Hadoop Distributed File System), реализованной на кластере Hadoop. В состав кластера входят узлы, хранящие фрагменты файлов (DataNode). Теоретически могут быть сотни и тысячи таких узлов, основанных на недорогих вычислительных платформах (commodity hardware). Для обеспечения высокой надежности поддерживается избыточность путем создания копий фрагментов между узлами. Знаниями о том, на каком узле данных какая реплика лежит, обладает NameNode. Со стороны клиента это выглядит, как обычная древовидная файловая система. Сам NameNode не выполняет основные операции ввода-вывода. Он лишь снабжает клиента метаданными о местоположении первичной реплики фрагмента. Репликация фрагментов осуществляется автоматически. В случае выхода из строя первичной реплики фрагмента одна из его вторичных реплик назначается первичной и на дополнительном узле также автоматически создается еще одна копия. Масштабируемость на значительные объемы данных достигается за счет параллельной обработки фрагментов. Исторически в разработке Google Labs проект Hadoop был ориентирован на задачи поиска и классификации Интернет-контента. Например, функция Map получает на вход набор данных и преобразует его в список пар ключ/значение. Функция Reduce выполняет обратную операцию, сворачивая список путем группировки его по ключам. В целях распараллеливания может быть создано множество экземпляров таких функций, каждый обрабатывающий свой фрагмент. Узлы, на которых хранятся входные фрагменты файлов и запускаются обрабатывающие их экземпляры MapReduce, носят название TaskTracker, а координирующий экземпляры узел – JobTracker. Количество экземпляров определяется количеством и местоположением фрагментов. Помимо поисковых, под данный шаблон попадает множество иных типов задач обработки данных. Существуют построенные поверх HDFS и MapReduce проекты Pig, Hive, Mahout, Pegasus и др., предоставляющие более высокий уровень абстракции и позволяющие решать задачи управления потоками данных, запросные, аналитические задачи, а также задачи отыскания скрытых закономерностей (data mining), характерные для хранилищ (data warehouses), которые традиционно строятся на серверах управления базами данных, реляционной модели и того или иного диалекта языка запросов SQL. Взаимодействие не менее традиционно осуществляется при помощи ODBC-драйверов.

Осенью прошлого года на конференции Pass Summit 2011 в Сиэтле было объявлено о выпуске Hadoop Connector для Microsoft SQL Server, облегчающего обмен данными между двумя системами. Кроме того, в партнерстве с компанией HortonWorks в настоящее время предоставляется предварительная ознакомительная версия Microsoft Azure HDInsight Service и Microsoft HDInsight Server for Windows, 100%-совместимая с открытыми стандартами Apache Hadoop. Скачать HDInsight Server под Windows можно  здесь. Чтобы попробовать HDInsight Service в Облаке, нужно зарегистрироваться на тестирование  здесь.
В качестве пререквизитов необходимо иметь облачную учетную запись Microsoft. Эккаунты в рамках программ MSDN, BizSpark, DreamSpark работают. В рамках предварительной версии доступно создать кластер Hadoop из 3-х узлов с общим объемом дискового пространства 1.5 ТБ. Кластер будет жить 5 суток с момента создания. После этого вся конфигурация и содержимое будут потеряны, придется создавать заново. Из начальных данных требуется указать DNS-имя (оно, понятно, должно быть уникальным) и административный логин/пароль. Использование Microsoft Azure SQL Database для хранения метаданных нам на первых порах не понадобится, но на всякий случай обратите внимание, что такая возможность есть и база (в том случае, если вы захотите ей воспользоваться) должна быть создана заранее. Жмем на кнопку Request Cluster в правой нижней части экрана:


Рис.1

Проходит несколько минут, и Cluster Status = Deploying изменяется на Running, после чего его можно использовать. 


Рис.2

Жмем на ссылку Go to Cluster. Из Web-интерфейса можно перейти в интерактивная консоль выполнения JavaScript и Hive-команд, сессию удаленного доступа, сконфигурировать порты для взаимодействия по ODBC, создать задание, посмотреть историю выполнения заданий, ознакомиться с типовыми примерами использования Hadoop. По кнопке Downloads в настоящее время имеется возможность установить на локальную машину x86 или х64 HiveODBC-драйверы. Кнопка Manage Cluster позволяет контролировать размер использованного дискового пространства, а также задать папки в Microsoft Azure BLOB Service, которые можно рассматривать как сторидж (Azure Storage Vault), альтернативный дисковому пространству кластера для нативных процессов Hadoop. Например, в качестве входного и выходного местоположения для MapReduce. Если что-то фатально напортачили, кластер можно пересоздать, зайдя на www.hadooponazure.com/ и нажав кнопку Release Cluster. 


Рис.3

Установим соединение через Remote Desktop, кликнув на соответствующую плитку в экране портала. Для авторизации используется учетная запись, заданная на Рис.1.


Рис.4

Можно видеть, что в качестве базовой операционной системы используется 64-битная редакция Windows Server 2008R2 Enterprise SP1. Она установлена на партиции D:. Для открытия командного окна Hadoop запустим Start -> Run -> 

D:\Windows\system32\cmd.exe /k pushd

"c:\apps\dist\hadoop-1.1.0-SNAPSHOT" &&

"c:\apps\dist\hadoop-1.1.0-SNAPSHOT\bin\hadoop.cmd"

Создадим в HDFS каталог для будущих экспериментов и подкаталог, куда будут размещены входные данные:

hadoop fs -mkdir Sample1/input

Для получения интерактивной справки java FsShell следует набрать hadoop fs -help.
Перенесем в подкаталог input файл Sample.log, который понадобится для дальнейшей иллюстрации работы Hadoop. Этот файл представляет собой некоторый абстрактный журнал слабоструктурированного формата, содержащий строки с признаками TRACE, DEBUG, INFO, FATAL и т.д. Его можно взять из примеров HortonWorks по адресу gettingstarted.hadooponazure.com/hw/sample.log. Это не терабайтный лог, он имеет скромный размер ~100 КБ, но для иллюстрации, скажем, MapReduce сгодится. Для простоты скачаем его начально в директорию Windows на кластере HDInsight, скажем, d:\Temp. Интернет на Windows-машине, с которой установлено удаленное подключение, имеется. Сразу будет предложено обновить Internet Explorer, но для наших последующих задач это несущественно. Загрузим Sample.log в HDFS. Для копирования из локальной файловой системы используется свитч -put:

hadoop fs -put

d:\Temp\Sample.log Sample1/input/

Убеждаемся, что он загрузился:

hadoop fs -ls Sample1/input/


Рис.5

Далее будут рассмотрены базовые возможности MapReduce на примере анализа Sample.log


Автор статьи: Алексей Шуленин.