РАЗРАБОТКА ИНСТРУМЕНТАЛЬНОЙ БИБЛИОТЕКИ ДЛЯ ВНЕДРЕНИЯ ПРИЛОЖЕНИЙ В ПОТОКОВЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СРЕДЫ
|
ВВЕДЕНИЕ 5
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 9
2. РЕАЛИЗАЦИОННАЯ ЧАСТЬ 17
2.1. Реализация адаптера потоков данных 17
2.2. Разработка средств конфигурирования и мониторинга 21
3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ 26
3.1. Повышение производительности работы библиотеки с Kafka 26
3.2. Оценка эффективности относительно альтернативных решений 32
3.3. Интеграция с системой управления многопользовательскими кластерными
вычислениями 35
ЗАКЛЮЧЕНИЕ 41
СПИСОК ЛИТЕРАТУРЫ 42
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 9
2. РЕАЛИЗАЦИОННАЯ ЧАСТЬ 17
2.1. Реализация адаптера потоков данных 17
2.2. Разработка средств конфигурирования и мониторинга 21
3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ 26
3.1. Повышение производительности работы библиотеки с Kafka 26
3.2. Оценка эффективности относительно альтернативных решений 32
3.3. Интеграция с системой управления многопользовательскими кластерными
вычислениями 35
ЗАКЛЮЧЕНИЕ 41
СПИСОК ЛИТЕРАТУРЫ 42
В связи с ростом потребности в оперативной распределенной обработке больших объемов непрерывно поступающих данных, набирают популярность инструменты и архитектурные решения из области потоковой обработки данных - или Stream Processing [8]. В отличие от традиционных систем для работы с большими данными, которые накапливают поступающую информацию в хранилище и с некоторым периодом проводят ее обработку на мощных вычислительных узлах, потоковые вычислительные системы выполняют операции с данными по мере их поступления. Было показано, что при таком подходе значительно возрастает скорость реакции систем на происходящие события, а также сокращается требуемая для них вычислительная мощность [13]. Данные преимущества очень важны во многих быстро растущих сферах цифровых технологий, включая «Интернет Вещей» [3] и «Умное производство» [10, 12].
Развитие связанных с данным направлением концепций в области программной инженерии, таких как микросервисная и событийноориентированная архитектуры, показало, что для взаимодействия большого числа вычислительных сервисов необходима общая среда передачи и маршрутизации сообщений [24]. В качестве такой среды чаще всего используются два класса инструментов: диспетчеры, или очереди, сообщений и платформы потоковой обработки данных. К первому классу относятся такие инструменты, как RabbitMQ и Apache ActiveMQ, ко второму Apache Kafka и Amazon Kinesis. Диспетчеры сообщений изначально были предназначены для развертывания на одном вычислительном узле и имеют ограничения по масштабируемости, а потоковые платформы ориентированы на распределенное хранение данных в кластере и одновременное обслуживание большого числа клиентских запросов [5]. Благодаря этому, такие системы, как Apache Kafka, способны обеспечивать непрерывную транспортировку миллионов сообщений в секунду между вычислительными сервисами [25].
В настоящее время Apache Kafka лежит в основе большого числа потоковых вычислительных систем: коммерческих проектов, например Confluent, и научных разработок: RADAR-base для работы с медицинскими устройствами [23], проект ESS в области нейтронной физики [21], Submarine для изучения химических, биологических и атмосферных данных Мирового океана [27]. Данные системы объединяет и то, что помимо Apache Kafka для организации потоковой обработки данных в них используется ряд популярных приложений и библиотек - коннекторы для импорта и экспорта данных из распространенных источников, регистр схем Apache Avro, созданные для распределенных вычислений фреймворки Hadoop, Spark и Flink. Все это позволяет говорить о полноценной потоковой вычислительной среде - совокупности источников и приемников потоков данных, и программных компонентов, предназначенных для их передачи и обработки [11].
Высокая архитектурная сложность потоковой вычислительной среды приводит к возникновению ряда проблем при попытке создания такой системы или адаптации к ней существующей информационной инфраструктуры [22, 26]:
• ранее разработанные приложения не могут быть встроены в такую систему без существенной модификации. В случае проприетарного программного обеспечения, это может стать непреодолимым препятствием при внедрении потоковой обработки данных;
• разработка и сопровождение вычислительных сервисов для таких систем требуют высокой квалификации в области программной инженерии, прикладного программирования и системного администрирования. Начинающим разработчикам и специалистам в фундаментальной науке, занимающимся такими системами, требуется серьезная поддержка от коллег и сообщества, что замедляет и усложняет проведение экспериментальных исследований;
• замена любого компонента в составе вычислительной среды или даже обновление его версии может привести к изменению программного интерфейса (Application Programming Interface, API), используемого другими компонентами и необходимости в переработке всей кодовой базы. В особенности это касается самой потоковой платформы.
Для решения данных проблем была предложена концепция адаптера потоков данных [22], который обеспечивает дополнительный слой абстракции между приложениями для обработки данных и средой их передачи. Использование адаптера позволяет приложениям работать с данными из потоковой платформы в локальной файловой системе и не зависеть от деталей ее конкретного программного интерфейса и технической реализации. Инструментальная библиотека, реализующая данную концепцию, поможет небольшим коллективам разработчиков и исследователей при создании действующих прототипов потоковых вычислительных систем и проведении экспериментов.
Примером другой области, в которой адаптер потоков данных может обеспечить значительное увеличение эффективности ранее разработанных программ, является управление многопользовательскими кластерными вычислениями. В частности, в данной работе рассматривается интеграция предложенного адаптера с системой управления такими вычислениями HTCondor [6], разработанной университетом Висконсин-Мэдисон и широко используемой научно-исследовательскими центрами по всему миру. Пользователи данной системы сталкиваются со сложностями, связанными с разделением рабочего времени на независимые этапы обработки и пересылки данных, а также отсутствием прямой коммуникации между вычислительными задачами [28]. Интеграция HTCondor с потоковой платформой Apache Kafka посредством разработанной библиотеки позволит решить данные проблемы и ускорить выполнение пользовательских задач.
Цель и задачи работы
Целью данной работы является разработка инструментальной библиотеки для внедрения приложений в потоковые вычислительные среды. Для ее решения требуется выполнить следующие задачи:
• реализовать в библиотеке концепцию адаптера потоков данных;
• разработать инструменты для конфигурирования и мониторинга работы адаптера;
• оценить эффективность адаптера относительно альтернативных решений для передачи данных между потоковой платформой и локальной файловой системой;
• выполнить интеграцию адаптера с системой управления многопользовательскими кластерными вычислениями HTCondor;
• оценить достигнутые преимущества над традиционным подходом к обработке данных.
Структура и объем работы
Данная курсовая работа состоит из введения, трех основных разделов, заключения и библиографии. Объем работы составляет 44 страницы, объем библиографии - 28 источников.
Первый раздел содержит обзор существующих технологий и подходов к решаемой библиотекой проблеме. Кроме того, в нем раскрыта реализованная в библиотеке концепция адаптера потока данных и перспективы ее применения, в частности, в области многопользовательских кластерных вычислений.
Второй раздел посвящен проектированию и реализации разрабатываемой библиотеки. В данном разделе рассмотрены выбранные при разработке системы подходы и технологии и описаны возможности, предоставляемые данной системой конечному пользователю.
Третий раздел описывает меры, использованные для повышения производительности работы библиотеки с Apache Kafka, и данные экспериментального сравнения производительности с аналогичными решениями . Он также содержит экспериментальную модель кластера, созданную для испытания библиотеки, и набор выполненных на нем экспериментов. Перечислены основные результаты, достигнутые в области кластерных вычислений за счет интеграции исполняемых задач с потоковой вычислительной средой.
В заключении содержатся выводы о проделанной работе.
Развитие связанных с данным направлением концепций в области программной инженерии, таких как микросервисная и событийноориентированная архитектуры, показало, что для взаимодействия большого числа вычислительных сервисов необходима общая среда передачи и маршрутизации сообщений [24]. В качестве такой среды чаще всего используются два класса инструментов: диспетчеры, или очереди, сообщений и платформы потоковой обработки данных. К первому классу относятся такие инструменты, как RabbitMQ и Apache ActiveMQ, ко второму Apache Kafka и Amazon Kinesis. Диспетчеры сообщений изначально были предназначены для развертывания на одном вычислительном узле и имеют ограничения по масштабируемости, а потоковые платформы ориентированы на распределенное хранение данных в кластере и одновременное обслуживание большого числа клиентских запросов [5]. Благодаря этому, такие системы, как Apache Kafka, способны обеспечивать непрерывную транспортировку миллионов сообщений в секунду между вычислительными сервисами [25].
В настоящее время Apache Kafka лежит в основе большого числа потоковых вычислительных систем: коммерческих проектов, например Confluent, и научных разработок: RADAR-base для работы с медицинскими устройствами [23], проект ESS в области нейтронной физики [21], Submarine для изучения химических, биологических и атмосферных данных Мирового океана [27]. Данные системы объединяет и то, что помимо Apache Kafka для организации потоковой обработки данных в них используется ряд популярных приложений и библиотек - коннекторы для импорта и экспорта данных из распространенных источников, регистр схем Apache Avro, созданные для распределенных вычислений фреймворки Hadoop, Spark и Flink. Все это позволяет говорить о полноценной потоковой вычислительной среде - совокупности источников и приемников потоков данных, и программных компонентов, предназначенных для их передачи и обработки [11].
Высокая архитектурная сложность потоковой вычислительной среды приводит к возникновению ряда проблем при попытке создания такой системы или адаптации к ней существующей информационной инфраструктуры [22, 26]:
• ранее разработанные приложения не могут быть встроены в такую систему без существенной модификации. В случае проприетарного программного обеспечения, это может стать непреодолимым препятствием при внедрении потоковой обработки данных;
• разработка и сопровождение вычислительных сервисов для таких систем требуют высокой квалификации в области программной инженерии, прикладного программирования и системного администрирования. Начинающим разработчикам и специалистам в фундаментальной науке, занимающимся такими системами, требуется серьезная поддержка от коллег и сообщества, что замедляет и усложняет проведение экспериментальных исследований;
• замена любого компонента в составе вычислительной среды или даже обновление его версии может привести к изменению программного интерфейса (Application Programming Interface, API), используемого другими компонентами и необходимости в переработке всей кодовой базы. В особенности это касается самой потоковой платформы.
Для решения данных проблем была предложена концепция адаптера потоков данных [22], который обеспечивает дополнительный слой абстракции между приложениями для обработки данных и средой их передачи. Использование адаптера позволяет приложениям работать с данными из потоковой платформы в локальной файловой системе и не зависеть от деталей ее конкретного программного интерфейса и технической реализации. Инструментальная библиотека, реализующая данную концепцию, поможет небольшим коллективам разработчиков и исследователей при создании действующих прототипов потоковых вычислительных систем и проведении экспериментов.
Примером другой области, в которой адаптер потоков данных может обеспечить значительное увеличение эффективности ранее разработанных программ, является управление многопользовательскими кластерными вычислениями. В частности, в данной работе рассматривается интеграция предложенного адаптера с системой управления такими вычислениями HTCondor [6], разработанной университетом Висконсин-Мэдисон и широко используемой научно-исследовательскими центрами по всему миру. Пользователи данной системы сталкиваются со сложностями, связанными с разделением рабочего времени на независимые этапы обработки и пересылки данных, а также отсутствием прямой коммуникации между вычислительными задачами [28]. Интеграция HTCondor с потоковой платформой Apache Kafka посредством разработанной библиотеки позволит решить данные проблемы и ускорить выполнение пользовательских задач.
Цель и задачи работы
Целью данной работы является разработка инструментальной библиотеки для внедрения приложений в потоковые вычислительные среды. Для ее решения требуется выполнить следующие задачи:
• реализовать в библиотеке концепцию адаптера потоков данных;
• разработать инструменты для конфигурирования и мониторинга работы адаптера;
• оценить эффективность адаптера относительно альтернативных решений для передачи данных между потоковой платформой и локальной файловой системой;
• выполнить интеграцию адаптера с системой управления многопользовательскими кластерными вычислениями HTCondor;
• оценить достигнутые преимущества над традиционным подходом к обработке данных.
Структура и объем работы
Данная курсовая работа состоит из введения, трех основных разделов, заключения и библиографии. Объем работы составляет 44 страницы, объем библиографии - 28 источников.
Первый раздел содержит обзор существующих технологий и подходов к решаемой библиотекой проблеме. Кроме того, в нем раскрыта реализованная в библиотеке концепция адаптера потока данных и перспективы ее применения, в частности, в области многопользовательских кластерных вычислений.
Второй раздел посвящен проектированию и реализации разрабатываемой библиотеки. В данном разделе рассмотрены выбранные при разработке системы подходы и технологии и описаны возможности, предоставляемые данной системой конечному пользователю.
Третий раздел описывает меры, использованные для повышения производительности работы библиотеки с Apache Kafka, и данные экспериментального сравнения производительности с аналогичными решениями . Он также содержит экспериментальную модель кластера, созданную для испытания библиотеки, и набор выполненных на нем экспериментов. Перечислены основные результаты, достигнутые в области кластерных вычислений за счет интеграции исполняемых задач с потоковой вычислительной средой.
В заключении содержатся выводы о проделанной работе.
В ходе работы достигнуты следующие основные результаты:
• реализована в виде библиотеки на языке Kotlin концепция адаптера потоков данных;
• разработаны и включены в состав библиотеки средства конфигурирования и мониторинга работы адаптера;
• дана оценка эффективности использования адаптера для передачи потоков данных по сравнению с альтернативными решениями;
• предложен и реализован в рамках экспериментальной модели подход к интеграции адаптера с системой управления многопользовательскими кластерными вычислениями HTCondor;
• выполнена оценка достигнутых преимущества над традиционным подходом к обработке данных.
В ходе выполнения работы была подготовлена статья «Dataflow adapter: a tool for integrating legacy applications into distributed stream processing», опубликованная в сборнике трудов конференции UCC Companion 2018.
• реализована в виде библиотеки на языке Kotlin концепция адаптера потоков данных;
• разработаны и включены в состав библиотеки средства конфигурирования и мониторинга работы адаптера;
• дана оценка эффективности использования адаптера для передачи потоков данных по сравнению с альтернативными решениями;
• предложен и реализован в рамках экспериментальной модели подход к интеграции адаптера с системой управления многопользовательскими кластерными вычислениями HTCondor;
• выполнена оценка достигнутых преимущества над традиционным подходом к обработке данных.
В ходе выполнения работы была подготовлена статья «Dataflow adapter: a tool for integrating legacy applications into distributed stream processing», опубликованная в сборнике трудов конференции UCC Companion 2018.





