Гохкаленко С. Д. СЕРВІС ЗБОРУ, ЗБЕРІГАННЯ ТА ОБРОБКИ ДАНИХ В РЕАЛЬНОМУ ЧАСІ

УДК 05.13.01

 

СЕРВІС ЗБОРУ, ЗБЕРІГАННЯ ТА ОБРОБКИ ДАНИХ В РЕАЛЬНОМУ ЧАСІ

Гохкаленко С. Д.

Національний технічний університет України «Київський політехнічний інститут», Україна, Київ

 

Досліджується проблема обробки великої кількості даних, зберігання даних в хмарних системах. Аналізуються існуючі способи збору та обробки даних за допомогою хмарних обчислень, принципи їх роботи. Пропонується розробка інфраструктури, яка вирішить проблеми такі, розподіл навантаження, обробка відмов, збір і агрегація аналітики та результатів аналізу.

Ключові слова: збір аналітики, Amazon Web Services, Big Data, пошукові системи, Сloud Computing.

 

Гохкаленко С. Д. Сервис сбора, хранения и обработки данных в реальном времени/ Национальный технический университет Украины "Киевский политехнический институт", Украина, Киев

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

Ключевые слова: сбор аналитики , Amazon Web Services , Big Data , поисковые системы , Сloud Computing .

 

Hokhkalenko S. Service for collecting, storing and processing data in real time, National Technical University of Ukraine "Kyiv Polytechnic Institute", Ukraine, Kyiv

In the article investigating the problem of processing large amounts of data storage in cloud systems. Researched the existing methods of collecting and processing data using cloud computing, how they work. It is proposed to develop infrastructure that will solve problems such load distribution, treatment failures , collection and aggregation of intelligence and analysis .

Keywords: Collection of analytics, Amazon Web Services, Big Data, search engines, Cloud Computing.

 

Вступ. Задача полягає у створенні сервісу, який буде збирати дані, та обробляти їх в реальному часі. Важливою частиною реалізації є те, що система має бути стресостійкою, надійною та з відносно малим часом відклику, оскільки будуть оброблятись великі об’єми данних[1].

Очевидно, що додаток такого типу має бути мультикомпонентим, щоб розділити процеси та логіку, виконувати задачі паралельно на різних серверах.

Збір данних. Джерелом даних для нашої системи є дані з пристроїв. Для пристроїв реалізований клієнт на мові С++. Основний функціонал клієнта полягає у проведенні деякого ряду тестів, формування звіту на їх основі та відправлення їх до сервісу S3. Звіт створювався у вигляді файлу json, який перед відправкою архівувався на клієнті.

Для тестування навантажень був використаний емулятор написаний на java. Одночасно на декількох машинах запускалася велика кількість потоків виконання і сервер проходив перевірку по кількості оброблених записів.

Вибір технологій та проектування. Для реалізації даної інфраструктури за основу був вибраний Amazon Web Services (AWS)[2] в якості постачальника хмарних рішень. Вирішено було використати Amazon S3 як сховище "необмеженої кількості" даних і Amazon EC2 для хостингу серверів.

Веб-додаток Frontend має служити для відображення кінцевим користувачам результатів аналізу результатів данних.

Backend сервіс, що складається з бізнес-логіки, правил доступу до даних і рівнем безпеки також розміщується на Amazon EC2.

Обидва додатки побудовані з використанням стека JEE.

Метадані для файлів, які містять інформацію для аналізу (дані з датчиків, результати виконання тестів), зберігаються в базі даних MySQL, яка в нашому випадку працює поверх Amazon RDS.

Реалізація. Одною із основних рекомендацій для розробки високонавантажених сервісів є простота. Простота забезпечує не тільки зручність процесу реалізації. Основною її перевагою є швидкодія. Написані на базових можливостях мови системи майже завжди працюють швидше систем які використовують бібліотеки та фреймворки. Це зумовлено тим, що використовуючи зручність стороннього інструмента ми втрачаємо у швидкості за рахунок зайвого функціоналу та операцій, додаткових ресурсів для адаптації бібліотеки під конкретне рішення.

Звучить просто: один додаток на величезному одному екземплярі, споживаючи вхідні запити, читає файли даних з Amazon S3 і обробляє їх паралельно. Проте, є деякі очевидні проблеми:

Випробування показали, середній розмір відповіді становить близько 8 МБ. Для 100 майже одночасних запитів розмір відповідей досягає 8 МБ * 100 = 800 МБ. Вихідні дані для процесу, щонайменше в 30 разів більші. Так що нам потрібно Amazon S3 для зберігання 30 * 800 MB ~ 24 ГБ. При піковому навантаженні (в 200 разів більше, так як ми знаємо, що може статися), було б 200 * 800 MB ~ 160 ГБ даних.

Amazon EC2 надає широкий вибір примірників для цих вимог. Проте, навіть найбільший з них, d2.8xlarge (36 х Intel Xeon E5-2676v3, 244 Гб оперативної пам'яті), насправді вирішує питання 1 і 2. Але час для обробки (випуск 3) є неприйнятним, оскільки 98 секунд набагато більше ніж прийнятий час відгуку 500 мс. Крім того, є питання, які, очевидно, не можуть бути вирішені за допомогою єдиного додатка.

Elastic MapReduce. Для таких задач AWS забезпечує на основі хмарних обчислень Elastic MapReduce або ЕМІ (Apache Hadoop змінений і попередньо встановлений для роботи на інфраструктурі AWS).

Завдяки можливості балансування навантаження, більшість наших проблем вирішуються застосуванням цієї технології. Проте, існують деякі обмеження:

-Час, необхідний для запуску Hadoop в роботу -кілька секунд.

-Вихідні дані повинні бути попередньо завантажені в сховище HDFS з S3.

-Кінцевий результат, як правило, завантажується на S3 або HDFS зберігання, змушуючи нас будувати додаткову інфраструктуру, щоб доставити результат з цього сховища до кінцевого користувача.

-У загальному випадку Elastic MapReduce ідеально підходить для обробки даних. Для наших процедур візуалізації в реальному часі він добре підходить.

 

Повний текст статті за посиланням Stattya_Gohkalenko.doc

Поиск по сайту

Конференции

Please publish modules in offcanvas position.