Павел Клеменков parser@cs.msu.su

Post on 11-Jan-2016

60 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

МГУ имени М.В. Ломоносова Объединенная компания «Афиши» и «Рамблера». Обзор современных подходов к обработке больших данных и их применение для построения рекомендательных систем. Павел Клеменков parser@cs.msu.su. Цифровая вселенная. - PowerPoint PPT Presentation

TRANSCRIPT

Обзор современных подходов к обработке больших данных

и их применение для построения рекомендательных систем

Павел Клеменковparser@cs.msu.su

МГУ имени М.В. ЛомоносоваОбъединенная компания «Афиши» и «Рамблера»

По оценкам IDC размер “цифровой вселенной” в 2006 г. составлял 0.18 зеттабайт

А к 2011 г. должен был достигнуть 1.8 зеттабайт

Продемонстрировав десятикратный рост за 5 лет!

Цифровая вселенная

Нью-Йоркская фондовая биржа генерирует около терабайта данных в день

Объем хранилищ Facebook каждый день увеличивается на 50 ТБ

Internet Archive уже хранит 2 ПБ данных и прирастает 20 ТБ в месяц

Эксперименты на БАК могут генерировать до 1 ПБ данных в секунду!

Источники данных

“Большие данные” характеризуются объемом, разнообразием и скоростью, с

которой структурированные и неструкутрированные данные поступают по сетям передачи в процессоры и хранилища,

наряду с преобразованием этих данных в ценную для бизнеса информацию [Gartner]

Что такое “большие данные”?

Volume (объем)

Variety (разнообразие)

Velocity (скорость)

Value (ценность)

4V

Упор на дисковое хранение и индексацию Многопоточность, чтобы скрыть задержки Блокировки Журнализация транзакций Немасштабируемы

Архитектура большинства СУБД почти идентична System R (70-е годы):

The End of an Architectural Era

Вертикальное масштабирование?

Бесконечно мощного сервера нет!Вертикальный рост конечен.

Оптимизация запросов?Создание индексов?

Дополнительные операции.Деградация под нагрузкой

Кэш на чтение?

Отказ от строгой консистентности.Усложнение клиентского ПО.

Очередь операций вставки/обновления?

Размер очереди ограничен.Персистентность очереди.

Денормализация схемы?

Избыточность данных.Аномалии.

Горизонтальное масштабирование?

Отказ от нормализации.Отказ от join.Усложнение клиентского ПО.

Отказ от строгой консистентности Уход от нормализации и внедрение

избыточности Потеря выразительности SQL и

моделирование части функций программно Усложнение клиентского ПО Сложность поддержания

работоспособности и отказоустойчивости

Промежуточные итоги

NoSQL – это не бездумный отказ от реляционной модели!

“NoSQL” - название реляционной СУБД, не использующей SQL (1998 г.)

Бум NoSQL обусловлен ростом Интернет-индустрии

NoSQL

Решение для задачи, а не наоборот Неограниченное горизонтальное

масштабирование Свободная схема или ее отсутствие Консистентность в жертву

производительности Простота развертывания и

администрирования Большинство программ императивные

Мантра NoSQL

NoSQL и CAP

Классификация NoSQL хранилищ по модели данных

Тип ПримерыХранилища ключ-значение Redis

ScalarisRiakTokyo Tyrant

Документные хранилища SimpleDBCouchDBMongoDB

Колоночные хранилища BigTableHbaseCassandra

Хранилища на графах Neo4j

Простая модель данных – ассоциативный массив

Доступ к данным только по ключу Информация о структуре занчений не

сохраняется Обычно все данные хранятся в памяти с

возможностью сохранения на диск

Хранилища ключ-значение

“Документ” – множество пар ключ-значение Документы могут быть вложены и

объединяться в коллекции Отсутствие схемы как в документе, так и в

коллекции Доступ к значениям по ключу или с

помощью языка запросов MapReduce

Документные хранилища

Все изменения пишутся в конец файла При ошибках всегда можно восстановить

последнее состояние Запись не блокирует чтение

Б-деревья только на добавление

Таблица – упорядоченный ассоциативный массив строк

Строка – ассоциативный массив семейств колонок

Семейство колонок – ассоциативный массив колонок с зафиксированными ключами

Колонка – кортеж <ключ, значение, временная метка>

Колоночные хранилища

Колоночные хранилища

Данные естественным образом представляются графом

Граф – это вершины с аттрибутами и ребра со свойствами

Доступ к вершинам и ребрам по индексам на аттрибутах и свойствах

Вычисления – обход графа по ребрам с заданными свойствами

Хранилища на графах

Производительность. Вставки

Производительность. Чтение

Производительность. Обновления

Производительность. Чтение

Средняя производительность HDD ~100МБ/c

Прочесть 1 ТБ ~ 2.5 часа Прочесть 1 ТБ параллельно со 100 дисков

~ 2 минуты Произвольный доступ к диску медленный Последовательный доступ быстрый!

Почему MapReduce?

MapReduce – модель распределенных вычислений (Google, 2004)

2002 – поисковый движок Nutch 2003 – GFS (Google) 2004 – Nutch Distributed File System (NDFS) 2004 – MapReduce (Google) 2005 – Nutch MapReduce 2006 – Nutch → Hadoop 2008 – Yahoo! анонсирует Hadoop кластер 2008 – Apache Hadoop

История Hadoop

Очень большие файлы (ГБ, ТБ, ПБ) Пакетный доступ к данным (пишем один

раз, читаем много) Аппаратные сбои неизбежны (репликация и

лог для метаданных) Локальность вычислений

Дизайн-принципы HDFS

Чтение файла из HDFS

Запись файла в HDFS

Hadoop MapReduce

Размер Число узлов

Число map

Число reduce

Степень репликации

Время

500 Гб 1406 8000 2600 1 59 сек1 ТБ 1460 8000 2700 1 62 сек100 ТБ 3452 190000 10000 2 173 мин1 ПБ 3658 80000 20000 2 975 мин

Сортировка записей по 100 байт http://sortbenchmark.orgМай 2009, Yahoo!

Производительность Hadoop

Hive – распределенное хранилище(HDFS, HiveQL)

Pig – среда исполнения и язык программирования вычислений

Hbase – распределенное колоночное хранилище

ZooKeeper – высокодоступный координационный сервис

Экосистема Hadoop

Функциональный ЯП Создавался Ericsson для управления

коммутационным оборудованием Легковесные процессы взаимодействуют в

соответствии с моделью акторов Порождение 200000 процессов ~ 10 мкс Отказоустойчивость оборудования –

99.9999999% (Ericsson)

О Erlang в двух словах

Фреймворк MapReduce вычислений на больших данных (Nokia Research Center)

Ключевое свойство - простота: Нет планировщика Облегченный доступ к локальным ресурсам Независимый от ЯП протокол Упрощенная DDFS с децентрализацией

метаданных

Disco

Подсчет слов в файле (1 Б)

Время (мс)Hadoop 12324PDisco 359ODisco 35

Disco vs Hadoop (задержки)

Подсчет слов в английской Википедии

Disco vs Hadoop (производительность)

DDFS vs HDFS (чтение)

DDFS vs HDFS (запись)

Анализ данных в реальном времени Высокочастотная торговля Поисковые системы реального времени Социальные сети Персонализация контента ...

В поисках “Hadoop реального времени”

Предоставить простой интерфейс поточной обработки данных

Обеспечить горизонтальное масштабирование и высокую доступность кластера

Минимизировать задержки, используя только оперативную память узлов

Создать децентрализованное, симметричное решение без единой точки отказа

Yahoo! S4

Вычисление – граф Вершины – вычислительные элементы (PE) Ребра – потоки событий PE – это актор с изолированным

состоянием

Yahoo! S4

Событие – кортеж именованных значений События группируются по именам значений

в кортеже Группировка важна, потому что состояние

хранится в памяти узла и изолировано PE может или создать новый поток, или

опубликовать результат

События

Событий/c Ошибка Скорость передачи (Мб/c)

2000 0.0% 2.63644 0.0% 4.97268 0.2% 9.710480 0.4% 14.012432 0.7% 16.614900 1.5% 19.916000 1.7% 21.420000 4.2% 26.7

Кластер из 8 узлов (4 процессора, 16 ГБ)

Производительность S4

Storm (Twitter) – распределенная система вычислений в реальном времени

Первый публичный релиз через год после S4

Устраняет недостатки S4

Storm

Два варианта использования: обработка потоков событий распределенный RPC

Прозрачное горизонтальное масштабирование

Гарантия обработки сообщений Отказоустойчивость, перераспределение

вычислений Независимость от ЯП

Особенности Storm

Вычисление – топология (граф) Ребра – маршруты передачи данных Вершины:

трубы (spout) – генерируют данные молнии (bolt) – производят вычисления

Модель вычислений

Событие – кортеж (как в S4) Кортеж полность обработан, если обработан

каждый кортеж дерева Избежать повторных вычислений можно с

помощью транзакций

Задача рекомендательной системы – дать человеку направление до наиболее

интересных и полезных для него объектов в пространстве возможных вариантов

Рекомендательная система – программа, задачей которой является предсказать оценку,

которую пользователь поставит объекту, с которым он еще не встречался, на основании характеристик этого объекта и/или профиля

пользователя

Рекомендательные системы

Классификация: Логистическая регрессия Байесовские классификаторы Случайный лес

Кластеризация K-Means Иерархическая кластеризация MinHash

Apache Mahout

Понижение размерности: SVD PCA

Рекомендательные алгоритмы: Фильтрация по схожести пользователей Фильтрация по схожести объектов Slope One

И многие другие...

Apache Mahout

sim (a ,b)=∑p∈P

(r a , p−r̄ a)(rb , p− r̄b)

√∑p∈P

(r a , p−r̄ a)2√∑

p∈P(rb , p−r̄ b)

2

pred (a , b)= r̄a+∑b∈N

sim (a , b)∗(r b , p− r̄ b)

∑b∈N

sim (a , b)

Фильтрация по схожести пользователей

DataModel model = new FileDataModel(new File(“data.txt”));

UserSimilarity sim = new PearsonCorrelationSimilarity(model);

UserNeighborhood neighbor =new NearestNUserNeighborhood(3, sim,

model);

Recommender recommender = new

GenericUserBasedRecommender(model,neighbor, sim);

List<RecommendedItem> recommendations = recommender.recommend(1234, 10);

Фильтрация по схожести пользователей

Сложность O(MN) На практике – O(M+N), т.к. векторы очень

разрежены Слишком медленный для Веба Предварительное вычисление матрицы

схожести сильно влияет на качество

Фильтрация по схожести пользователей

sim (a , b)=∑u∈U

(r u ,a−r̄ u)(ru , b−r̄ u)

√∑u∈U

(r u , a−r̄ u)2√∑

u∈U(r u ,b−r̄ u)

2

pred (u , p)=∑

i∈ratedItems (u)sim (i , p)∗ru ,i

∑i∈ratedItems (a )

sim (i , p)

Фильтрация по схожести объектов

DataModel model = new FileDataModel(new

File(“data.txt”));

ItemSimilarity sim = new

PearsonCorrelationSimilarity(model);

Recommender recommender = new GenericItemBasedRecommender(model,

sim);

List<RecommendedItem> recommendations = recommender.recommend(1234, 10);

Фильтрация по схожести объектов

Сложность O(N2M) На практике O(NM), т.к. у большинства

пользователей мало оценок Более устойчив к предварительному

вычислению матрицы схожести Применяется Amazon (2003 г.)

Фильтрация по схожести объектов

J=∣A∩B∣∣A∪B∣

Мера Жаккарда

J=∣A∩B∣∣A∪B∣

Ο(min(∣A∣,∣B∣))

Ο(∣A∣+∣B∣)

Мера Жаккарда

A={url1 , url2 ,… , urlk }

h : A → ℕ

hmin ( A )=min x∈ A (h ( x ))

J ( A , B )=P [hmin ( A )=hmin (B )]

MinHash

Сигнатура множества вычисляется один раз

Размер сигнатуры не меняется

Одна хеш-функция имеет высокую

дисперсию, поэтому нужно использовать

среднее нескольких хеш-функций

Особенности MinHash

Фильтрация логов во

временном окне

MAP

Кластеризация

Фильтрация логов во

временном окне

Множество уникальных

URL

MAP

REDUCE

Кластеризация

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет значений

хеш-функций

MAP

REDUCE

Кластеризация

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет значений

хеш-функций

Вычисление минимума

MAP

REDUCE

Кластеризация

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет значений

хеш-функций

Вычисление минимума

Группировка минимумов (кластеры)

MAP

REDUCE

Кластеризация

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет значений

хеш-функций

Вычисление минимума

Группировка минимумов (кластеры)

Отсечение небольших кластеров

MAP

REDUCE

Кластеризация

Фильтрация логов во

временном окне

MAP

Рекомендации

Фильтрация логов во

временном окне

Множество уникальных

URL

MAP

REDUCE

Рекомендации

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет кликов по группам

MAP

REDUCE

Рекомендации

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет кликов по группам

Подсчет кликов по группам

MAP

REDUCE

Рекомендации

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет кликов по группам

Подсчет кликов по группам

Группировка новостей

MAP

REDUCE

Рекомендации

Фильтрация логов во

временном окне

Множество уникальных

URL

Подсчет кликов по группам

Подсчет кликов по группам

Группировка новостей

Отсечение непопулярны

х новостей

MAP

REDUCE

Рекомендации

Hadoop кластер из 8 узлов

Временное окно кластеризации – 5 суток (8

ГБ логов)

Время кластеризации – 7 минут

Временное окно рекомендаций – 5 часов

Время генерации рекомендаций – 3.5-4

минуты

Производительность

Кузнецов Сергей Дмитриевич Добров Борис Викторович Когаловский Михаил Рувимович Калиниченко Леонид Андреевич

Благодарности

Вопросы?

top related