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-драйверов.
Осенью прошлого года на конференции 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в правой нижней части экрана:
Рис.1
Проходит несколько минут, и ClusterStatus= Deployingизменяется на Running, после чего его можно использовать.
Рис.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.
Рис.3
Установим соединение через RemoteDesktop, кликнув на соответствующую плитку в экране портала. Для авторизации используется учетная запись, заданная на Рис.1.
Рис.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/
Рис.5
Далее будут рассмотрены базовые возможности MapReduceна примере анализа Sample.log, а пока всех с наступающим!