Введение в потоковые вычисления в режиме реального времени

Как платформа InfoSphere Streams помогает превратить данные в аналитику

Используйте InfoSphere® Streams, чтобы превратить массивы данных в информацию, которая помогает прогнозировать тенденции, получать конкурентное преимущество, оценивать предпочтения клиентов, контролировать потребление энергии и многое другое. Платформа InfoSphere Streams анализирует данные "в движении" в режиме реального времени. Познакомьтесь с продуктом и узнайте, куда обращаться за советами и рекомендациями, которые помогут вам быстрее внедрить этот продукт в работу.

Жак Рой, ведущий специалист, IBM

Жак Рой (Jacques Roy) является сотрудником всемирной организации поддержки продаж продуктов фирмы IBM. Он имеет более чем двадцатилетний стаж работы и уже более восьми лет занимается расширяемостью баз данных. Он является автором книги "Informix Dynamic Server 2000: Серверное программирование на языке С" и соавтором книги "Компоненты с открытым исходным кодом для Informix Dynamic Server 9.x", а также автором многих статей developerWorks.



01.04.2014

Предпосылки

Корпорация IBM предложила термин "Разумная планета" несколько лет назад. При этом были описаны три основных характеристики этого термина:

InfoSphere Streams Quick Start Edition

InfoSphere Streams Quick Start Edition - бесплатная загружаемая непроизводственная версия передовой вычислительной платформы IBM InfoSphere Streams, которая позволяет создавать пользовательские решения, способные быстро принимать, анализировать и сопоставлять информацию по мере ее поступления из тысяч источников в реальном времени. InfoSphere Streams Quick Start Edition позволяет экспериментировать с потоковыми вычислениями в своей уникальной среде без ограничений по данным или времени. Создайте мощную аналитическую платформу, которая способна обрабатывать данные с очень высокой пропускной способностью - до нескольких миллионов событий или сообщений в секунду. Загрузите Streams Quick Start Edition сейчас.

  • Оснащенность датчиками
  • Интеллектуальность
  • Взаимосвязанность

Эти три характеристики уже давно являются частью нашей жизни. Достаточно вспомнить о распространении смартфонов, которые в действительности обладают гораздо большими возможностями, чем просто держать нас на связи. Смартфоны содержат набор датчиков, начиная с GPS и заканчивая датчиками влажности и температуры воздуха. Добавьте к этому все датчики и измерительные приборы, используемые во всем мире, - это наша действительность, которая продолжает развиваться с каждым днем.

В результате мы просто "тонем" в потоке данных, которые просто "просятся" быть преобразованными в информацию. Например, мы могли бы воспользоваться преимуществами краудсорсинга, чтобы получить представление о меняющихся ситуациях. Мы можем обнаружить тенденции, которые могут помочь определить новые возможности или избежать серьезных катастроф. Все это можно увидеть в режиме реального времени при анализе настроений социальных медиа, текущего состояния уровня энергопотребления, анализа ключевых показателей эффективности в телекоммуникационных и других отраслях. Можно приводить еще бесчисленное количество примеров, но главная задача этой статьи состоит не в этом.

Есть ряд важных вопросов, связанных с возможностью использования новых данных. Один из них - огромный объем данных, другой - эфемерность этих данных. Как быстро просеять поток поступающей информации и выделить из него те данные, в которых мы заинтересованы в настоящий момент?

Вы уже можете предположить, что ответом на мой вопрос будет InfoSphere Streams. В первую очередь надо понять разницу между "данными в состоянии покоя" и "данными в движении".


Данные в состоянии покоя

Можно с уверенностью предположить, что все вы хорошо знакомы с данными в состоянии покоя: файлами и базами данных. Независимо от того, откуда поступают данные, они хранятся на диске перед тем, как их используют. Мы наблюдаем эволюцию таких данных на протяжении многих лет. Раньше было сложно обновить файлы, а одновременное обновление файлов и вовсе было невозможным. Потом появились иерархические и сетевые базы данных, но при этом организация данных была оптимизирована для одного конкретного случая использования, а для всех других случаев использования доступ был невозможен. Это привело к созданию реляционных баз данных.

В конце концов реляционная модель взяла верх, в результате усовершенствований она расширилась до объектно-реляционной модели. Главным преимуществом этой модели можно считать возможность включения дополнительных видов данных и их функциональных возможностей в ответ на запросы бизнеса, такие, как, например, обработка пространственных данных и поиск по тексту. Объектно-реляционная модель подходит для специализированного хранения и обработки данных, что наглядно демонстрирует Informix® TimeSeries.

За последние несколько лет мы наблюдем растущую потребность в анализе неструктурированных данных, что привело к росту популярности платформы Hadoop (а в корпоративном сегменте - InfoSphere BigInsights ™ и связанных продуктов). Эти разработки облегчили анализ больших объемов данных, но для них по-прежнему необходимо, чтобы данные перед обработкой хранились на диске.

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


Данные в движении

Данные в движении - также известное понятие. Например, кино – это данные в движении. Не потому, что люди двигаются на экране, а потому, что это проходящий поток образов. Каждое изображение появляется на экране на мгновение и исчезает.

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

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

Еще одним преимуществом данных в движении является то, что нет необходимости в специализированных механизмах хранения данных, оптимизирующих поиск данных в большом потоке подобных. Если данные находятся в движении, у вас уже есть такой механизм. Если вам нужно извлечь данные в состоянии покоя из базы данных, вам необходимо уточнить, как именно необходимо извлечь данные. Это можно сделать через последовательный или индексированный доступ. В любом случае это требует значительно больше действий, чем просто чтение проходящих данных.


Обработка данных в режиме реального времени

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

В широком смысле обработкой в режиме реального времени может называться обработка данных за любое время от долей секунды до нескольких минут или даже часов. Что на самом деле здесь важно - это задержка между получением данных и созданием информации. Ваши данные могут поступать порциями каждые 15 минут, но важна именно задержка - время между поступлением данных и доступностью извлеченной из них информации.

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

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


Что такое InfoSphere Streams?

Один из моих коллег придумал очень короткое определение: "это платформа для аналитики больших данных в режиме реального времени".

Понятие "большие данные" объединяет три измерения: объем, скорость и разнообразие. Мы говорим о любом типе данных (разнообразие ), количество которых может измеряться терабайтами (объем ), которые поступают к нам очень быстро (скорость ).

Когда мы говорим "аналитика", мы имеем в виду возможность обработки и анализа данных с помощью собственных программных средств, в том числе с использованием таких инструментов, как SPSS или R.

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

Наконец, "платформа ... для больших данных" - это способность InfoSphere Streams прозрачно распределять обработку по кластеру машин для обеспечения масштабируемости, а также контролировать эту среду и управлять ею.

Что дает эта платформа и как мы ее используем? Хороший вопрос. Прежде чем мы перейдем к нему, позвольте мне рассказать вам об Интернет-ресурсе, где вы можете найти всю интересующую вас информацию о InfoSphere Streams.


Знакомство с InfoSphere Streams Playbook

Существует много доступной информации об InfoSphere Streams. Она представлена в виде документации, руководств IBM Redbook®, статей на сайте developerWorks, учебных видеороликов, видеозаписей с примерами использования и многим другим. Как найти эту информацию и как ориентироваться в этих ресурсах?

Для этого нужно зайти в подраздел developerWorks wiki под названием InfoSphere Streams Playbook (см. Ресурсы). Если по какой-либо причине вы не можете вспомнить URL, введите в строке поиска Google "Streams Playbook" и пройдите по одной из первых ссылок.

Подраздел Wiki содержит следующие разделы:

  • Справочные материалы
  • Обучающие видеоролики
  • Видео с примерами использования
  • Другие примеры использования (раздел пока пуст)
  • Экосистема
  • Уголок разработчика

Далее в статье приводятся ссылки на эти разделы как источник дополнительной информации.


Для чего нужна платформа InfoSphere Streams?

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

  • Поддержку любых типов данных
  • Необходимость уменьшения задержки за счет обработки данных в памяти
  • Возможность масштабирования за счет поддержки кластеров

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

InfoSphere Streams также используется в логистике, здравоохранении и других отраслях. Более подробно см. раздел "Видео – примеры использования".


Среда InfoSphere Streams

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

Сочетание хостов управления и хостов приложений в кластере
Сочетание хостов управления и хостов приложений в кластере

Обратите внимание, что на хосте управления работает ряд сервисов, которые контролируют работу кластера и исполнение заданий. Задание (Job) можно рассматривать как отдельно взятую программу. Разница между заданием и программой состоит в том, что задание состоит из операторов, которые можно запрограммировать на работу на любом доступном хосте приложения. Задание состоит из нескольких процессов, в то время как программа функционирует в рамках одного процесса. Узнайте больше о среде работы программы InfoSphere Streams можно в Информационном центре и в разделе "Обучающие видео" в подразделе InfoSphere Streams Playbook (см. Ресурсы).

InfoSphere Streams включает в себя несколько инструментов, которые помогут вам управлять средой и разрабатывать приложения для InfoSphere Streams:

  • FirstSteps— используется после установки для решения таких задач, как настройка SSH, создание открытых и закрытых ключей, настройка базы данных восстановления и т.д.
  • Instances manager— это приложение создает, настраивает, обновляет и удаляет базы данных и кластеры. Приложение Instances manager также позволяет запустить консоль InfoSphere Streams.
  • Консоль InfoSphere Streams— графический Web-интерфейс, который используется для мониторинга экземпляров и приложений и управления ими.
  • InfoSphere Streams Studio— инструментарий, используемый для разработки приложений. Он включает в себя графический редактор и мастеры для упрощения стандартных задач. Он также включает визуализацию запущенных в InfoSphere Streams заданий и их операторов.
  • streamtool— командная строка, используемая для автоматизации управления и мониторинга заданий.
  • Компилятор InfoSphere Streams Compiler (SC)— используется в качестве инструмента для автоматизации задач компиляции. Его можно использовать как напрямую, так и с помощью make-файлов.

Графические средства (первые четыре пункта в списке) позволяют существенно увеличить производительность, когда вы научитесь с ними работать. Обучение не занимает много времени и приносит ощутимые результаты.


Программирование в InfoSphere Streams

Суть программирования в InfoSphere Streams состоит в комбинировании операторов таким образом, чтобы разделить обработку данных на модули, создав возможность одновременного выполнения задач. Графический редактор облегчает соединение операторов в граф процесса обработки информации.

Платформа InfoSphere Streams также использует процедурный язык - Streams Processing Language (SPL). Если вы знакомы с такими языками программирования, как C, Java™, Python, вы быстро освоите SPL.

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

Типы данных, доступные в InfoSphere Streams
Типы данных, доступные в InfoSphere Streams

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

В дополнение к типам данных платформа InfoSphere Streams оснащена значительным набором функций различных категорий – для работы с коллекциями данных (list, set, map), для работы с файлами, для обработки математических данных, для обработки строк, функции времени и сервисные функции. В общей сложности InfoSphere Streams имеет более 250 функций; при этом есть ряд функций с одинаковым названием, работающих с различными типами данных, и функций, специфичных для конкретных операторов. К этому следует добавить функции из специализированных инструментариев, которые входят в комплектацию платформы InfoSphere Streams.

Программирование InfoSphere Streams основывается на операторах. Операторы управляют получением данных из внешнего мира с помощью различных средств, преобразовывают данные и предоставляют окончательные результаты. Они позволяют очень быстро собрать необходимую инфраструктуру и получить решение конкретной бизнес-проблемы.


Операторы и инструментарий

Операторы представляют собой более высокий уровень абстракции, чем процедурное программирование. Операторы позволяют осуществлять логическое разделение процесса обработки. Операторы поступают из разных пакетов, которые называются инструментариями. Один из инструментариев — стандартный — является частью любого проекта InfoSphere Streams. Он предоставляет все функции, которые поставляются вместе с продуктом. Несмотря на то, что функции можно рассматривать как часть языка, они отделены от него, поскольку входят в стандартный инструментарий.

Инструментарий представляет собой пакет возможностей, как правило, связанных с конкретной проблемной областью. Они могут включать операторы, функции и типы данных. Для InfoSphere Streams 3.1 доступны следующие инструментарии:

  • Стандартный инструментарий— включает такие операторы, как адаптеры, обработчики для реляционных операций, утилиты, средства работы с XML.
  • Big data— интерфейс с пакетами Hadoop Distributed File System (HDFS) и Data Explorer.
  • Инструментарий для обработки сложных событий— используется для создания процедур обработки сложных событий.
  • Инструментарий для баз— обеспечивает доступ к реляционным базам данных, таким как DB2®, Informix, Netezza, Oracle, SQL Server, Teradata и др.
  • Инструментарий для финансовых сервисов— включает в себя набор операторов и функций, используемых для обработки информации финансового рынка.
  • Геопространственный инструментарий— набор функций для работы с геопространственными данными.
  • Интеграция InfoSphere DataStage®— интерфейс с DataStage
  • Интернет— доступ к протоколам HTTP (S), FTP (S) и RSS.
  • Сообщения— связь с WebSphere® MQ и ActiveMQ.
  • Углубленный анализ— Обеспечивает обработку данных.
  • R Project— интерфейс со средой статистических расчетов R Project.
  • Текст— обеспечивает анализ текста.
  • TimeSeries— облегчает работу с временными рядами данных.

Стандартный инструментарий поставляется с набором из 36 операторов и более чем 256 функций. Другие инструментарии добавляют еще 40 операторов и несколько десятков функций. Такая готовая функциональность позволяет с высокой эффективностью создавать задания для удовлетворения потребностей вашего бизнеса.

Это краткое описание ознакомило вас с возможностями InfoSphere Streams . Давайте сделаем еще один шаг вперед и посмотрим, как InfoSphere Streams вписывается в среду обработки данных.


Интеграция InfoSphere Streams

Платформа InfoSphere Streams работает не в вакууме. Она является ключевым компонентом платформы обработки больших данных IBM. В рамках интеграции корпоративной системы InfoSphere Streams может считывать и записывать данные из разных источников и объектов, таких как файлы, сетевые соединения (TCP, UDP, HTTP и т.д.) и очереди сообщений (WebSphere MQ и Active MQ). InfoSphere Streams имеет операторы для взаимодействия с финансовыми рынками, использующие протокол Financial Information eXchange (FIX).

В дополнение к этим интерфейсам InfoSphere Streams работает с рядом продуктов IBM, в том числе с InfoSphere BigInsights, Data Explorer, SPSS и Cognos®. Кроме того, она может использовать инструментарий статистического анализа R Project. По мере развития платформы InfoSphere Streams добавляются новые интерфейсы.

Для получения дополнительной информации обратитесь к разделу "Экосистема" в InfoSphere Streams Playbook.


Навигация по информационному центру

Информационный центр содержит информацию для системных администраторов, администраторов и программистов InfoSphere Streams. Этот раздел предназначен для информирования разработчиков приложений.

На рисунке 3 показаны основные разделы и подразделы информационного центра. Как разработчик вы можете прочитать все разделы, чтобы ознакомиться со всем, что касается InfoSphere Streams. Чтобы получить представление о среде программирования, посмотрите раздел Разработка и ознакомьтесь с InfoSphere Streams Studio, а затем перейдите к учебному пособию.

Разделы информационного центра
Разделы информационного центра

После первоначального просмотра вы, вероятно, проведете очень много времени в разделе Ссылки. Вам нужно выучить язык SPL, доступные функции, доступные операторы и то, как их использовать.

В Reference > Language reference находятся два раздела: Annotation Query Language (AQL) и Streams Processing Language (SPL). Если вы не планируете использовать обработчик текстового анализа и TextExtract в инструментарии Текст, можете не изучать раздел AQL. Когда вы решите заняться анализом текстов, рекомендуем вам обратиться к информационному центру InfoSphere BigInsights 2.1, в котором содержится больше информации на эту тему, чем в Информационном Центре InfoSphere Streams.

Раздел о языке SPL содержит всю необходимую информацию о языке, использовании типов данных, функциях и о том, как запускать операторы инструментария. Исходя из своего опыта, хочу обратить ваше внимание на один раздел, который может остаться незамеченным или вызвать некоторые сложности в поиске: Streams Processing Language > Expression language > Expression operator. Если вы хотите научиться выполнять логические или побитовые операции, в данном разделе перечислены методы, которые можно использовать при написании соответствующих функций или сегментов кода. И еще один важный момент, который не прописан явно – как выполнять конкатенацию строк (используйте оператор +).

Когда вы познакомитесь с языком, у вас может возникнуть вопрос: какие функции доступны для работы с данными. Следует запомнить, что язык SPL не имеет никаких функций. С другой стороны, любое приложение по умолчанию включает в себя стандартный инструментарий. Чтобы ознакомиться с функциями стандартного инструментария, пройдите по ссылке: > SPL Standard Toolkit > Built-in SPL Functions > FunctionList. В этом разделе содержится информация о функциях для работы с файлами, математическими данными, временем и форматом XML. Здесь же описаны служебные функции для журналирования, отладки, тестирования и т.д. Легче всего найти информацию о функции, используя кнопки поиска "Ctrl+f", по имени функции или соответствующим ключевым словам.


Пример кода

Сейчас вы уже обладаете всей необходимой информацией, чтобы попробовать программировать в InfoSphereStreams. Используя InfoSphere Streams Studio и редактор графического интерфейса, вы легко можете "перетаскивать" операторы, которые хотите использовать, и соединять их вместе. Для более сложной обработки данных можно подключить собственные фрагменты кода. Для изучения некоторых операторов потребуется дополнительное время.

Один из самых быстрых способов - это изучение с использованием примеров кода. Много ссылок на примеры и образцы кода приведено в InfoSphere Streams Playbook в подразделе "Уголок разработчика ". Также ознакомьтесь со следующими полезными ресурсами (см. Ресурсы):

  • статьи developerWorks — статьи о InfoSphere Streams на сайте developerWorks.
  • блог InfoSphere Streams — Entries on all areas of InfoSphere Streams programming, from simple to complex.
  • Streams exchange — статьи обо всех аспектах программирования InfoSphere Streams, начиная с простых и до самых сложных. - Streams exchange – программный код от участников сообщества. В качестве примера можно назвать обработку видео при помощи OpenCV и инструментарий для взаимодействия с HBase. Когда вы начнете работу со Streams и операторами, очень рекомендую вам изучить подраздел "Примеры для начинающих" в разделе "Приложения".

Заключение

InfoSphere Streams - это мощная "платформа для аналитики больших данных в режиме реального времени". Она является ключевым элементом платформы IBM для работы с большими данными. Инструменты, входящие в InfoSphere Streams, и сопутствующие материалы позволят вам быстро начать продуктивную работу, преобразуя данные в полезную информацию.

Обработка данных в режиме реального времени уже в ближайшее время может стать важнейшим направлением обработки данных. Уже сегодня она используется во многих интересных и нужных приложениях для извлечения содержательной информации и конкурентных преимуществ из потоков больших данных.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=967428
ArticleTitle=Введение в потоковые вычисления в режиме реального времени
publish-date=04012014