Disclaimer: Нам пишут ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно. * авторская орфография сохранена @gamussa
@hazelcast
#jpoint
Slide 12
Disclaimer: Нам пишут ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно. * авторская орфография сохранена @gamussa
@hazelcast
#jpoint
Slide 13
Disclaimer: Нам пишут ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно. * авторская орфография сохранена @gamussa
@hazelcast
#jpoint
Slide 14
Disclaimer: Нам пишут ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно.
✓ Все так 😏
Disclaimer: Нам пишут ? Из названия не было понятно, что это пропоганда хазлкаста, что не правильно.
✓ Все так 😏 ✓ Читайте абстракт ✓ Как и Вы, я здесь в коммандировке
Disclaimer: Ham пишут ? Спикер … уделяет время лишь одному банальному примеру подсчёта слов в файле с использованием фреймворка их компании. * авторская орфография сохранена @gamussa
@hazelcast
#jpoint
Slide 18
Slide 19
Пакетная Обработка Данные в состоянии покоя
@gamussa
@hazelcast
#jpoint
Slide 20
Данные и запросы Происхождение и обработка
@gamussa
@hazelcast
#jpoint
Slide 21
@gamussa
@hazelcast
#jpoint
Slide 22
@gamussa
@hazelcast
#jpoint
Slide 23
Данньые…
@gamussa
@hazelcast
#jpoint
Slide 24
Данньые…
@gamussa
@hazelcast
#jpoint
Slide 25
Данньые… ✓ … привязаны ко времени ✓ … immutable по своей сути
@gamussa
@hazelcast
#jpoint
Обработка – это запрос
@gamussa
@hazelcast
#jpoint
Slide 28
Обработка – это запрос Функция по полному набору данных
@gamussa
@hazelcast
#jpoint
Slide 29
Обработка – это запрос Функция по полному набору данных Проекции
@gamussa
@hazelcast
#jpoint
Slide 30
Обработка – это запрос Функция по полному набору данных Проекции Агрегации
@gamussa
@hazelcast
#jpoint
Slide 31
Обработка – это запрос Функция по полному набору данных Проекции Агрегации Joins
@gamussa
@hazelcast
#jpoint
Slide 32
SELECT user_vote, count(*) FROM AccessLog WHERE event_date BETWEEN”04/07/2017” AND “04/07/2017” GROUP BY user_vote;
Slide 33
SELECT user_vote, count(*) FROM AccessLog WHERE event_date BETWEEN “04/7/2017” AND “04/08/2017” GROUP BY user_vote;
Slide 34
SELECT user_vote, count(*) FROM AccessLog WHERE event_date BETWEEN”04/07/2017” AND “04/08/2007” GROUP BY user_vote;
Slide 35
private static void countVotes(IMap<String, Vote> userVotes) { // execute the aggregation and print the result long countVotes = userVotes .aggregate(Aggregators.<String, Vote>count()); }
Предподсчитанньый результат
http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html @gamussa
@hazelcast
#jpoint
Slide 41
Пакетньый процесс
http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html @gamussa
@hazelcast
#jpoint
Slide 42
Slide 43
Хранилище вьыдачи
@gamussa
@hazelcast
#jpoint
Slide 44
Хранилище вьыдачи Очень легко читать
@gamussa
@hazelcast
#jpoint
Slide 45
Хранилище вьыдачи Очень легко читать K,V – в идеале
@gamussa
@hazelcast
#jpoint
Slide 46
Хранилище вьыдачи Очень легко читать K,V – в идеале Очень быстро читать
@gamussa
@hazelcast
#jpoint
Slide 47
Хранилище вьыдачи Очень легко читать K,V – в идеале Очень быстро читать хранить в памяти
@gamussa
@hazelcast
#jpoint
Slide 48
Хранилище вьыдачи Очень легко читать K,V – в идеале Очень быстро читать хранить в памяти хранить предподсчитанный результат
@gamussa
@hazelcast
#jpoint
Slide 49
Данные слишком важны, чтобы хранить их на одной машине
Slide 50
Oracle Coherence
@gamussa
@hazelcast
#jpoint
Slide 51
Oracle Coherence In-memory data grid
@gamussa
@hazelcast
#jpoint
Slide 52
Oracle Coherence In-memory data grid Распределенные кэши
@gamussa
@hazelcast
#jpoint
Slide 53
Oracle Coherence In-memory data grid Распределенные кэши Коммерческий продукт
@gamussa
@hazelcast
#jpoint
Slide 54
Infinispan
@gamussa
@hazelcast
#jpoint
Slide 55
Infinispan In-memory data grid
@gamussa
@hazelcast
#jpoint
Slide 56
Infinispan In-memory data grid распределённые кэши
@gamussa
@hazelcast
#jpoint
Hazelcast IMDG, ьерем? In-memory Data Grid
@gamussa
@hazelcast
#jpoint
Slide 67
Hazelcast IMDG, ьерем? In-memory Data Grid Распределенные Кэши (IMap, JCache) Проекции, Агрегации Java колекции (IList, ISet, IQueue) Система обмена сообщений (Topic, RingBuffer) Вычисления (ExecutorService, M-R)
@gamussa
@hazelcast
#jpoint
Slide 68
Slide 69
@gamussa @hazelcast
#oraclecode
Slide 70
Пример: ПАКЕТНАЯ ОБРАБОТКА НА HAZELCAST и SPARK
@gamussa
@hazelcast
#jpoint
Slide 71
ДАННЫЕ НЕ ДОЛЖНЫ ОБНОВЛЯТЬСЯ ВО ВРЕМЯ ЧТЕНИЯ @gamussa
@hazelcast
#jpoint
Slide 72
ПОЧЕМУ? @gamussa
@hazelcast
#jpoint
Slide 73
ПРИ РАСШИРЕНИИ, MAP ПЕРЕРАСПРЕДЕЛЯЕТ ДАННЫЕ ВНУТРИ КОНТЕЙНЕРА @gamussa
@hazelcast
#jpoint
Slide 74
КУРСОР НЕ УКАЗЫВАЕТ НА КОРРЕКТНУЮ ЗАПИСЬ. МОГУТ ВОЗНИКАТЬ ДУБЛИКАТЫ ИЛИ ДАННЫЕ ПРОПАДАТЬ @gamussa
@hazelcast
#jpoint
Slide 75
Потоковая обработка Данные в движении
@gamussa
@hazelcast
#jpoint
Slide 76
Hazelcast Jet Считаем ваши слова. Быстро. В памяти
@gamussa
@hazelcast
#jpoint
Slide 77
Потоковая и пакетная обработка в памяти
@gamussa
@hazelcast
#jpoint
Slide 78
Потоковая и пакетная обработка в памяти
@gamussa
@hazelcast
#jpoint
Slide 79
Потоковая и пакетная обработка в памяти
@gamussa
@hazelcast
#jpoint
Slide 80
Потоковая и пакетная обработка в памяти
@gamussa
@hazelcast
#jpoint
Slide 81
Потоковая и пакетная обработка в памяти
@gamussa
@hazelcast
#jpoint
Slide 82
Jet против мира Big Data
@gamussa
@hazelcast
#jpoint
Slide 83
Jet против мира Big Data Простота
@gamussa
@hazelcast
#jpoint
Slide 84
Jet против мира Big Data Простота в разработке
@gamussa
@hazelcast
#jpoint
Slide 85
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках)
@gamussa
@hazelcast
#jpoint
Slide 86
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость
@gamussa
@hazelcast
#jpoint
Slide 87
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость data affinity
@gamussa
@hazelcast
#jpoint
Slide 88
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking
@gamussa
@hazelcast
#jpoint
Slide 89
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG
@gamussa
@hazelcast
#jpoint
Slide 90
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG распределенные данные
@gamussa
@hazelcast
#jpoint
Slide 91
Jet против мира Big Data Простота в разработке в развертывании (даже в облаках) Скорость data affinity cooperative multitasking Hazelcast IMDG распределенные данные discovery @gamussa
@hazelcast
#jpoint
Slide 92
Когда пьытаешься объяснить современньый мир Big Data
@gamussa
@hazelcast
#jpoint
Slide 93
Локальность и привязка данньых
@gamussa
@hazelcast
#jpoint
Slide 94
Локальность и привязка данньых Скорость и низкие задержки
@gamussa
@hazelcast
#jpoint
Slide 95
Локальность и привязка данньых Скорость и низкие задержки данные и вычисления расположены на одной ноде
@gamussa
@hazelcast
#jpoint
Slide 96
Локальность и привязка данньых Скорость и низкие задержки данные и вычисления расположены на одной ноде Привязка к структуре партиций
@gamussa
@hazelcast
#jpoint
Slide 97
Направленньый ациклический граф
@gamussa
@hazelcast
#jpoint
Slide 98
Направленньый ациклический граф Модель описания выполнения
@gamussa
@hazelcast
#jpoint
Slide 99
Направленньый ациклический граф Модель описания выполнения Вершина – шаг выполнения
@gamussa
@hazelcast
#jpoint
Slide 100
Направленньый ациклический граф Модель описания выполнения Вершина – шаг выполнения Работает как для пакетной и потоковой @gamussa
@hazelcast
#jpoint
Slide 101
Исполнение графа
@gamussa
@hazelcast
#jpoint
Slide 102
Исполнение графа Каждая нода кластера исполняет граф целиком
@gamussa
@hazelcast
#jpoint
Slide 103
Исполнение графа Каждая нода кластера исполняет граф целиком Каждая вершина графа исполняется набором tasklet-ов
@gamussa
@hazelcast
#jpoint
Slide 104
Исполнение графа Каждая нода кластера исполняет граф целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков
@gamussa
@hazelcast
#jpoint
Slide 105
Исполнение графа Каждая нода кластера исполняет граф целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров
@gamussa
@hazelcast
#jpoint
Slide 106
Исполнение графа Каждая нода кластера исполняет граф целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров Work-stealing между потоками
@gamussa
@hazelcast
#jpoint
Slide 107
Исполнение графа Каждая нода кластера исполняет граф целиком Каждая вершина графа исполняется набором tasklet-ов Ограниченное число «настоящих» потоков ~ кол-во процессоров Work-stealing между потоками Back pressure между вершинами @gamussa
@hazelcast
#jpoint
Cooperative Multithreading Cooperative Processors выполняются в цикле, который выполняется в native треде
@gamussa
@hazelcast
#jpoint
Slide 110
Cooperative Multithreading Cooperative Processors выполняются в цикле, который выполняется в native треде нет переключения контекста привязка к ядру процессора
@gamussa
@hazelcast
#jpoint
Slide 111
Cooperative Multithreading Cooperative Processors выполняются в цикле, который выполняется в native треде нет переключения контекста привязка к ядру процессора Каждый tasklet выполняет небольшой небольшую часть работы (<1ms) @gamussa
@hazelcast
#jpoint
Slide 112
Cooperative Multithreading Cooperative Processors выполняются в цикле, который выполняется в native треде нет переключения контекста привязка к ядру процессора Каждый tasklet выполняет небольшой небольшую часть работы (<1ms) @gamussa
@hazelcast
#jpoint
Cooperative Multithreading 1 поток может выполнять ~1000 tasklet
@gamussa
@hazelcast
#jpoint
Slide 115
Cooperative Multithreading 1 поток может выполнять ~1000 tasklet Если нечего делать, тред
@gamussa
@hazelcast
#jpoint
Slide 116
Cooperative Multithreading 1 поток может выполнять ~1000 tasklet Если нечего делать, тред Ребра графа имплементированы с помощью RingBuffer – single producer / single consumer
@gamussa
@hazelcast
#jpoint
Slide 117
Cooperative Multithreading 1 поток может выполнять ~1000 tasklet Если нечего делать, тред Ребра графа имплементированы с помощью RingBuffer – single producer / single consumer
@gamussa
@hazelcast
#jpoint
Slide 118
ТОпологии Что нам стоит кластер построить
@gamussa
@hazelcast
#jpoint
Time-based обработка Привязка записей к окнам на основе Времени события Времени обработки
@gamussa
@hazelcast
#jpoint
Slide 161
Time-based обработка Привязка записей к окнам на основе Времени события Времени обработки
Сколько ждать «запоздалых» данных?
@gamussa
@hazelcast
#jpoint
Slide 162
Time-based обработка Привязка записей к окнам на основе Времени события Времени обработки
Сколько ждать «запоздалых» данных? Точность vs Память
@gamussa
@hazelcast
#jpoint
Потоковая обработка: итоги • Получать результаты вычислений реальном времени возможно!
@gamussa
@hazelcast
#jpoint
Slide 166
Потоковая обработка: итоги • Получать результаты вычислений реальном времени возможно! • Окна – конечное представление бесконечных данных • Окна основаны на временнЫх параметрах (время события + время обработки)
@gamussa
@hazelcast
#jpoint
Slide 167
Потоковая обработка: итоги • Получать результаты вычислений реальном времени возможно! • Окна – конечное представление бесконечных данных • Окна основаны на временнЫх параметрах (время события + время обработки)
• Обработка «запоздалых» событий • Вам решать, сколько ждать
@gamussa
@hazelcast
#jpoint