Федеральное государственное автономное образовательное учреждение
высшего образования

КАЗАНСКИЙ  (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

ВЫСШАЯ ШКОЛА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И
ИНФОРМАЦИОННЫХ СИСТЕМ

Направление подготовки: 09.03.03 – Прикладная информатика

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

Кластерная потоковая обработка данных для Интернета Вещей

Работа завершена:

«___»_____________2017  г. 

Студент группы  11-511  ____________________

Работа допущена к защите:

Научный руководитель

старший научный сотрудник, к. н.

«___»_____________2017  г.  ____________________  С. Дистефано

Директор Высшей школы ИТИС

«___»_____________2017 г.  __________________

Казань – 2017 г.

Содержание

ВВЕДЕНИЕ        3

1. ПОТОКОВАЯ ОБРАБОТКА ДАННЫХ        6

1.1. Основные определения        6

1.2. Обзор инструментов (фреймворков) потоковой обработки данных        8

1.3. Выводы и выбор фреймворка        11

2. ВВЕДЕНИЕ В APACHE NIFI        12

2.1. Описание Apache NiFi и его возможностей        12

2.2. Основные концепции NiFi        12

2.3. Преимущества NiFi        14

2.4. Архитектура NiFi        15

2.5. Кластер Apache NiFi        17

2.6. Безопасность в Apache NiFi        23

3. ЗАПУСК КЛАСТЕРА APACHE NIFI В РАЗЛИЧНЫХ ОКРУЖЕНИЯХ        25

НЕ нашли? Не то? Что вы ищете?

3.1. Запуск в виртуальной среде        25

3.2. Запуск кластера на граничных устройствах        26

3.3. Рекомендации запуска NiFi на Raspberry Pi        27

4. ДИНАМИЧЕСКОЕ ФОРМИРОВАНИЕ КЛАСТЕРА APACHE NIFI        30

4.1. Обнаружение устройств в локальной сети        30

4.2. Выбор способа поиска устройств        33

4.3. Возможности Apache Zookeeper для создание кластера        33

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

4.4. Формирование списка кандидатов кластера        37

ЗАКЛЮЧЕНИЕ        38

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ        39


ВВЕДЕНИЕ

По прогнозам CISCO, к 2020 году общее число подключенных к интернету устройств достигнет 50 млрд [1]. Объем трафика устройств передающих информацию в центрально место или облако будет только расти. Если принять, что среднее подключенное к сети устройство к 2020г. будет выдавать в 10 раз больше данных (например, 100 МБ на устройство ежемесячно в сравнении с текущими 10 МБ ежемесячно), то для 50 млрд. устройств объем данных вырастет до 50 трлн. ГБ [2].

Быстрый рост и распространение технологий Интернета вещей и Всеобъемлющего Интернета представляются неизбежными [1]. Возникают задачи, как обрабатывать все эти данные и понимать их. В связи с этим растет потребность в анализе потока данных на границе сети [52], так как многократный рост трафика может оказать негативное влияние на архитектуры сетей, к которым подключатся огромное количество различных IoT устройств [2].  Чтобы извлечь из этого максимальную пользу, необходимо обрабатывать и анализировать данные, которые генерируют все эти объекты, в реальном времени. Для такого рода приложений, работающих в реальном времени и генерирующий больший объем трафика, необходима новая распределенная модель, в которой функционал облачных вычислений, сетевого взаимодействия и хранения спускается с облака на землю, на самую границу сети [52][53], формируя новый слой – туманных вычислений [52].

Туманные вычисления решают ряд самых распространенных сегодня проблем, среди которых [52]:

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

Туманные вычисления не требуют использование мощных серверов, которые требуются в облачных технологиях. В основном, такие вычисления выполняются на маломощных и рассредоточенных устройствах вроде тех, что в последнее время стали использоваться в автомобилях, городских системах, электроснабжении — в целом, практически всюду. Без необходимости эти устройства не обмениваются данными с облаком [52].

Интернет вещей способствует сдвигу архитектуры к границе сети, приближая аналитик, обработку и даже приложения к источникам данных и делая возможным в реальном времени реагировать на информацию  поступающую в реальном времени [53][54][55].

Актуальность данной работы обусловлена необходимостью высокоуровневого подхода к управлению взаимодействия Интернета вещей и обработки данных на устройствах находящихся ближе к источнику данных [48][49], включая мобильные устройства [50], с возможностью объединения и распределения обработки данных на границе сети, обеспечивающие пользователям доступ в реальном времени к данным, прогнозам и трендам [51].

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

Объектом исследования является процесс создания и разработки кластерной потоковой обработки данных для Интернета Вещей в парадигме Туманных вычислений.

Предметом исследования является платформа для  кластерной обработки потоковых данных для Интернета Вещей.

Для достижения поставленной цели необходимо решить следующие задачи:

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

1. ПОТОКОВАЯ ОБРАБОТКА ДАННЫХ

1.1. Основные определения

Определения используемые в данной работе приведены в таблице 1.

Таблица 1. Основные термины и определения.

Термин

Определение

Большие данные (big data)

в информационных технологиях - совокупность подходов, инструментов и методов обработки структурированных и неструктурированных данных огромных объёмов и значительного многообразия для получения воспринимаемых человеком результатов, эффективных в условиях непрерывного прироста, распределения по многочисленным узлам вычислительной сети [3].

Встраиваемая система (embedded system)

специализированная микропроцессорная система управления, концепция разработки которой заключается в том, что такая система будет работать, будучи встроенной непосредственно в устройство, которым она управляет [4].

Виртуальная машина (VM)

аппаратная и/или программная система, эмулирующая аппаратное обеспечение некоторой платформы и исполняющая программы для целевой платформы на хост платформе или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы или операционные системы [5].

VirtualBox

программный продукт виртуализации для различных операционных систем [6].

Вагрант (Vagrant)

свободное и открытое программное обеспечение для создания и конфигурирования виртуальной среды разработки. Является обёрткой для программного обеспечения виртуализации [7].

Интернет вещей (Internet of Things, IoT)

концепция построения вычислительных сетей из физических объектов (иначе – «вещей»), обладающих возможностями взаимодействия с окружающей средой или друг с другом [8].

Кворум (quorum)

Минимальное количество голосов, которое должна получить распределенная транзакция, чтобы иметь возможность выполнять операцию в распределенной системе [9].

Кластер

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

Координатор кластеров NiFi (Cluster Coordinator)

Координатор кластеров кластера NiFi является узлом кластера NiFi, который отвечает за выполнение задач по управлению узлами в кластере и обеспечивает актуальный поток (flow) для новых узлов соединения [11].

Облачные вычисления (cloud computing)

информационно-технологическая концепция, подразумевающая обеспечение повсеместного и удобного сетевого доступа по требованию к общему пулу (англ. pool) конфигурируемых вычислительных ресурсов (например, сетям передачи данных, серверам, устройствам хранения данных, приложениям и сервисам — как вместе, так и по отдельности), которые могут быть оперативно предоставлены и освобождены с минимальными эксплуатационными затратами или обращениями к провайдеру [12].

Поток данных - Stream (streaming)

является парадигмой компьютерное программирование, программирование потоковой обработки событий и реактивного программирования,  что позволяет создавать приложения с  использованием параллельной обработки [13].

Провизия в vagrant (vagrant provision)

Провизия позволяет устанавливать приложения и осуществлять автоматическую настройку конфигурации прямо при запуске виртуальной машины [14].

Программирование потоков данных (FBP, Flow-based programming)


Представляет собой парадигму программирования, которая определяет приложения как сети процессов «черного ящика», которые обмениваются данными через предопределенные соединения путем передачи сообщений [15].

Первичный узел

Каждый кластер имеет один первичный узел. Если по какой-либо причине этот узел отключается от кластера, автоматически выбирается новый первичный узел [11].

Распределённая хеш-таблица (DHT)

это класс децентрализованных распределённых систем поисковой службы, работающей подобно хэш-таблице. Как структура данных, хэш-таблица может представлять собой ассоциативный массив, содержащий пары (ключ-значение) [16].

Сердцебиение  (Heartbeats )

используется для обнаружения сбоев и управления ресурсами кластера [11].

Туманные вычисления (Fog computing)

платформа с высоким уровнем виртуализации,

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

службы между оконечными устройствами и центрами облачных вычислений, не

обязательно расположенных на крайних уровнях сети [17]

Узел (Node)

Каждый кластер состоит из одного или нескольких узлов. Узлы выполняют фактическую обработку данных [11].


1.2. Обзор инструментов (фреймворков) потоковой обработки данных

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5