Microsoft Windows Azure

Бизнес-аналитика и анализ данных с SQL Reporting и Hadoop

Разбить на страницы
Показывать лекцию целиком

Бизнес-аналитика, или Business Intelligence (BI), является важным процессом, во время которого происходит интеграция и консолидация данных в масштабе организации в едином хранилище, к которому пользователи могут выполнять специальные запросы и формировать отчеты для анализа существующих данных. Фактически, целью бизнес-аналитики является именно хранение данных, к которым могут обращаться пользователи, ответственные за принятие бизнес-решения на основе анализа полученных данных. Например, типичным вопросом к системе бизнес-аналитики может быть: "Какая категория продуктов является наихудшей в плане реализации в первом квартале 2013 года?" Наиболее важными свойствами системы бизнес-аналитики являются:

  • Периодические операции записи в результате запросов;
  • небольшое количество пользователей;
  • большой размер данных, хранимых в базе данных.
  • Пользователи систем бизнес-аналитики занимаются генерацией отчетов, отражающих различные факторы, связанные с важными процессами внутри организации (например, финансовыми) или запросов сравнения данных. Системы бизнес-аналитики должны отслеживать историю данных, так как часто пользователи производят сопоставление данных, собранных в различные периоды времени. По этой причине объем данных в хранилище, обычно очень велик, и механизм хранения данных должен обеспечивать достаточное для задач пользователя и оптимальное с позиции выполнения запросов время. На данный момент существует большое количество решений для бизнес-аналитики, лидерами являются корпорации Microsoft и Oracle, предоставляющие мощные движки и механизмы – SQL Server, SQL Reporting и т.д. Локальная версия системы бизнес-аналитики от Microsoft называется SQL Server Reporting Services (SSRS), которая предлагает программную серверную систему создания отчётов. В SQL Server Reporting Services есть возможность генерировать как печатные, так и динамические отчёты, в том числе с использованием Web-служб. SQL Server Reporting Services входит в состав Express, Workgroup, Standard и Enterprise версий Microsoft SQL Server в качестве устанавливаемого дополнения. Отчёты, создаваемые в SQL Server Reporting Services, должны быть описаны с помощью специального подязыка Report Definition Language (RDL), и могут проектироваться при помощи Visual Studio с установленным дополнением Business Intelligence Projects либо при помощи входящего в комплект Report Builder. Отчёты, определенные при помощи RDL, могут быть созданы и сохранены в различных файловых форматах, например, XLS, PDF. Начиная с версии SQL Server 2008 SQL Server Reporting Services предлагает возможность генерации отчетов в формате DOC. RDL-отчёты можно просматривать программным способом с помощью элемента управления ASP.NET ReportViewer, что позволяет встраивать отчёты прямо в приложение или сайт.

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

  • Данные в облаке, бизнес-аналитика локально,
  • Движок и приложение в облаке.
  • Размещение движка и отчётов в облаке позволяют размещать отчёты таким образом, что их можно встраивать как в приложение, так и иметь глобальный доступ с помощью URL.

    К основным сценариям облачной системы бизнес-аналитики, которая называется Windows Azure SQL Databases Reporting, относятся следующие сценарии:

  • Сезонные нагрузки. Например, организация, реализующая некоторые продукты, имеет периодическую задачу генерации отчётов из хранилища данных. Размещение ресурсов, на которых выполняется решение этой задачи, в локальном центре обработки данных влечёт за собой необходимость в расчёте максимальных нагрузок, эффективного использования и т.д. После этого в какие-то моменты осуществляется нагрузка, но большую часть времени ресурсы могут простаивать. В этом случае, когда есть периодическая необходимость генерации отчётов, может быть использован облачный сервис Windows Azure SQL Databases Reporting. После спада пика нагрузки, как и в случае с любыми другими сервисами, можно отказаться от оплачиваемых ресурсов.
  • Сценарий, в котором происходит разделение отчётности между несколькими партнёрами, возникает, когда сгенерированную отчётность необходимо предоставить партнёрской организации. В случае размещения систем аналитики в локальном центре обработки данных партнёру, который должен обеспечить доступ к отчётам, необходимо проводить конфигурацию, настройку безопасности, портов, предоставлять аккаунты и т.д. Если поместить отчёты в облако, процесс значительно упрощается – клиенты и поставщики могут получить доступ к отчетам тогда, когда им это необходимо.
  • Гибридная инфраструктура. Часть данных в локальном центре обработки данных, часть, которую можно публично выставлять, расположена в облаке.
  • Рассмотрим последовательность действий по созданию отчётов с помощью Report Builder и базы данных AdventureWorks, предоставляемой корпорацией Microsoft в тестовых целях.

    Создадим сервер баз данных Windows Azure SQL Databases с помощью портала управления Windows Azure. Подробнее процесс создания описывается в главе 6 "Хранение и обработка данных с Windows Azure Storage и Windows Azure SQL Databases".

    База данных AdventureWorks расположена на CodePlex по адресу http:// http://msftdbprodsamples.codeplex.com/releases/view/37304. В данном примере используется версия AdventureWorks2012ForWindowsAzureSQLDatabase.

    После распаковки архива, содержащего базу данных, необходимо выполнить следующую команду для развертывания базы данных в Windows Azure:

    CreateAdventureWorksForSQLAzure.cmd <servername>.database.windows.net <username> <password>
    

    Развертывание базы данных может занять некоторое время.

    (рис 10.1) Развертывание базы данных

    Создадим сервис Windows Azure SQL Reporting с помощью портала управления Windows Azure. Расположение сервиса в одном регионе с созданным сервером Windows Azure SQL Databases значительно уменьшит задержки при их взаимодействии.

    (рис 10.2) Создание сервиса Windows Azure SQL Reporting с помощью портала управления Windows Azure

    Для генерации отчётов необходимо связать сервис SQL Reporting с источником данных. Добавим источник данных в сервис SQL Reporting.

    (рис 10.3) SQL Reporting

    В открывшемся диалоговом окне необходимо задать логическое название источника данных и его описание. Базу данных для источника данных можно выбрать в выпадающем меню DATABASE.

    (рис 10.4) Создание базы данных

    На следующей странице выберем опцию PROVIDE CREDENTIALS TO BE STORED SECURELY IN THE REPORT SERVER. Введем логин и пароль администратора сервера баз данных.

    (рис 10.5) Добавление администратора базы данных

    Для взаимодействия с сервисом SQL Reporting установим Report Builder, дистрибутив которого можно загрузить с сайта Microsoft: http://www.microsoft.com/ru-ru/download/details.aspx?id=29072.

    После запуска Report Builder (в зависимости от языка установки он может называться "Построитель Отчетов 3.0") подключимся к серверу, нажав "Соединение" в нижней части интерфейса.

    (рис 10.6) Подключение к серверу

    Ссылку, которую необходимо использовать для подключения, можно скопировать на панели управления сервисом.

    После ввода логина и пароля и подключения к серверу изменится статус подключения в нижней части интерфейса.

    (рис 10.7) Текущее подключение к серверу

    Добавим источник данных в Report Builder.

    (рис 10.8) Добавление данных в Report Builder

    В открывшемся окне необходимо выбрать подключенный сервер.

    (рис 10.9) Добавление новых источников данных

    Введем заголовок отчёта, например, "Отчётность по продажам".

    Добавим еще один источник данных, нажав правой кнопкой мыши на уже созданном источнике данных DataSource.

    (рис 10.10) Добавление источника данных

    В открывшемся окне создания набора данных вставим в текстовое поле "Запрос" SQL-запрос для получения данных по продажам:

    SELECT soh.[SalesOrderID],DATEPART(year, soh.[OrderDate]) AS 'Year'
    ,soh.[CustomerID],soh.[TerritoryID],terr.[Name] as 'TerritoryName'
    ,terr.[CountryRegionCode] as 'Country',soh.[TotalDue] as 'TotalSales'
    FROM [Sales].[SalesOrderHeader] AS soh
    JOIN [Sales].[SalesTerritory] AS terr
    ON terr.[TerritoryID] = soh.[TerritoryID]
    ORDER BY 'Year' 
    

    Вставим матрицу для отображения отчёта.

    (рис 10.11) Матрица для отчета

    Выберем созданный набор данных.

    (рис 10.12) Выбранный созданный набор данных

    Сформируем форму отчёта: перенесём Year в "Группы столбцов", Country и TerritoryName в "Группы строк" и TotalSales – в "Значения".

    (рис 10.13) Размещение полей в отчете

    Нажмём "Выполнить" для запуска формирования отчёта.

    (рис 10.14) Запуск формирования отчета

    После выполнения вам будет выведен отчет по продажам за несколько лет.

    (рис 10.15) Пример отчета по продажам

    Сохраните отчет, перейдя обратно в Конструктор. Так как активное подключение принадлежит серверу в Windows Azure, сохранение можно произвести на него.

    (рис 10.16) Сохранение отчета

    После сохранения любой пользователь с необходимыми правами может получить доступ к отчёту, перейдя по ссылке https://[servername].reporting.windows.net/reportserver и введя логин и пароль.

    (рис 10.17) Отчет на портале Azure

    Нажатие на отчёте приведет к его формированию на Windows Azure.

    (рис 10.18) Формирование отчета на Windows Azure

    В сервисе SQL Reporting может быть несколько пользователей, имеющих доступ к сервису, которые должны быть добавлены на вкладке Users на панели управления сервисом.

    (рис 10.19) Доступ нескольких пользователей к отчетам

    Таким образом, облачный сервис SQL Reporting можно использовать для различных сценариев, подразумевающих глобальный удобный доступ к отчётам, виртуально-неограниченные ресурсы и эластичность.

    Анализ данных с Hadoop

    Сервис Windows Azure HDInsight (Hadoop) — это облачный сервис, предлагающий экосистему и создание кластеров Hadoop по запросу пользователя. С помощью портала Windows Azure могут быть созданы и развернуты кластеры Hadoop размером до 32 узлов (необходимо уточнить, что на момент написания сервис Windows Azure HDInsight находится в закрытой Preview-версии). Кроме создания задач MapReduce, разработчик имеет доступ к интерактивной консоли, которая позволяет писать запросы к данным на JavaScript и Hive.

    MapReduce – это параллельное и распределённое решение, разработанное корпорацией Google для обработки больших массивов данных и активно использующееся в таких сферах, как, например, поисковые движки. MapReduce, или M/R, состоит из двух функций-компонентов – Map и Reduce. Первая функция, Map, используется для вычисления наборов ключ-значение. Reduce – функция, получающая результаты вычисления функции Map и применяющая к ним другую функцию. В подходе M/R подразумевается, что между данными нет прям зависимостей, что упрощает процесс параллелизации. Узел-мастер распределяет задачи M/R по обработчикам Map и Reduce, собирая информацию. Все пары ключ-значение с идентичным значением ключа отправляются на обработку на один обработчик.

    Типичным примером использования MapReduce, а значит, и Hadoop, является анализ файлов логов. Для файлов логов обычна ситуация разрастания до очень больших размеров, при этом все файлы соблюдают строгий синтаксис данных, что позволяет применять логику обработки к этим файлам. Несмотря на простоту, однако, обработки, если файлы логов содержат очень большое количество записей, их обработка на одном компьютере может занять долгое время.

    С помощью MapReduce можно разделять большие файлы логов на части. Функция Map ищет уникальные вхождения записей (например, Web-страниц). Каждый раз, когда Web-страница находится в файле, в функцию Reduce поступает ключ-значение,где ключ – Web-страница, а значение – 1. Обработчики функции Reduce агрегируют количество для каждой из Web-страниц, и в результате пользователь получает общее количество входов для каждой из Web-страниц.

    (рис 10.20) Архитектура Hadoop

    Сервис основан на распределенной файловой системе HDFS (Hadoop Distributed File System), реализованной на кластере узлов Hadoop двух видов – Data Node и Name Node. Подобный кластер может быть как гомогенной структуры (с унифицированными характеристиками узлов), так и гетерогенной (большим количеством узлов разных характеристик). Name Nodes содержат информацию о том, на каком из узлов данных (Data Node) содержится конкретная реплика (реплики используются для обеспечения высокой надежности и избыточности), и представляют клиенту эту информацию. При выходе из строя реплики фрагмента одна из его вторичных реплик назначается основной. Масштабируемость на достигается за счет параллельной обработки задач. Task Tracker называются узлы, хранящие входные фрагменты задач (файлов) и запускающие экземпляры выполнения Map/Redurce, координирует же эти экземпляры выполнения узел, носящий название Job Tracker. В различных реальных задачах экосистема Hadoop/HDInsight состоит из гораздо большего количества компонентов и модулей интеграции с другим программным обеспечением и форматами данных.

    (рис 10.21) Экосистема Hadoop/HDInsight

    Данные, используемые HDInsight в задачах, хранятся в Windows Azure Storage в блобах и получаются для обработки по парадигме MapReduce узлом-мастером, который затем распределяет задачи согласно заданной логике по обработчикам. По этой причине для работоспособности кластера необходимо создать и настроить аккаунт хранилища Windows Azure и создать кластер максимально близко к географическому расположению хранилища (для избежания увеличения латентности).

    (рис 10.22) Доступ к хранилищу HDInsight

    Экосистема HDInsight

    Как уже было сказано ранее, сервис HDInsight предоставляет облачный сервис по управлению большими данными. HDInsight имеет собственные реализации Hive и Pig, которые используются для обработки данных и хранения соответственно, а также способен интегрироваться с существующими мощными средствами BI, разработанными Microsoft: SQL Server Analysis Services, Reporting Services, PowerPivot, Excel.

    Говоря о том, что представляет собой Pig, необходимо уточнить, что Pig – это высокоуровневая платформа, которая обеспечивает возможность обработки больших данных в кластерах Hadoop. Pig состоит из специального языка запросов Pig Latin, которые выполняются к массивам данных в консоли, и способен интегрироваться User Defined Functions (UDF) на Java, Python, C# и JavaScript.

    Hive является распределенным сервисом хранения данных "над" HDFS, и предоставляет интерфейс для взаимодействия с данными с помощью SQL запросов на языке HiveQL (поддиалекте SQL) и реляционной модели. Аналогично Pig, Hive трансформирует запрос на собственном языке в задачи Map/Reduce

    Функциональность HDInsight гарантирует также то, что разработчик может использовать уже привычные ему средства, такие как, например, Powershell, .NET, Java, F#, Javascript и Node.js, для разработки, управления и мониторинга происходящего на кластере. Также HDInsight может быть установлен в его локальной версии на серверный продукт Microsoft Windows Server.

    (рис 10.23) Экосистема Hadoop/HDInsight

    Использование HDInsight

    Для того, чтобы начать использование HDInsight, необходимо оставить заявку (сервис находится на момент написания в стадии Preview, то есть требует рассмотрения заявки на использование) на портале управления выбрать HDInsight и нажать на ссылку Preview Program и нажать на кнопку Try it now.

    (рис 10.24) Регистрация в программе HDInsight

    После активации сервиса можно начать создание кластера Hadoop. Для этого нажмем DATA SERVICES | HDINSIGHT | CUSTOM CREATE.

    (рис 10.25) Создание кластера HDInsight

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

    (рис 10.26) Настройка кластера

    На следующей странице введем учетные данные администратора.

    (рис 10.27) Настройка кластера

    На следующей странице выберем опцию создания нового аккаунта хранилища и введем соответствующие данные.

    (рис 10.28) Настройка аккаунта хранилища для кластера

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

    (рис 10.29) Панель управления HDInsight

    Из панели управления можно инициировать сессию удаленного доступа (CONNECT), внутри виртуальной машины создать задачу, посмотреть историю выполнения задач, изучить информацию по Hadoop. Кнопка Manage Cluster позволяет контролировать размер использованного дискового пространства, а также задать папки в Windows Azure блобах, которые можно рассматривать как хранилище (Azure Storage Vault).

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

    (рис 10.30) Панель управления кластером HDInsight

    Создадим задачу Map/Reduce из тестового набора. Для этого нажмем кнопку Samples.

    (рис 10.31) Набор тестовых задач HDInsight

    Нажмем кнопку Pi Estimator. На странице тестовой задачи нажмем Deploy to your cluster. Это приведет к странице, которую можно также вызвать, нажав кнопку Create Job. Будет открыта страница добавления новой задачи, на которой необходимо ввести название задачи, указать JAR-файл задачи и настроить параметры (если таковые есть). В случае тестовой задачи эти данные заполняются автоматически.

    (рис 10.32) Добавление задачи на расчет

    Задача, которую мы запустим, инициирует расчет числа Пи, исходя из 16 Maps (первый параметр в команде) и 10 млн. сэмплов на каждый Map (второй параметр).

    Нажмем Execute Job и дождемся выполнения задачи. После окончания выполнения будут выведены результаты и служебная информация о задаче.

    (рис 10.33) Результат выполнения задачи по вычислению числа Пи

    Воспользуемся интерактивной консолью для расчета скрипта на Javascript (Map/Reduce). В качестве примера возьмем тестовую задачу по подсчету слов. Для этого загрузим скрипт WordCount.js и текстовый файл davinci.txt, зайдя на страницу Samples и нажав на кнопку WordCount.

    (рис 10.34) Описание тестовой задачи WordCount

    Вернемся на главную страницу панели управления кластером и нажмем на кнопку Interactive Console. Обратите внимание, что ту же задачу можно выполнить, нажав Deploy to your cluster.

    Введем в интерактивную консоль команду fs.put() для загрузки файла WordCount.js. Выберем загруженный локально файл. Значение Destination укажем равным ./WordCount.js/. Повторим процедуру для загрузки файла davinci.txt. Значение Destination для davinci.txt укажем равным ./example/data/.

    (рис 10.35)

    Выполним команду, указанную ниже, и, после выполнения задачи, нажмем View Log для просмотра информации о задаче.

    pig.from("/example/data/davinci.txt").mapReduce("WordCount.js", 
    "word, count:long").orderBy("count DESC").take(10).to("DaVinciTop10Words")
    

    Увидеть результаты мы можем, введя команду fs.read("DaVinciTop10Words").

    (рис 10.36) Результат выполнения задачи, созданной в интерактивной консоли

    Подробнее про разработку приложений для HDInsight рассказано в блоге на MSDN: http://blogs.msdn.com/b/benjguin/archive/2012/02/09/analyzing-1-tb-of-iis-logs-with-hadoop-map-reduce-on-azure-with-javascript-analyse-d-1-to-de-journaux-iis-avec-hadoop-map-reduce-en-javascript.aspx

    Заключение

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

    Страницы:

    Бизнес-аналитика, или Business Intelligence (BI), является важным процессом, во время которого происходит интеграция и консолидация данных в масштабе организации в едином хранилище, к которому пользователи могут выполнять специальные запросы и формировать отчеты для анализа существующих данных. Фактически, целью бизнес-аналитики является именно хранение данных, к которым могут обращаться пользователи, ответственные за принятие бизнес-решения на основе анализа полученных данных. Например, типичным вопросом к системе бизнес-аналитики может быть: "Какая категория продуктов является наихудшей в плане реализации в первом квартале 2013 года?" Наиболее важными свойствами системы бизнес-аналитики являются:

  • Периодические операции записи в результате запросов;
  • небольшое количество пользователей;
  • большой размер данных, хранимых в базе данных.
  • Пользователи систем бизнес-аналитики занимаются генерацией отчетов, отражающих различные факторы, связанные с важными процессами внутри организации (например, финансовыми) или запросов сравнения данных. Системы бизнес-аналитики должны отслеживать историю данных, так как часто пользователи производят сопоставление данных, собранных в различные периоды времени. По этой причине объем данных в хранилище, обычно очень велик, и механизм хранения данных должен обеспечивать достаточное для задач пользователя и оптимальное с позиции выполнения запросов время. На данный момент существует большое количество решений для бизнес-аналитики, лидерами являются корпорации Microsoft и Oracle, предоставляющие мощные движки и механизмы – SQL Server, SQL Reporting и т.д. Локальная версия системы бизнес-аналитики от Microsoft называется SQL Server Reporting Services (SSRS), которая предлагает программную серверную систему создания отчётов. В SQL Server Reporting Services есть возможность генерировать как печатные, так и динамические отчёты, в том числе с использованием Web-служб. SQL Server Reporting Services входит в состав Express, Workgroup, Standard и Enterprise версий Microsoft SQL Server в качестве устанавливаемого дополнения. Отчёты, создаваемые в SQL Server Reporting Services, должны быть описаны с помощью специального подязыка Report Definition Language (RDL), и могут проектироваться при помощи Visual Studio с установленным дополнением Business Intelligence Projects либо при помощи входящего в комплект Report Builder. Отчёты, определенные при помощи RDL, могут быть созданы и сохранены в различных файловых форматах, например, XLS, PDF. Начиная с версии SQL Server 2008 SQL Server Reporting Services предлагает возможность генерации отчетов в формате DOC. RDL-отчёты можно просматривать программным способом с помощью элемента управления ASP.NET ReportViewer, что позволяет встраивать отчёты прямо в приложение или сайт.

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

  • Данные в облаке, бизнес-аналитика локально,
  • Движок и приложение в облаке.
  • Размещение движка и отчётов в облаке позволяют размещать отчёты таким образом, что их можно встраивать как в приложение, так и иметь глобальный доступ с помощью URL.

    К основным сценариям облачной системы бизнес-аналитики, которая называется Windows Azure SQL Databases Reporting, относятся следующие сценарии:

  • Сезонные нагрузки. Например, организация, реализующая некоторые продукты, имеет периодическую задачу генерации отчётов из хранилища данных. Размещение ресурсов, на которых выполняется решение этой задачи, в локальном центре обработки данных влечёт за собой необходимость в расчёте максимальных нагрузок, эффективного использования и т.д. После этого в какие-то моменты осуществляется нагрузка, но большую часть времени ресурсы могут простаивать. В этом случае, когда есть периодическая необходимость генерации отчётов, может быть использован облачный сервис Windows Azure SQL Databases Reporting. После спада пика нагрузки, как и в случае с любыми другими сервисами, можно отказаться от оплачиваемых ресурсов.
  • Сценарий, в котором происходит разделение отчётности между несколькими партнёрами, возникает, когда сгенерированную отчётность необходимо предоставить партнёрской организации. В случае размещения систем аналитики в локальном центре обработки данных партнёру, который должен обеспечить доступ к отчётам, необходимо проводить конфигурацию, настройку безопасности, портов, предоставлять аккаунты и т.д. Если поместить отчёты в облако, процесс значительно упрощается – клиенты и поставщики могут получить доступ к отчетам тогда, когда им это необходимо.
  • Гибридная инфраструктура. Часть данных в локальном центре обработки данных, часть, которую можно публично выставлять, расположена в облаке.
  • Рассмотрим последовательность действий по созданию отчётов с помощью Report Builder и базы данных AdventureWorks, предоставляемой корпорацией Microsoft в тестовых целях.

    Создадим сервер баз данных Windows Azure SQL Databases с помощью портала управления Windows Azure. Подробнее процесс создания описывается в главе 6 "Хранение и обработка данных с Windows Azure Storage и Windows Azure SQL Databases".

    База данных AdventureWorks расположена на CodePlex по адресу http:// http://msftdbprodsamples.codeplex.com/releases/view/37304. В данном примере используется версия AdventureWorks2012ForWindowsAzureSQLDatabase.

    После распаковки архива, содержащего базу данных, необходимо выполнить следующую команду для развертывания базы данных в Windows Azure:

    CreateAdventureWorksForSQLAzure.cmd <servername>.database.windows.net <username> <password>
    

    Развертывание базы данных может занять некоторое время.

    (рис 10.1) Развертывание базы данных

    Создадим сервис Windows Azure SQL Reporting с помощью портала управления Windows Azure. Расположение сервиса в одном регионе с созданным сервером Windows Azure SQL Databases значительно уменьшит задержки при их взаимодействии.

    (рис 10.2) Создание сервиса Windows Azure SQL Reporting с помощью портала управления Windows Azure

    Для генерации отчётов необходимо связать сервис SQL Reporting с источником данных. Добавим источник данных в сервис SQL Reporting.

    (рис 10.3) SQL Reporting

    В открывшемся диалоговом окне необходимо задать логическое название источника данных и его описание. Базу данных для источника данных можно выбрать в выпадающем меню DATABASE.

    (рис 10.4) Создание базы данных

    На следующей странице выберем опцию PROVIDE CREDENTIALS TO BE STORED SECURELY IN THE REPORT SERVER. Введем логин и пароль администратора сервера баз данных.

    (рис 10.5) Добавление администратора базы данных

    Для взаимодействия с сервисом SQL Reporting установим Report Builder, дистрибутив которого можно загрузить с сайта Microsoft: http://www.microsoft.com/ru-ru/download/details.aspx?id=29072.

    После запуска Report Builder (в зависимости от языка установки он может называться "Построитель Отчетов 3.0") подключимся к серверу, нажав "Соединение" в нижней части интерфейса.

    (рис 10.6) Подключение к серверу

    Ссылку, которую необходимо использовать для подключения, можно скопировать на панели управления сервисом.

    После ввода логина и пароля и подключения к серверу изменится статус подключения в нижней части интерфейса.

    (рис 10.7) Текущее подключение к серверу

    Добавим источник данных в Report Builder.

    (рис 10.8) Добавление данных в Report Builder

    В открывшемся окне необходимо выбрать подключенный сервер.

    (рис 10.9) Добавление новых источников данных

    Введем заголовок отчёта, например, "Отчётность по продажам".

    Добавим еще один источник данных, нажав правой кнопкой мыши на уже созданном источнике данных DataSource.

    (рис 10.10) Добавление источника данных

    В открывшемся окне создания набора данных вставим в текстовое поле "Запрос" SQL-запрос для получения данных по продажам:

    SELECT soh.[SalesOrderID],DATEPART(year, soh.[OrderDate]) AS 'Year'
    ,soh.[CustomerID],soh.[TerritoryID],terr.[Name] as 'TerritoryName'
    ,terr.[CountryRegionCode] as 'Country',soh.[TotalDue] as 'TotalSales'
    FROM [Sales].[SalesOrderHeader] AS soh
    JOIN [Sales].[SalesTerritory] AS terr
    ON terr.[TerritoryID] = soh.[TerritoryID]
    ORDER BY 'Year' 
    

    Вставим матрицу для отображения отчёта.

    (рис 10.11) Матрица для отчета

    Выберем созданный набор данных.

    (рис 10.12) Выбранный созданный набор данных

    Сформируем форму отчёта: перенесём Year в "Группы столбцов", Country и TerritoryName в "Группы строк" и TotalSales – в "Значения".

    (рис 10.13) Размещение полей в отчете

    Нажмём "Выполнить" для запуска формирования отчёта.

    (рис 10.14) Запуск формирования отчета

    После выполнения вам будет выведен отчет по продажам за несколько лет.

    (рис 10.15) Пример отчета по продажам

    Сохраните отчет, перейдя обратно в Конструктор. Так как активное подключение принадлежит серверу в Windows Azure, сохранение можно произвести на него.

    (рис 10.16) Сохранение отчета

    После сохранения любой пользователь с необходимыми правами может получить доступ к отчёту, перейдя по ссылке https://[servername].reporting.windows.net/reportserver и введя логин и пароль.

    (рис 10.17) Отчет на портале Azure

    Нажатие на отчёте приведет к его формированию на Windows Azure.

    (рис 10.18) Формирование отчета на Windows Azure

    В сервисе SQL Reporting может быть несколько пользователей, имеющих доступ к сервису, которые должны быть добавлены на вкладке Users на панели управления сервисом.

    (рис 10.19) Доступ нескольких пользователей к отчетам

    Таким образом, облачный сервис SQL Reporting можно использовать для различных сценариев, подразумевающих глобальный удобный доступ к отчётам, виртуально-неограниченные ресурсы и эластичность.

    Анализ данных с Hadoop

    Сервис Windows Azure HDInsight (Hadoop) — это облачный сервис, предлагающий экосистему и создание кластеров Hadoop по запросу пользователя. С помощью портала Windows Azure могут быть созданы и развернуты кластеры Hadoop размером до 32 узлов (необходимо уточнить, что на момент написания сервис Windows Azure HDInsight находится в закрытой Preview-версии). Кроме создания задач MapReduce, разработчик имеет доступ к интерактивной консоли, которая позволяет писать запросы к данным на JavaScript и Hive.

    MapReduce – это параллельное и распределённое решение, разработанное корпорацией Google для обработки больших массивов данных и активно использующееся в таких сферах, как, например, поисковые движки. MapReduce, или M/R, состоит из двух функций-компонентов – Map и Reduce. Первая функция, Map, используется для вычисления наборов ключ-значение. Reduce – функция, получающая результаты вычисления функции Map и применяющая к ним другую функцию. В подходе M/R подразумевается, что между данными нет прям зависимостей, что упрощает процесс параллелизации. Узел-мастер распределяет задачи M/R по обработчикам Map и Reduce, собирая информацию. Все пары ключ-значение с идентичным значением ключа отправляются на обработку на один обработчик.

    Типичным примером использования MapReduce, а значит, и Hadoop, является анализ файлов логов. Для файлов логов обычна ситуация разрастания до очень больших размеров, при этом все файлы соблюдают строгий синтаксис данных, что позволяет применять логику обработки к этим файлам. Несмотря на простоту, однако, обработки, если файлы логов содержат очень большое количество записей, их обработка на одном компьютере может занять долгое время.

    С помощью MapReduce можно разделять большие файлы логов на части. Функция Map ищет уникальные вхождения записей (например, Web-страниц). Каждый раз, когда Web-страница находится в файле, в функцию Reduce поступает ключ-значение,где ключ – Web-страница, а значение – 1. Обработчики функции Reduce агрегируют количество для каждой из Web-страниц, и в результате пользователь получает общее количество входов для каждой из Web-страниц.

    (рис 10.20) Архитектура Hadoop

    Сервис основан на распределенной файловой системе HDFS (Hadoop Distributed File System), реализованной на кластере узлов Hadoop двух видов – Data Node и Name Node. Подобный кластер может быть как гомогенной структуры (с унифицированными характеристиками узлов), так и гетерогенной (большим количеством узлов разных характеристик). Name Nodes содержат информацию о том, на каком из узлов данных (Data Node) содержится конкретная реплика (реплики используются для обеспечения высокой надежности и избыточности), и представляют клиенту эту информацию. При выходе из строя реплики фрагмента одна из его вторичных реплик назначается основной. Масштабируемость на достигается за счет параллельной обработки задач. Task Tracker называются узлы, хранящие входные фрагменты задач (файлов) и запускающие экземпляры выполнения Map/Redurce, координирует же эти экземпляры выполнения узел, носящий название Job Tracker. В различных реальных задачах экосистема Hadoop/HDInsight состоит из гораздо большего количества компонентов и модулей интеграции с другим программным обеспечением и форматами данных.

    (рис 10.21) Экосистема Hadoop/HDInsight

    Данные, используемые HDInsight в задачах, хранятся в Windows Azure Storage в блобах и получаются для обработки по парадигме MapReduce узлом-мастером, который затем распределяет задачи согласно заданной логике по обработчикам. По этой причине для работоспособности кластера необходимо создать и настроить аккаунт хранилища Windows Azure и создать кластер максимально близко к географическому расположению хранилища (для избежания увеличения латентности).

    (рис 10.22) Доступ к хранилищу HDInsight

    Экосистема HDInsight

    Как уже было сказано ранее, сервис HDInsight предоставляет облачный сервис по управлению большими данными. HDInsight имеет собственные реализации Hive и Pig, которые используются для обработки данных и хранения соответственно, а также способен интегрироваться с существующими мощными средствами BI, разработанными Microsoft: SQL Server Analysis Services, Reporting Services, PowerPivot, Excel.

    Говоря о том, что представляет собой Pig, необходимо уточнить, что Pig – это высокоуровневая платформа, которая обеспечивает возможность обработки больших данных в кластерах Hadoop. Pig состоит из специального языка запросов Pig Latin, которые выполняются к массивам данных в консоли, и способен интегрироваться User Defined Functions (UDF) на Java, Python, C# и JavaScript.

    Hive является распределенным сервисом хранения данных "над" HDFS, и предоставляет интерфейс для взаимодействия с данными с помощью SQL запросов на языке HiveQL (поддиалекте SQL) и реляционной модели. Аналогично Pig, Hive трансформирует запрос на собственном языке в задачи Map/Reduce

    Функциональность HDInsight гарантирует также то, что разработчик может использовать уже привычные ему средства, такие как, например, Powershell, .NET, Java, F#, Javascript и Node.js, для разработки, управления и мониторинга происходящего на кластере. Также HDInsight может быть установлен в его локальной версии на серверный продукт Microsoft Windows Server.

    (рис 10.23) Экосистема Hadoop/HDInsight

    Использование HDInsight

    Для того, чтобы начать использование HDInsight, необходимо оставить заявку (сервис находится на момент написания в стадии Preview, то есть требует рассмотрения заявки на использование) на портале управления выбрать HDInsight и нажать на ссылку Preview Program и нажать на кнопку Try it now.

    (рис 10.24) Регистрация в программе HDInsight

    После активации сервиса можно начать создание кластера Hadoop. Для этого нажмем DATA SERVICES | HDINSIGHT | CUSTOM CREATE.

    (рис 10.25) Создание кластера HDInsight

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

    (рис 10.26) Настройка кластера

    На следующей странице введем учетные данные администратора.

    (рис 10.27) Настройка кластера

    На следующей странице выберем опцию создания нового аккаунта хранилища и введем соответствующие данные.

    (рис 10.28) Настройка аккаунта хранилища для кластера

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

    (рис 10.29) Панель управления HDInsight

    Из панели управления можно инициировать сессию удаленного доступа (CONNECT), внутри виртуальной машины создать задачу, посмотреть историю выполнения задач, изучить информацию по Hadoop. Кнопка Manage Cluster позволяет контролировать размер использованного дискового пространства, а также задать папки в Windows Azure блобах, которые можно рассматривать как хранилище (Azure Storage Vault).

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

    (рис 10.30) Панель управления кластером HDInsight

    Создадим задачу Map/Reduce из тестового набора. Для этого нажмем кнопку Samples.

    (рис 10.31) Набор тестовых задач HDInsight

    Нажмем кнопку Pi Estimator. На странице тестовой задачи нажмем Deploy to your cluster. Это приведет к странице, которую можно также вызвать, нажав кнопку Create Job. Будет открыта страница добавления новой задачи, на которой необходимо ввести название задачи, указать JAR-файл задачи и настроить параметры (если таковые есть). В случае тестовой задачи эти данные заполняются автоматически.

    (рис 10.32) Добавление задачи на расчет

    Задача, которую мы запустим, инициирует расчет числа Пи, исходя из 16 Maps (первый параметр в команде) и 10 млн. сэмплов на каждый Map (второй параметр).

    Нажмем Execute Job и дождемся выполнения задачи. После окончания выполнения будут выведены результаты и служебная информация о задаче.

    (рис 10.33) Результат выполнения задачи по вычислению числа Пи

    Воспользуемся интерактивной консолью для расчета скрипта на Javascript (Map/Reduce). В качестве примера возьмем тестовую задачу по подсчету слов. Для этого загрузим скрипт WordCount.js и текстовый файл davinci.txt, зайдя на страницу Samples и нажав на кнопку WordCount.

    (рис 10.34) Описание тестовой задачи WordCount

    Вернемся на главную страницу панели управления кластером и нажмем на кнопку Interactive Console. Обратите внимание, что ту же задачу можно выполнить, нажав Deploy to your cluster.

    Введем в интерактивную консоль команду fs.put() для загрузки файла WordCount.js. Выберем загруженный локально файл. Значение Destination укажем равным ./WordCount.js/. Повторим процедуру для загрузки файла davinci.txt. Значение Destination для davinci.txt укажем равным ./example/data/.

    (рис 10.35)

    Выполним команду, указанную ниже, и, после выполнения задачи, нажмем View Log для просмотра информации о задаче.

    pig.from("/example/data/davinci.txt").mapReduce("WordCount.js", 
    "word, count:long").orderBy("count DESC").take(10).to("DaVinciTop10Words")
    

    Увидеть результаты мы можем, введя команду fs.read("DaVinciTop10Words").

    (рис 10.36) Результат выполнения задачи, созданной в интерактивной консоли

    Подробнее про разработку приложений для HDInsight рассказано в блоге на MSDN: http://blogs.msdn.com/b/benjguin/archive/2012/02/09/analyzing-1-tb-of-iis-logs-with-hadoop-map-reduce-on-azure-with-javascript-analyse-d-1-to-de-journaux-iis-avec-hadoop-map-reduce-en-javascript.aspx

    Заключение

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

    Вернуться к учебному плану