На прикладі, це виглядає так: веб сервери пишуть логи з 11:00 до 11:59, о 12:00 вони починають писати нові логи, а ми забираємо логи за попередню годину (11:00 - 11:59) і починаємо їх процесати. Припустимо це займає біля 15ти хвилин. Отже, лише після 12:15 ми матимемо дані за попередню годину. Додаму сюди можливі проблеми - з нетфорком чи фейли в кластрі, тобто треба мати запас як мінімум на ще один перезапуск хадупівських джобів. Отже, ми можемо обіцяти кастомеру готові дані з затримкою хвилин в 40 (ну що б з гарантією 99%), а в маркетингових цілях - так і взагалі лише о 13:00 :)
Отже, виходе якось не дуже:( Звісно, нам би хотілося усю цю аналітику показувати в "в реальному часі" (в гугл аналітікс і така вкладка є), а для цього хадуп вже якось не дуже підходить...
Нащастя, і для цього вже придумали ріщення - називається Storm, родом з Твітера де використовується для побудови малопримітної колоночки "тренди". Ну а ще її можна застосувати, щоб показувати статистику по відвідуваннях для різних критеріїв, в режимі наближеному до реального часу.
Storm кардинально відрізняєтсья від Hadoop в першу чергу своєю орієнтованістю на потокову обробку даних, тут немає окремих етапів заходу даних, їх обробки і видання результату - усе це відбуваєтсья постійно, як потік води. Друга відмінність - Storm не пропонує готових MapReduce компонентів, вас не обмежують використанням цього алгоритму.
Основні компоненти Шторму:
- тапл - структура даних, яка використовується для комунікації між компонентами Шторма (по-суті ,нагадує тапл з ерланга, го чи пайтона)
- потік, який забезпечує транспорт таплів між компонентами
- spout - джерело даних в Штром, забезпечує попадання даних в середину та їх перетворення на тапли
- bolt - основний компонент, який виконує якісь обчислення над таплами
- топологія - по суті описаний вами флоу для обробки даних, може виконуватися локально, так і деплоітися на тисячі машин :)
тепер ми можемо приймати дані від веб-сервера про нових відвідувачів "як тільки", розсилати бродкастом усім зацікавленим болтам, які зроблять агрегацію і оперативно віддадуть це наступному болту. який вже віддасть цей результат назовні і наші щасливі кастомери зможуть насолоджуватися стаститикою з затримкою в кілька секунд.
На цьому все, усе дуже просто, якщо виникнуть питання - задавайте
Немає коментарів:
Дописати коментар