Почніть обробку даних за допомогою Kafka та Spark

| | 0 Comments| 1:13 PM
Categories:

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

У цій публікації ми дізнаємося, що таке обробка великих даних, як це робиться, а також дослідимо Apache Kafka та Spark – два найвідоміші інструменти обробки даних!

Що таке обробка даних? Як це робиться?

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

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

Традиційна обробка даних проводилася за допомогою простого програмного забезпечення. Однак з появою Big Data все змінилося. Великі дані — це інформація, обсяг якої може перевищувати сто терабайт і петабайт.

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

Дані обробляються, коли вони надходять до місця призначення. Деякі автори називають це обробкою в режимі реального часу або онлайн. Іншим підходом є блочна, пакетна або автономна обробка, у якій блоки даних обробляються в часових вікнах годин або днів. Часто пакет – це процес, який виконується вночі, консолідуючи дані цього дня. Бувають випадки, коли часові вікна в тиждень або навіть місяць генерують застарілі звіти.

Враховуючи те, що найкращі платформи обробки великих даних через потокове передавання є відкритими джерелами, такими як Kafka та Spark, ці платформи дозволяють використовувати інші різні та додаткові платформи. Це означає, що вони з відкритим кодом розвиваються швидше та використовують більше інструментів. Таким чином, потоки даних отримуються з інших місць зі змінною швидкістю та без будь-яких перерв.

Тепер ми розглянемо два найбільш відомі інструменти обробки даних і порівняємо їх:

Апач Кафка

Apache Kafka — це система обміну повідомленнями, яка створює потокові програми з безперервним потоком даних. Спочатку створений LinkedIn, Kafka базується на журналі; журнал є основною формою зберігання, оскільки кожна нова інформація додається в кінець файлу.

Kafka — одне з найкращих рішень для великих даних, оскільки його основна характеристика — висока пропускна здатність. З Apache Kafka можна навіть трансформувати пакетну обробку в режимі реального часу,

Apache Kafka — це система обміну повідомленнями для публікації та підписки, у якій програма публікує, а програма, яка підписується, отримує повідомлення. Час між публікацією та отриманням повідомлення може становити мілісекунди, тому рішення Kafka має низьку затримку.

  Як створити анімовані кругові діаграми в PowerPoint

Творчість Кафки

Архітектура Apache Kafka включає виробників, споживачів і сам кластер. Виробником є ​​будь-яка програма, яка публікує повідомлення в кластер. Споживач — будь-яка програма, яка отримує повідомлення від Kafka. Кластер Kafka — це набір вузлів, які функціонують як єдиний екземпляр служби обміну повідомленнями.

Творчість Кафки

Кластер Kafka складається з кількох брокерів. Брокер — це сервер Kafka, який отримує повідомлення від виробників і записує їх на диск. Кожен брокер керує списком тем, і кожна тема розділена на кілька розділів.

Після отримання повідомлень брокер розсилає їх зареєстрованим споживачам для кожної теми.

Налаштуваннями Apache Kafka керує Apache Zookeeper, який зберігає метадані кластера, такі як розташування розділу, список імен, список тем і доступні вузли. Таким чином, Zookeeper підтримує синхронізацію між різними елементами кластера.

Zookeeper важливий, оскільки Kafka — це розподілена система; тобто запис і читання виконується декількома клієнтами одночасно. У разі збою Зоокіпер обирає заміну та відновлює роботу.

Випадки використання

Kafka став популярним, особливо через його використання як інструмент обміну повідомленнями, але його універсальність виходить за рамки цього, і його можна використовувати в різних сценаріях, як у прикладах нижче.

Обмін повідомленнями

Асинхронна форма спілкування, яка роз’єднує сторони, які спілкуються. У цій моделі одна сторона надсилає дані як повідомлення до Kafka, тому інша програма пізніше споживає їх.

Відстеження активності

Дозволяє зберігати й обробляти дані відстеження взаємодії користувача з веб-сайтом, наприклад перегляди сторінок, кліки, введення даних тощо; цей тип діяльності зазвичай генерує великий обсяг даних.

Метрики

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

Агрегація журналів

Централізовано збирає та зберігає файли журналів, отримані з інших систем.

Потокова обробка

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

Для підтримки цих функцій платформа по суті надає три API:

  • Streams API: він діє як потоковий процесор, який споживає дані з однієї теми, перетворює їх і записує в іншу.
  • API конекторів: дозволяє підключати теми до існуючих систем, таких як реляційні бази даних.
  • API виробника та споживача: дозволяє програмам публікувати та використовувати дані Kafka.

плюси

Репліковано, розділено та впорядковано

Повідомлення в Kafka реплікуються між розділами на вузлах кластера в порядку надходження, щоб забезпечити безпеку та швидкість доставки.

Перетворення даних

З Apache Kafka можна навіть трансформувати пакетну обробку в режимі реального часу за допомогою пакетного API потоків ETL.

Послідовний доступ до диска

Apache Kafka зберігає повідомлення на диску, а не в пам’яті, оскільки це має бути швидше. Насправді доступ до пам’яті є швидшим у більшості ситуацій, особливо якщо розглядати доступ до даних, які знаходяться у випадкових місцях пам’яті. Однак Kafka виконує послідовний доступ, і в цьому випадку диск ефективніший.

Apache Spark

Apache Spark — це механізм обробки великих даних і набір бібліотек для паралельної обробки даних у кластерах. Spark є еволюцією Hadoop і парадигми програмування Map-Reduce. Він може бути в 100 разів швидшим завдяки ефективному використанню пам’яті, яка не зберігає дані на дисках під час обробки.

  Як зберегти презентації Microsoft PowerPoint як файли PDF

Spark організовано на трьох рівнях:

  • API низького рівня: цей рівень містить базові функції для виконання завдань та інші функції, необхідні іншим компонентам. Іншими важливими функціями цього рівня є керування безпекою, мережею, плануванням і логічним доступом до файлових систем HDFS, GlusterFS, Amazon S3 та інших.
  • Структуровані API: Рівень структурованого API стосується маніпулювання даними за допомогою наборів даних або фреймів даних, які можна читати в таких форматах, як Hive, Parquet, JSON тощо. Використовуючи SparkSQL (API, який дозволяє нам писати запити в SQL), ми можемо маніпулювати даними так, як хочемо.
  • Високий рівень: на найвищому рівні ми маємо екосистему Spark з різними бібліотеками, зокрема Spark Streaming, Spark MLlib і Spark GraphX. Вони відповідальні за турботу про прийом потокових даних і супутні процеси, такі як відновлення після збою, створення та перевірку класичних моделей машинного навчання, а також роботу з графіками й алгоритмами.

Робота Spark

Архітектура програми Spark складається з трьох основних частин:

Програма-драйвер: вона відповідає за організацію виконання обробки даних.

Менеджер кластера: це компонент, який відповідає за керування різними машинами в кластері. Потрібен, лише якщо Spark працює розподілено.

Робочі вузли: це машини, які виконують завдання програми. Якщо Spark запускається локально на вашій машині, він виконуватиме роль програми драйвера та ролі Workes. Цей спосіб запуску Spark називається Standalone.

Огляд кластера

Код Spark можна написати кількома різними мовами. Консоль Spark під назвою Spark Shell є інтерактивною для вивчення та дослідження даних.

Так звана програма Spark складається з одного або кількох завдань, що забезпечує підтримку великомасштабної обробки даних.

Коли ми говоримо про виконання, Spark має два режими:

  • Клієнт: драйвер запускається безпосередньо на клієнті, який не проходить через диспетчер ресурсів.
  • Кластер: драйвер, що працює на головному пристрої програми через диспетчер ресурсів (у режимі кластера, якщо клієнт від’єднається, програма продовжить роботу).

Необхідно правильно використовувати Spark, щоб зв’язані служби, такі як Resource Manager, могли визначити потребу в кожному виконанні, забезпечуючи найкращу продуктивність. Тож розробник повинен знати, як найкраще виконувати завдання Spark, структурувати виклик, а для цього ви можете структурувати та налаштовувати виконавців Spark так, як вам потрібно.

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

Випадки використання

Apache Spark допомагає обробляти величезні обсяги даних, як у реальному часі, так і в архіві, структурованих чи неструктурованих. Нижче наведено деякі з популярних випадків використання.

Збагачення даних

Часто компанії використовують комбінацію історичних даних про клієнтів із даними про поведінку в реальному часі. Spark може допомогти створити безперервний конвеєр ETL для перетворення неструктурованих даних подій у структуровані дані.

Активація виявлення події

Spark Streaming дозволяє швидко виявляти та реагувати на певну рідкісну або підозрілу поведінку, яка може вказувати на потенційну проблему або шахрайство.

  Як автоматично приховати електронні листи за допомогою правил в Outlook

Комплексний аналіз даних сеансу

За допомогою Spark Streaming можна групувати й аналізувати події, пов’язані із сеансом користувача, наприклад його дії після входу в програму. Цю інформацію також можна постійно використовувати для оновлення моделей машинного навчання.

плюси

Ітеративна обробка

Якщо завдання полягає в повторній обробці даних, відмовостійкі розподілені набори даних (RDD) Spark дозволяють виконувати кілька операцій з картами в пам’яті без необхідності записувати проміжні результати на диск.

Графічна обробка

Обчислювальна модель Spark із GraphX ​​API чудово підходить для ітераційних обчислень, типових для обробки графіки.

Машинне навчання

Spark має MLlib — вбудовану бібліотеку машинного навчання, яка містить готові алгоритми, які також працюють у пам’яті.

Кафка проти Спарка

Незважаючи на те, що інтерес людей до Кафки та Іскри був майже однаковим, між ними все ж існують деякі серйозні відмінності; давай подивимось.

#1. Обробка даних

Kafka — це інструмент потокового передавання та зберігання даних у реальному часі, який відповідає за передачу даних між програмами, але цього недостатньо для створення повного рішення. Тому для завдань, яких немає у Кафки, потрібні інші інструменти, наприклад Spark. З іншого боку, Spark — це платформа пакетної обробки даних, яка отримує дані з тем Kafka і перетворює їх у комбіновані схеми.

#2. Управління пам’яттю

Spark використовує надійні розподілені набори даних (RDD) для керування пам’яттю. Замість того, щоб намагатися обробити величезні набори даних, він розподіляє їх між кількома вузлами в кластері. Навпаки, Kafka використовує послідовний доступ, подібний до HDFS, і зберігає дані в буферній пам’яті.

#3. Перетворення ETL

І Spark, і Kafka підтримують процес перетворення ETL, який копіює записи з однієї бази даних в іншу, як правило, з транзакційної бази (OLTP) в аналітичну основу (OLAP). Однак, на відміну від Spark, який має вбудовану можливість для процесу ETL, Kafka покладається на Streams API для його підтримки.

#4. Постійність даних

Використання RRD у Spark дозволяє зберігати дані в кількох місцях для подальшого використання, тоді як у Kafka вам потрібно визначити об’єкти набору даних у конфігурації, щоб зберегти дані.

#5. Складність

Spark — це повне рішення, яке легше освоїти завдяки підтримці різних мов програмування високого рівня. Kafka залежить від ряду різних API і сторонніх модулів, що може ускладнити роботу.

#6. Відновлення

І Spark, і Kafka пропонують варіанти відновлення. Spark використовує RRD, що дозволяє безперервно зберігати дані, і в разі збою кластера їх можна відновити.

Kafka безперервно копіює дані всередині кластера та реплікує між брокерами, що дозволяє переходити до інших брокерів у разі збою.

Подібності між Спарк і Кафкою

Apache SparkApache KafkaOpenSourceOpenSourceBuild Data Streaming ApplicationBuild Data Streaming ApplicationSupports Stateful ProcessingSupport Stateful ProcessingSupports SQLSupports SQLSipimalities between Spark and Kafka

Заключні слова

Kafka та Spark є інструментами з відкритим вихідним кодом, написаними на Scala та Java, які дозволяють створювати програми потокового передавання даних у реальному часі. Вони мають кілька спільних речей, включаючи обробку стану, підтримку SQL і ETL. Kafka і Spark також можна використовувати як додаткові інструменти, щоб допомогти вирішити проблему складності передачі даних між програмами.