Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[JPoint 2017] Распределяй и властвуй — 2: Поток...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

[JPoint 2017] Распределяй и властвуй — 2: Потоки данных наносят ответный удар

Виктор возвращается с продолжением доклада про обработку данных в памяти! На этот раз он противопоставит «потоковый» подход «пакетному». Как мы знаем, информации, зараза, много! Мало того, что её много, так ещё никто не хочет сидеть и ждать, пока Hadoop-кластер посчитает всё. Big Data уже не интересно, Fast Data — наше новое «всё»! Так что же делать, если новые данные всё прибывают и прибывают по каналам связи (через сокет-сервер ли или модную нынче Кафку) ежесекундно (а может, даже и быстрее)? Можно было бы складывать их в какое-нибудь хранилище и считать по ночам MapReduce-ом. Или всё-таки прибегнем к потоковой обработке? У каждого подхода есть свои преимущества и недостатки: как очевидные, так и те, что не всегда лежат на поверхности. После небольшого введения и обзора терминов Виктор на основе примеров кода покажет, как использовать Hazelcast Jet для распределенной обработки потоковых данных.

Viktor Gamov

April 07, 2017

Transcript

169 slides
  1. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Нам пишут

    ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно.
  2. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Нам пишут

    ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно.
  3. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Нам пишут

    ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно.
  4. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Нам пишут

    ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно. ✓ Все так
  5. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Нам пишут

    ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно. ✓ Все так ✓ Читайте абстракт ✓ Как и Вы, я здесь в коммандировке
  6. @gamussa @hazelcast #jpoint Disclaimer: Ham пишут ? Спикер … уделяет

    время лишь одному банальному примеру подсчёта слов в файле с использованием фреймворка их компании. * авторская орфография сохранена
  7. @gamussa @hazelcast #jpoint Обработка – это запрос Функция по полному

    набору данных Проекции Агрегации Joins
  8. private static void countVotes(IMap<String, Vote> userVotes) { // execute the

    aggregation and print the result long countVotes = userVotes .aggregate(Aggregators.<String, Vote>count()); }
  9. @gamussa @hazelcast #jpoint Хранилище вьыдачи Очень легко читать K,V –

    в идеале Очень быстро читать хранить в памяти
  10. @gamussa @hazelcast #jpoint Хранилище вьыдачи Очень легко читать K,V –

    в идеале Очень быстро читать хранить в памяти хранить предподсчитанный результат
  11. @gamussa @hazelcast #jpoint Hazelcast IMDG, ьерем? In-memory Data Grid Распределенные

    Кэши (IMap, JCache) Проекции, Агрегации Java колекции (IList, ISet, IQueue) Система обмена сообщений (Topic, RingBuffer) Вычисления (ExecutorService, M-R)
  12. @gamussa @hazelcast #jpoint КУРСОР НЕ УКАЗЫВАЕТ НА КОРРЕКТНУЮ ЗАПИСЬ. МОГУТ

    ВОЗНИКАТЬ ДУБЛИКАТЫ ИЛИ ДАННЫЕ ПРОПАДАТЬ
  13. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках)
  14. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость
  15. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость data affinity
  16. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking
  17. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG
  18. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG распределенные данные
  19. @gamussa @hazelcast #jpoint Jet против мира Big Data Простота в

    разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG распределенные данные discovery
  20. @gamussa @hazelcast #jpoint Локальность и привязка данньых Скорость и низкие

    задержки данные и вычисления расположены на одной ноде
  21. @gamussa @hazelcast #jpoint Локальность и привязка данньых Скорость и низкие

    задержки данные и вычисления расположены на одной ноде Привязка к структуре партиций
  22. @gamussa @hazelcast #jpoint Направленньый ациклический граф Модель описания выполнения Вершина

    – шаг выполнения Работает как для пакетной и потоковой
  23. @gamussa @hazelcast #jpoint Исполнение графа Каждая нода кластера исполняет граф

    целиком Каждая вершина графа исполняется набором tasklet-ов
  24. @gamussa @hazelcast #jpoint Исполнение графа Каждая нода кластера исполняет граф

    целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков
  25. @gamussa @hazelcast #jpoint Исполнение графа Каждая нода кластера исполняет граф

    целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров
  26. @gamussa @hazelcast #jpoint Исполнение графа Каждая нода кластера исполняет граф

    целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров Work-stealing между потоками
  27. @gamussa @hazelcast #jpoint Исполнение графа Каждая нода кластера исполняет граф

    целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров Work-stealing между потоками Back pressure между вершинами
  28. @gamussa @hazelcast #jpoint Cooperative Multithreading Cooperative Processors выполняются в цикле,

    который выполняется в native треде нет переключения контекста привязка к ядру процессора
  29. @gamussa @hazelcast #jpoint Cooperative Multithreading Cooperative Processors выполняются в цикле,

    который выполняется в native треде нет переключения контекста привязка к ядру процессора Каждый tasklet выполняет небольшой небольшую часть работы (<1ms)
  30. @gamussa @hazelcast #jpoint Cooperative Multithreading Cooperative Processors выполняются в цикле,

    который выполняется в native треде нет переключения контекста привязка к ядру процессора Каждый tasklet выполняет небольшой небольшую часть работы (<1ms)
  31. @gamussa @hazelcast #jpoint Cooperative Multithreading 1 поток может выполнять ~1000

    tasklet Если нечего делать, тред Ребра графа имплементированы с помощью RingBuffer – single producer / single consumer
  32. @gamussa @hazelcast #jpoint Cooperative Multithreading 1 поток может выполнять ~1000

    tasklet Если нечего делать, тред Ребра графа имплементированы с помощью RingBuffer – single producer / single consumer
  33. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Ham пишут

    ? Про фэйлы нод в хазелкасие хотелось бы услышать откровений и примеры из жизни.
  34. @gamussa @hazelcast #jpoint * авторская орфография сохранена Disclaimer: Ham пишут

    ? Про фэйлы нод в хазелкасие хотелось бы услышать откровений и примеры из жизни.
  35. @gamussa @hazelcast #jpoint Проблемьы Устойчивость к сбоям Работа с «бесконечными»

    данными Неупорядоченные и «опоздавшие» события
  36. @gamussa @hazelcast #jpoint 10 +1 Бэкапьы Консистентный бэкап системы Обработка

    «At-least once» vs «Exactly once» Снэпшот распределенной системы
  37. @gamussa @hazelcast #jpoint 10 10 Бэкапьы Консистентный бэкап системы Обработка

    «At-least once» vs «Exactly once» Снэпшот распределенной системы
  38. @gamussa @hazelcast #jpoint 10 10 11 Бэкапьы Консистентный бэкап системы

    Обработка «At-least once» vs «Exactly once» Снэпшот распределенной системы
  39. @gamussa @hazelcast #jpoint 10 11 10 11 Бэкапьы Консистентный бэкап

    системы Обработка «At-least once» vs «Exactly once» Снэпшот распределенной системы
  40. @gamussa @hazelcast #jpoint Time-based обработка Привязка записей к окнам на

    основе Времени события Времени обработки
  41. @gamussa @hazelcast #jpoint Time-based обработка Привязка записей к окнам на

    основе Времени события Времени обработки Сколько ждать «запоздалых» данных?
  42. @gamussa @hazelcast #jpoint Time-based обработка Привязка записей к окнам на

    основе Времени события Времени обработки Сколько ждать «запоздалых» данных? Точность vs Память
  43. @gamussa @hazelcast #jpoint Потоковая обработка: итоги • Получать результаты вычислений

    реальном времени возможно! • Окна – конечное представление бесконечных данных • Окна основаны на временнЫх параметрах (время события + время обработки)
  44. @gamussa @hazelcast #jpoint Потоковая обработка: итоги • Получать результаты вычислений

    реальном времени возможно! • Окна – конечное представление бесконечных данных • Окна основаны на временнЫх параметрах (время события + время обработки) • Обработка «запоздалых» событий • Вам решать, сколько ждать

More Decks by Viktor Gamov

Other Decks in Programming