PPTX, 6 МБ - Партнерская конференция «1С

реклама
Партнерская конференция «1С-Битрикс»
BigData изнутри:
технологии и алгоритмы
Александр Сербул
руководитель направления, разработчик
Партнерская конференция 2015
О чем поговорим
• Много данных… спасите/помогите
• Ограничения SQL/MySQL
• NoSQL и его возможности на примере DynamoDB
• Column-oriented хранилища для анализа данных
• Что такое MapReduce и Apache Spark
• Как устроены рекомендательные системы
#bitrixconf2015
Партнерская конференция 2015
SQL – «глубокая» абстракция
• ACID (Atomicity, Consistency, Isolation, Durability)
• Универсальное решение на все случаи жизни
• Жесткая схема данных
• Реальные потребности, веб…
#bitrixconf2015
BigData – «разновидность» Орков
Партнерская конференция 2015
MySQL - репликация
#bitrixconf2015
Партнерская конференция 2015
MySQL - sharding
Аккаунты
a-m
База данных
MySQL 1
База данных
MySQL
База данных
MySQL
База данных
MySQL 2
База данных
MySQL 2
Вертикальный шардинг
#bitrixconf2015
База данных
MySQL 1
Горизонтальный
шардинг
Аккаунты
n-z
Партнерская конференция 2015
Куда же все это класть…
• Логи, логи, файлики, файлики…
• Кластер на Galera
• Теорема CAP
• Гео-распределенные системы
• Split-brain
• Распределенные алгоритмы, Paxos
#bitrixconf2015
Партнерская конференция 2015
NoSQL
• «Перерождение» memcached…
DynamoDB
Cassandra
Hbase
BigTable?
Redis
MongoDB
#bitrixconf2015
Партнерская конференция 2015
NoSQL – «особенности»
• «Сложный» клиент
• Размазанная модель
• Eventual consistency
• Транзакции
• «Сложные» запросы
• А что вы хотели?
#bitrixconf2015
NoSQL – сохраняйте бдительность!
Партнерская конференция 2015
Данных слишком много…
• Данные не поменяются на диски одного сервера
• Ну никак не помещаются…
• Выделенное дисковое хранилище?
• Много «дешевых серверов»?
• S3, HDFS, GlusterFS, Lustre …
#bitrixconf2015
Партнерская конференция 2015
Column-Oriented Databases
• OLAP/OLTP
• Структура хранения
• Агрегация, вставки, запросы
• Amazon RedShift
• Google BigQuery
• Vertica…
#bitrixconf2015
Партнерская конференция 2015
Пример архитектуры RedShift
• Кластер
• Параллельные запросы
• Быстрая агрегация
• Снепшоты
• Масштабирование
#bitrixconf2015
Партнерская конференция 2015
Интересные задачки
• Обработка лога на >N00 млн. записей в
разумное время
• Найти всех похожих Пользователей из 10^6
• Найти Пользователей, сделавших только 1 хит
• Найти уникальные элементы
• Фильтрации
• Обработать 10 млн. файлов: сжать, отправить
#bitrixconf2015
Партнерская конференция 2015
Организация вычислений
• PHP – один процесс
• PHP – несколько процессов
• Bash, C – 100-200 процессов…
• Считать и хранить в БД (файле)
• Сервера - мало
#bitrixconf2015
Партнерская конференция 2015
Закон Амдала
• Очень важно прочувствовать формулу
• Затем «вкурить» для закрепления
• Потоки, процессы, планировщик ОС, синхронизация
• CAS (compare-and-swap)
#bitrixconf2015
#bitrixconf2015
Партнерская конференция 2015
Paxos и другие «прелести»
• Паксос — самый маленький из семи основных
Ионических островов.
• Выбор лидера группы, кворум
• Распределенная конфигурация
• Очереди
• Распределенные блокировки
#bitrixconf2015
Партнерская конференция 2015
Парадигма MapReduce
• Google…
• Распределенная «реляционная алгебра»
• Новый класс распределенных алгоритмов
• Можно и на PHP
• Медленно, но верно 
#bitrixconf2015
Партнерская конференция 2015
Парадигма MapReduce
«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
#bitrixconf2015
Партнерская конференция 2015
Apache Hadoop
• Платформа:
- вычисления (MapReduce)
- файловая система (HDFS)
- “SQL-запросы” по данным (Hive)
#bitrixconf2015
Партнерская конференция 2015
Apache Spark – свежий взгляд
• Скорость!
• Работа в памяти
• Кэширование в памяти
• Простота развертывания
#bitrixconf2015
Партнерская конференция 2015
Apache Spark – свежий взгляд
#bitrixconf2015
Партнерская конференция 2015
Apache Spark – код
• Реляционная алгебра
• Распределенные коллекции
• Цепочки обработки
#bitrixconf2015
Партнерская конференция 2015
Рекомендательные системы
#bitrixconf2015
Партнерская конференция 2015
Спасибо за внимание!
Александр Сербул
@AlexSerbul
#bitrixconf2015
Скачать