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

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

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

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

Viktor Gamov

April 07, 2017
Tweet

More Decks by Viktor Gamov

Other Decks in Programming

Transcript

  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 Потоковая обработка: итоги • Получать результаты вычислений

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