Введение в HDInsight

 

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

 

Hа конференции Pass Summit 2011 в Сиэтле было объявлено о выпуске Hadoop Connector для MicrosoftSQLServer, облегчающего обмен данными между двумя системами. Кроме того, в партнерстве с компанией HortonWorks в настоящее время предоставляется предварительная ознакомительная версия Windows Azure HDInsight Service и Microsoft HDInsight Server for Windows, 100%-совместимая с открытыми стандартами ApacheHadoop. Скачать HDInsightServer под Windows можно здесь. Чтобы попробовать HDInsight Service в Облаке, нужно зарегистрироваться на тестирование здесь.

 

В качестве пререквизитов необходимо иметь облачную учетную запись Microsoft. Эккаунты в рамках программ MSDN, BizSpark, DreamSpark работают. В рамках предварительной версии доступно создать кластер Hadoop из 3-х узлов с общим объемом дискового пространства 1.5 ТБ. Кластер будет жить 5 суток с момента создания. После этого вся конфигурация и содержимое будут потеряны, придется создавать заново. Из начальных данных требуется указать DNS-имя (оно, понятно, должно быть уникальным) и административный логин/пароль. Использование WindowsAzureSQLDatabase для хранения метаданных нам на первых порах не понадобится, но на всякий случай обратите внимание, что такая возможность есть и база (в том случае, если вы захотите ей воспользоваться) должна быть создана заранее. Жмем на кнопку RequestCluster в правой нижней части экрана:

 

image001

Рис.1

 

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

 

image002

Рис.2

 

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

 

image003

 

Рис.3

 

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

 

image004

Рис.4

 

Можно видеть, что в качестве базовой операционной системы используется 64-битная редакция WindowsServer 2008R2 EnterpriseSP1. Она установлена на партиции 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

 

Для получения интерактивной справки javaFsShell следует набрать hadoopfs -help.

 

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

 

hadoop fs -put d:\Temp\Sample.log Sample1/input/

 

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

 

hadoop fs -ls Sample1/input/

 

image005

 

Рис.5

 

Далее будут рассмотрены базовые возможности MapReduce на примере анализа Sample.log, а пока всех с наступающим!