Организация процесса регулярной обработки больших...
TRANSCRIPT
![Page 1: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/1.jpg)
![Page 2: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/2.jpg)
Организация процесса
регулярной обработки
больших объемов данных
Группа разработки Крипта
Дмитрий Кукса, разработчик
![Page 3: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/3.jpg)
Что такое Крипта?
▌ Отвечает на вопрос – «Кто?»
▌ Определяет характеристики
пользователя по поведению в
интернете
▌ Используется для таргетинга рекламы
![Page 4: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/4.jpg)
5
![Page 5: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/5.jpg)
Как это работает?
▌ Объем регулярно обрабатываемых данных ~ 50 ТБ/час
6
Логи
Обучение Контроль
Логи Профили
Профили
+
Матрикснет
Матрикснет
ОбучениеКлассификация
![Page 6: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/6.jpg)
MapReduce
7
![Page 7: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/7.jpg)
MapReduce
8
▌ Модель распределенных вычислений
▌ Входные / выходные данные – пары (k, v)
▌ Две основных операции:
Map: (k, v) → {(k1*, v1*), …, (kn*, vn*)}
Reduce: (k, {v1, …, vm}) → {(k1*, v1*), …, (kn*, vn*)}
▌ Фреймворки – YT, Hadoop (http://hadoop.apache.org)
![Page 8: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/8.jpg)
9
Inputs
id1, [email protected]
id2, [email protected]
id3, [email protected]
id3, [email protected]
id4, [email protected]
id5, [email protected]
![Page 9: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/9.jpg)
10
Inputs Map
id1, [email protected]
id2, [email protected]
id3, [email protected]
gmail.com, 1
gmail.com, 1
yandex.ru, 1
mail.ru, 1
yandex.ru, 1
yandex.ru, 1
id3, [email protected]
id4, [email protected]
id5, [email protected]
![Page 10: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/10.jpg)
11
Inputs Map Group
id1, [email protected]
id2, [email protected]
id3, [email protected]
gmail.com, 1
gmail.com, 1
yandex.ru, 1yandex.ru, {1 ,1, 1}
mail.ru, 1
yandex.ru, 1
yandex.ru, 1
gmail.ru, {1, 1}
mail.ru, {1}id3, [email protected]
id4, [email protected]
id5, [email protected]
![Page 11: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/11.jpg)
12
Inputs Map ReduceGroup
id1, [email protected]
id2, [email protected]
id3, [email protected]
gmail.com, 1
gmail.com, 1
yandex.ru, 1yandex.ru, {1 ,1, 1}
mail.ru, 1
yandex.ru, 1
yandex.ru, 1
gmail.ru, {1, 1}
mail.ru, {1}
yandex.ru, 3
gmail.ru, 2
mail.ru, 1id3, [email protected]
id4, [email protected]
id5, [email protected]
![Page 12: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/12.jpg)
Что обеспечивает MR?
▌ Распределение задач между узлами
▌ Распределенное хранение данных
▌ Группировка данных перед Reduce
▌ Cортировки и слияния
▌ Отказоустойчивость
13
![Page 13: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/13.jpg)
Так все ОК, MapReduce все сделает!
14
,
, ,
![Page 14: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/14.jpg)
Клиент - Сервер
15
▌ Задачу на выполнение мастеру MR ставит клиент
▌ Проблемы
Потеря канала связи между сервером и клиентом
Отказ машины клиента
В этом месте MR ничего не гарантирует!
![Page 15: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/15.jpg)
Что нужно для хорошей жизни?
▌ Выполнение задачи ровно один раз в час/день/неделю
▌ Недопустимы потери данных
▌ Допустима задержка в обработке
▌ Минимальное количество вмешательств «руками»
▌ Информирование о необходимости ручного вмешательства
16
![Page 16: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/16.jpg)
Комплекс решений
▌ Конкурирующий запуск с нескольких клиентов
▌ Автоматическое восстановление задачи при падении
▌ Система мониторинга
17
![Page 17: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/17.jpg)
Аспекты
18
![Page 18: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/18.jpg)
АОП
▌ Инкапсуляция кода, не имеющего отношения к бизнес логике
▌ Часто – выполнение действий «до» и «после»
▌ Логирование, авторизация, транзакционный контроль
19
![Page 19: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/19.jpg)
АспектыRun() {
RunTask();
}
RunTask() {
RunOperation();
}
![Page 20: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/20.jpg)
Аспекты. MonitoringRun() {
MonitoringBefore(); // Логирование
RunTask();
MonitoringAfter(); // Логирование
}
RunTask() {
MonitoringBefore(); // Логирование
RunOperation();
MonitoringAfter(); // Логирование
}
![Page 21: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/21.jpg)
Аспекты. Monitoring
22
Monitoring
Application
![Page 22: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/22.jpg)
Аспекты. BlockerRun() {
BlockerBefore(); // Проверка возможности запуска. Блокировка
MonitoringBefore(); // Логирование
RunTask();
MonitoringAfter(); // Логирование
BlockerAfter(); // Снятие блокировки
}
RunTask() {
MonitoringBefore(); // Логирование
RunOperation();
MonitoringAfter(); // Логирование
}
![Page 23: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/23.jpg)
Аспекты. Blocker
24
▌ Разделяемое состояние – YT таблица
Time – время блокировки
▌ Пролонгация во время работы
▌ Мьютекс с протуханием
▌ Нет лишних точек отказа
Time = 00:15 24-02-2015
![Page 24: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/24.jpg)
Аспекты. Blocker
25
▌ Не чаще раза в сутки – блокировка
▌ Done – флаг завершения
▌ Решает проблемы:
Одновременного запуска
Выполнения по расписанию
Time = 00:00 25-02-2015
Done = true
![Page 25: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/25.jpg)
Аспекты. Raise UpRun() {
BlockerBefore(); // Проверка возможности запуска. Блокировка
RaiseUpBefore(); // Определение контекста задачи. Сохранение
MonitoringBefore(); // Логирование
RunTask();
MonitoringAfter(); // Логирование
RaiseUpAfter(); // Удаление контекста
BlockerAfter(); // Снятие блокировки
}
RunTask() {
RaiseUpBefore(); // Определение контекста задачи. Сохранение
MonitoringBefore(); // Логирование
RunOperation();
MonitoringAfter(); // Логирование
RaiseUpAfter(); // Запись информации об окончании
}
![Page 26: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/26.jpg)
Аспекты. Raise Up
27
▌ Контекст задачи
Аргументы бинарника
▌ Контекст операции
Входные таблицы
1
Tmp_123 Tmp_042
2
Failed start Current start
2
1
![Page 27: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/27.jpg)
Аспекты. Raise Up
▌ Разделяемое состояние – журнал (YT)
▌ Задача - воссоздание условий упавшего запуска
▌ Выполнение только незавершенных операций
▌ Запускается тот же бинарник
▌ Единственный механизм влияния – аспекты
28
![Page 28: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/28.jpg)
Raise Up. Нормальное исполнение
29
Task -src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
![Page 29: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/29.jpg)
Raise Up. Нормальное исполнение
30
Task
operation_1
-src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
Name = operation_1
Src = //crypta/fresh/offers/1
Dst = //crypta/state/offers_123
![Page 30: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/30.jpg)
Raise Up. Нормальное исполнение
31
Task
operation_1
-src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
Name = operation_1
Src = //crypta/fresh/offers/1
Dst = //crypta/state/offers_123
Done = true
![Page 31: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/31.jpg)
Raise Up. Нормальное исполнение
32
Task
operation_1
operation_2
-src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
Name = operation_1
Src = //crypta/fresh/offers/1
Dst = //crypta/state/offers_123
Done = true
Name = operation_2
Src = //crypta/state/offers_123
Dst = //crypta/state/accum
![Page 32: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/32.jpg)
Raise Up. Нормальное исполнение
33
Task
operation_1
operation_2
-src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
Name = operation_1
Src = //crypta/fresh/offers/1
Dst = //crypta/state/offers_123
Done = true
Name = operation_2
Src = //crypta/state/offers_123
Dst = //crypta/state/accum
![Page 33: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/33.jpg)
Raise Up. Нормальное исполнение
34
Task
operation_1
operation_2
-src //crypta/fresh/offers/
-dst //crypta/state/
-ts 1424791640
-failures 1
Name = operation_1
Src = //crypta/fresh/offers/1
Dst = //crypta/state/offers_123
Done = true
Name = operation_2
Src = //crypta/state/offers_123
Dst = //crypta/state/accum
![Page 34: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/34.jpg)
Аспекты
▌ Blocker, RaiseUp, Monitoring
▌ Довольно простые механизмы
▌ Не порождают ненужных зависимостей
35
![Page 35: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/35.jpg)
А что насчет цепочки?
36
![Page 36: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/36.jpg)
Цепочки задач
▌ Скрипт
▌ Нужна поддержка аспектов (запуск с помощью бинарника)
▌ В целом - все аналогично бинарнику
37
![Page 37: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/37.jpg)
Цепочки задач. Восстановление
38
2
падения
8
падений--- ---
10
падений
![Page 38: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/38.jpg)
Цепочки задач. Восстановление
39
2
падения
8
падений--- ---
10
падений
force_drop_journal = true
![Page 39: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/39.jpg)
Цепочки задач. Восстановление
40
17:00 17:00 --- 16:00
skip executeСтарт 16:30 skip execute
![Page 40: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/40.jpg)
Цепочки задач. Восстановление
41
17:00 17:00 --- 16:00
executeСтарт 16:30
executeСтарт 17:00
executeskip skip
executeexecute
![Page 41: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/41.jpg)
Цепочки задач. Восстановление
42
17:00 17:00 --- 16:00
skip executeСтарт 16:30 skip
executeСтарт 17:00 executeexecute
До упавшей задачи - пропускать сделанные
execute
skip_done
true
![Page 42: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/42.jpg)
Цепочки задач. Восстановление
43
17:00 17:00 --- 16:00
skip executeСтарт 16:30 skip
executeСтарт 17:00 executeexecute
До упавшей задачи - пропускать сделанные
После – исполнять
execute
skip_done
true
skip_done
false
![Page 43: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/43.jpg)
Цепочки задач. Режимы запуска
44
▌ Необходимо изменять параметры аспектов по ходу цепочки
▌ Режимы
Schedule (force_drop_journal = true, skip_done = false)
Watchdog (force_drop_journal = false, skip_done = true)
▌ Передача режима исполнения - через файл
![Page 44: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/44.jpg)
Вроде бы и норм
▌ Вмешательств руками ~ 1-2 в месяц
Но!
▌ Длинные цепочки – большая вероятность падения
▌ Обработка больших порций данных
▌ Неравномерность загрузки кластера
45
![Page 45: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/45.jpg)
Другой подход. Конвейер
46
![Page 46: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/46.jpg)
Обработка. Наивный подход
47
ProducerAppend Consume
Consumer
![Page 47: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/47.jpg)
Обработка. Наивный подход
48
Producer ConsumerA
B
Append Consume
![Page 48: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/48.jpg)
Обработка. Наивный подход
49
Producer ConsumerA
B
Append Consume
![Page 49: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/49.jpg)
Обработка. Наивный подход
50
Producer Consumer
A
B
С
Append Consume
![Page 50: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/50.jpg)
Обработка. Наивный подход
51
Producer Consumer
A
B
С
С – потеряно!
Append Consume
![Page 51: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/51.jpg)
Цепочка
52
Producer Consumer
1 2
A
Всегда одна обрабатываемая часть
Append Consume
![Page 52: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/52.jpg)
Конвейерная обработка
53
Producer ConsumerAppend Consume
![Page 53: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/53.jpg)
Конвейерная обработка
54
Producer ConsumerAppend Consume
![Page 54: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/54.jpg)
Конвейерная обработка
55
Producer ConsumerAppend Consume
![Page 55: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/55.jpg)
Конвейерная обработка
56
Producer Consumer
С – проблем нет!
Append Consume
![Page 56: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/56.jpg)
Конвейерная обработка
▌ Узлы работают независимо
▌ Нет последовательности выполнения
▌ Триггером запуска является наличие новых данных
Можно ли использовать всегда?
57
![Page 57: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/57.jpg)
Возможен только один потребитель
58
Producer
Consumer
Consumer
![Page 58: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/58.jpg)
Возможен только один потребитель
59
Producer
Consumer
Consumer
Multiplexor
![Page 59: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/59.jpg)
Возможен только один потребитель
60
Producer Consumer
Consumer
Read
Move
Consume
![Page 60: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/60.jpg)
Консистентность данных
61
▌ Два разных лога с url
▌ Общий словарь (url, id)
▌ Словарь пополняется
▌ Выход – цепочка!
Consume
R/W
Consume
R/W
![Page 61: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/61.jpg)
Конвейер цепочек
▌ Смешение двух подходов
▌ Плюсы конвейерной обработки
▌ Количество цепочек – минимально возможное
▌ Удобно при рефакторинге
▌ Основной используемый подход
Вмешательств руками < 1 в месяц
62
![Page 62: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/62.jpg)
Спасибо за внимание!
![Page 64: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/64.jpg)
Дополнительные слайды
![Page 65: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/65.jpg)
Другие решения
▌ Hadoop workflow schedulers
Oozie – http://oozie.apache.org
Azkaban – http://data.linkedin.com/opensource/azkaban
▌ Конфигурационные файлы (XML)
▌ У нас – другой подход
Обслуживающая функциональность – в бинарниках
Workflow = скрипт
66
![Page 66: Организация процесса регулярной обработки больших объемов данных](https://reader034.vdocuments.site/reader034/viewer/2022042514/55aa91931a28ab496f8b4876/html5/thumbnails/66.jpg)
Характерные задачи Крипты
▌ Парсинг логов
▌ Агрегация данных из разных источников
▌ Фильтрация противоречивых данных
▌ Подготовка выборок для Матрикснет
▌ Классификация пользователей
Нужны регулярные последовательности действий
67