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

Андрей Лузин (2ГИС), Big data engineering 101, ...

CodeFest
January 31, 2018

Андрей Лузин (2ГИС), Big data engineering 101, CodeFest 2017

https://2017.codefest.ru/lecture/1172

На сегодняшний день подход big data доказал свою полезность для бизнеса и сформировался как самостоятельное направление в IT-индустрии. Анализом больших объёмов статистики занимаются не только компании-гиганты, в этой области пробуют силы даже стартапы. Однако у небольших компаний нет готовой инфраструктуры и набора inhouse-решений для приёма, доставки и обработки данных.

В этом докладе я расскажу о принципах, подходах и open-source компонентах на которых можно такое решение построить. Сфокусируемся на инженерной части BigData: бэкендах приёма, очередях доставки и хранилищах данных. Рассмотрим потоковую (data streaming) и массовую (map-reduce) обработку данных. Также поговорим про такую важную тему как форматы представления данных, немного затронем тему сбора данных в приложении / браузере. И конечно я расскажу как и с помощью каких инструментов мы решали эту задачу в 2GIS. В ходе рассказа будут упомянуты Golang, C++, Hadoop, Kafka, Spark и некоторые другие технологии. Если вы используете другой стек - не страшно, упор будет сделан на принципы и архитектуру.

Цель моего доклада: Если (на самом деле когда) к вам прийдёт CEO со словами "давай начнём собирать данные", вы будете знать, какими принципами руководствоваться и в какую сторону копать. Информации на тему “как освоить R, Python, Hadoop за 21 день и стать высокооплачиваемым data scientist ’ом, увы, не будет.

CodeFest

January 31, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. [Not So] Big Data • ~ 100 миллиардов записей в

    хранилище • ~ 1KB - размер записи • ~ 10K вставок в секунду
  2. Задачи инженерной части • Сбор данных • Доставка к месту

    анализа • Надёжное хранение истории • Удобный доступ инструментам анализа
  3. Логи содержат не всё • Не все события генерируются при

    обращении на бэкенд • Не хочется регистрировать каждое событие отдельным HTTPS запросом
  4. Не Hadoop’ом единым • Существующие OLAP, BI → ETL •

    Поточная обработка • Обогащение данных • Ad-hoc & one-off
  5. Собираем события { "type": "search", "query": "Экспоцентр" "event-id": "someguid42", "user-id":

    "anotherguid23", "session-id": "sessionguid64", "timestamp": 1490245277, "version": 2, ... }
  6. Как сделано в 2GIS • Сбор на клиенте • Zipped

    JSON • Версионирование, JSON Schema
  7. Пример 2GIS - Дедупликация: хэши сессий в Tarantool - Антифрод:

    эвристики + ML - Валидация: схемы + правила
  8. Доставка • Несколько получателей • Фильтрация • Отслеживание позиции чтения

    на стороне транспорта • Возможность “перемотки” • Шардинг и параллелизм • Обогащение данных
  9. Summary • Big data ≠ Hadoop • Разделяйте приём, доставку

    и хранение • Не бойтесь избыточности хранения данных