SlideShare a Scribd company logo
Использование Hadoop и Mahout
в машинном обучении
Созыкин Андрей Владимирович
к.т.н.
зав.кафедрой высокопроизводительных компьютерных технологий
2
Hadoop и Mahout Созыкин А.В.
Big Data
• Big Data – задачи обработки больших объемов данных:
• Терабайты и петабайты
• Высокая скорость обработки – невозможно
сделать традиционными подходами
• Оценки аналитиков Gartner и IDC:
• Big Data входит в ТОП 10 наиболее важных
тенденций развития информационных технологий
• Рынок Big Data один из самых быстрорастущих
• MapReduce – одна из наиболее популярных моделей
обработки данных в Big Data
3
Hadoop и Mahout Созыкин А.В.
План
• Основы MapReduce и Apache Hadoop
• Экосистема Hadoop
• Машинное обучение в Apache Mahout
4
Hadoop и Mahout Созыкин А.В.
История Hadoop и MapReduce
• Технологию MapReduce придумали в Google для
системы поиска в Интернет:
• Цель – хранить и обрабатывать большие объемы данных на
обычных компьютерах, объединенных сетью
• Goggle не распространяет свою реализацию MapReduce
• Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data
Processing on Large Clusters
• Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The
Google File System
• Apache Hadoop – открытая реализация MapReduce:
• Разработан на основе идей Google
• Написан на Java
• http://hadoop.apache.org/
5
Hadoop и Mahout Созыкин А.В.
Кто использует Hadoop
• Кто использует Hadoop:
• Самый большой кластер Hadoop в Yahoo!:
• 4500 серверов
• Используется для поисковой системы и подбора рекламных
объявлений
6
Hadoop и Mahout Созыкин А.В.
Основные технологии Hadoop
• HDFS (Hadoop Distributed File System) – хранение
данных
• MapReduce – обработка данных
7
Hadoop и Mahout Созыкин А.В.
HDFS
Файл
8
Hadoop и Mahout Созыкин А.В.
HDFS
Файл
64МБ 64МБ 64МБ
9
Hadoop и Mahout Созыкин А.В.
HDFS
Файл
64МБ 64МБ 64МБ
10
Hadoop и Mahout Созыкин А.В.
HDFS
Data Node 1 Data Node 2 Data Node 3
Data Node 4 Data Node 5 Data Node 6
Name
Node
1, 4, 6
1, 3, 5
1, 2, 5
11
Hadoop и Mahout Созыкин А.В.
Работа с HDFS
• Блоки файлов в HDFS распределены по разным
серверам:
• Нельзя смонтировать HDFS
• Не работают стандартные команды ls, cp, mv и т.п.
• Необходимо использовать специальную команду:
• $ hadoop dfs –cmd
• Примеры:
$ hadoop dfs -ls
Found 3 items
-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file1
-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file2
-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file3
$ hadoop dfs -put /tmp/file4
$ hadoop dfs -cat file4
Hello, world!
12
Hadoop и Mahout Созыкин А.В.
Особенности HDFS
• HDFS – специализированная файловая система,
оптимизированная для параллельной потоковой работы
с большими файлами
• Подходит не для всех задач!
• Модель Write Once Read Many:
• Нельзя изменять файл, можно только добавлять в
конец
• Большой размер блока:
• По-молчанию 64 МБ (часто 128 или 256 МБ)
• Не эффективен произвольный доступ (базы
данных и т.п.)
13
Hadoop и Mahout Созыкин А.В.
MapReduce
• MapReduce – технология распределенных вычислений
• Цель MapReduce – разделить логику приложения и
организацию распределенного взаимодействия:
• Программист реализует только логику приложения
• Распределенная работа в кластере
обеспечивается автоматически
• MapReduce работает с данными как с парами
Ключ:Значение:
• смещение в файле: текст
• идентификатор пользователя: профиль
• пользователь: список друзей
• временная метка: событие в журнале
Источник: http://www.youtube.com/watch?v=SS27F-hYWfU
14
Hadoop и Mahout Созыкин А.В.
Функции Map и Reduce
Источник: http://developer.yahoo.com/hadoop/tutorial/module4.html
15
Hadoop и Mahout Созыкин А.В.
Пример MapReduce: WordCount
• Задача: посчитать, сколько раз слово встречается в
файле
• Количество обращений к Web-страницам
• Количество просмотра видео или прослушивания
песни
• Исходные данные:
• Текстовые файлы
• Каждый файл делится на пары: Смещение:Тест
• Пример:
• Цель MapReduce – разделить логику приложения и организацию
распределенного взаимодействия. Программист реализует только
логику приложения
16
Hadoop и Mahout Созыкин А.В.
WordCount: функция Map
• Исходные данные:
• Цель MapReduce – разделить логику приложения и организацию
распределенного взаимодействия. Программист реализует только
логику приложения
• Результаты обработки:
• <цель, 1>, <mapreduce,1>, <разделить, 1>, <логику,1>, <приложения,
1>, <и, 1>, <организацию, 1>, <распределенного, 1>,
<взаимодействия, 1>, <программист, 1>, <реализует, 1>, <только,1>,
<логику, 1>, <приложения, 1>
• Сортировка и группировка по ключу:
• <mapreduce,1>, <взаимодействия, 1>, <и, 1>, <логику,1>, <логику,
1>, <организацию, 1>, <приложения, 1>, <приложения, 1>,
<программист, 1>, <разделить, 1>, <распределенного, 1>, <реализует,
1>, <только,1>, <цель, 1>.
17
Hadoop и Mahout Созыкин А.В.
WordCount: функция Reduce
• Пары с одинаковыми ключами передаются в одну
функцию Reduce:
<mapreduce,1> → <mapreduce,1>
<взаимодействия, 1> → <взаимодействия, 1>
<и, 1> → <и, 1>
<логику,1>, <логику, 1> → <логику, 2>
<организацию, 1> → <организацию, 1>
<приложения, 1>, <приложения, 1> → <приложения, 2>
<программист, 1> → <программист, 1>
<разделить, 1> → <разделить, 1>
<распределенного, 1> → <распределенного, 1>
<реализует, 1> → <реализует, 1>
<только,1> → <только,1>
<цель, 1> → <цель, 1>
18
Hadoop и Mahout Созыкин А.В.
Модель MapReduce
• MapReduce – странный подход к решению задачи
WordCount
• Есть более простые и интуитивно понятные решения
• Достоинства MapReduce:
• Возможность автоматического распараллеливания – функции Map и
Reduce могут обрабатывать элементы списка параллельно не
зависимо друг от друга
• Масштабируемость – данные могут размещаться на разных
серверах (в HDFS) и обрабатываться также на разных серверах
• Отказоустойчивость – при выходе из строя сервера функции Map
или Reduce запускаются на другом сервере
• Недостатки MapReduce:
• Фиксированный алгоритм обработки данных
• Высокие накладные расходы на распараллеливание
19
Hadoop и Mahout Созыкин А.В.
Перемещение вычислений к данным
20
Hadoop и Mahout Созыкин А.В.
Пример запуска задачи Hadoop
• $ hadoop jar hadoop-examples-*.jar grep input
output 'dfs[a-z.]+'
• hadoop-examples-*.jar – Имя архива с примерами из
дистрибутива Hadoop
• grep – Имя команды в архиве с примерами
• input – Каталог входных данных (в HDFS)
• output – Каталог выходных данных (в HDFS)
• 'dfs[a-z.]+' – Шаблон для поиска
21
Hadoop и Mahout Созыкин А.В.
Экосистема Hadoop
• MapReduce – мощная модель программирования, но
низкоуровневая
• Реализация практически полезных алгоритмов требует
высоких трудозатрат
• Hadoop сложен в установке и администрировании
• На основе Hadoop сложилась экосистема:
• Программные продукты для решения различных прикладных
задач, использующие Hadoop для масштабирования
• Дистрибутивы Hadoop
• Облачный хостинг для Hadoop
22
Hadoop и Mahout Созыкин А.В.
Экосистема Hadoop
• Pig – декларативный язык анализа данных
• Hive – анализ данных с использованием
языка, близкого к SQL
• Oozie – поток работ в Hadoop
• Hbase – база данных (нереляционная),
аналог Google Big Table
• Mahout – машинное обучение
• Sqoop – перенос данных из РСУБД в
Hadoop и наоборот
• Flume – перенос логов в HDFS
• Zookeeper, MRUnit, Avro, Giraph, Ambari,
Cassandra, HCatalog, Fuse-DFS и т.д.
23
Hadoop и Mahout Созыкин А.В.
Дистрибутивы Hadoop
• Apache
• hadoop.apache.org
• Оригинальный дистрибутив, только Hadoop
• Альтернативные дистрибутивы:
• Совместно Hadoop, HBase, Pig, Hive, Mahout, Sqoop,
Zookeeper и др.
• Средства автоматизации установки и
администрирования, мониторинг, безопасность
• Поставщики альтернативных
дистрибутивов:
• Cloudera
• MapR
• Hortonworks
• Intel
24
Hadoop и Mahout Созыкин А.В.
Облачный хостинг Hadoop
• Amazon Elastic MapReduce (Amazon EMR)
• http://aws.amazon.com/elasticmapreduce/
• Партнерство с MapR
• Apache Hadoop on Rackspace
• http://www.rackspace.com/knowledge_center/article/
apache-hadoop-on-rackspace-private-cloud
• Партнерство с Hortonworks
• Microsoft Windows Azure
• http://www.windowsazure.com/en-us/home/scenarios/big-data/
• Qubole Data Service
• http://www.qubole.com/qubole-data-service
• Web-интерфейс для анализа данных с Hadoop, Hive,
Pig и др. на Amazon EMR
25
Hadoop и Mahout Созыкин А.В.
Apache Mahout
• Масштабируемая библиотека машинного обучения
(machine learning)
• Режимы работы:
• В кластере Hadoop
• Отдельно на одном компьютере
• Mahout – слово из индийского языка, означает
погонщик слонов
• Открытые исходные коды:
• Написан на Java
• Лицензия Apache 2.0
• Страница проекта:
• http://mahout.apache.org/
26
Hadoop и Mahout Созыкин А.В.
Машинное обучение в Mahout
• Коллаборативная (совместная) фильтрация
• Рекомендации
• Кластеризация
• Объединение объектов в группы (кластеры, заранее не
известные)
• Примеры: Google News объединяет новости на одну тему
• Алгоритмы в Mahout: K-Means, Fuzzy K-Means, Mean Shift,
Dirichlet, Canopy и др.
• Классификация:
• Определение принадлежности объекта к заданному классу
(классы известны заранее)
• Примеры: определение спама, определение тематики
текста (текст о политике, спорте и т.п.)
• Алгоритмы в Mahout: Logistic Regression, Naive Bayes,
Support Vector Machines, Online Passive Aggressive и др.
27
Hadoop и Mahout Созыкин А.В.
Рекомендации
28
Hadoop и Mahout Созыкин А.В.
Актуальность рекомендаций
• Хорошая система рекомендаций может существенно
повысит доход от продаж и рекламы
• $1M NetflixPrize:
• Компания Netflix устроила соревнования по улучшению
алгоритма рекомендации DVD
• Размер приза: 1 миллион долларов
• Условие получения приза: улучшить алгоритм
рекомендации на 10%
• Приз получила команда «BellKor’s Pragmatic Chaos» в
2009 г.
• Соревнования проходили с 2006 по 2009 г.
• Каждый год выплачивался приз за прогресс $50 000
• http://www.netflixprize.com/
29
Hadoop и Mahout Созыкин А.В.
Способы рекомендаций
• На основе контента
• Пример: пользователь выбрал книгу Пушкина, значит
можно рекомендовать ему другую книгу Пушкина или
классическую литературу
• Недостаток: система рекомендаций сильно зависит от
домена и непереносима
• На основе предпочтений
• Рекомендации на основе оценок пользователей
• Объекты рекомендации могут быть любыми
• Можно реализовать общую систему, не зависимую от
домена
• Реализован в Mahout
30
Hadoop и Mahout Созыкин А.В.
Предпочтение
• Рекомендации в Mahout выдаются на основе
предпочтений пользователей
• Предпочтение в Mahout:
• Пользователь (целое число)
• Объект (целое число)
• Предпочтение (число двойной точности)
• Пример данных о предпочтениях для Mahout из
проекта GroupLens (Университет Минесоты) – оценка
пользователями фильмов:
196 242 3 881250949
186 302 3 891717742
22 377 1 878887116
244 51 2 880606923
user id | item id | rating | timestamp
(Не используется
в Mahout)
31
Hadoop и Mahout Созыкин А.В.
Подходы к рекомендации
• На основе пользователей:
• Найти пользователей с похожими вкусами
• Посмотреть, что нравится этим пользователям
• Рекомендовать объекты в соответствии с предпочтениями
похожих пользователей
• Недостатки: подход плохо масштабируется, предпочтения
быстро меняются
• На основе объектов:
• Найти объекты, похожие на те, которые понравились
пользователю
• Рекомендовать наиболее популярные из них
• Преимущества: хорошо масштабируется, оценки объектов
меняются редко. Рекомендации можно генерировать в
автономном режиме (с использованием Hadoop)
32
Hadoop и Mahout Созыкин А.В.
Рекомендации на основе пользователей
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel (new File("u.data"));
UserSimilarity similarity = new PearsonCorrelationSimilarity (model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood (2, similarity, model);
Recommender recommender = new GenericUserBasedRecommender (
model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(1, 1);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
RecommendedItem [item:643, value:4.27682]
33
Hadoop и Mahout Созыкин А.В.
Рекомендации на основе пользователей
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
34
Hadoop и Mahout Созыкин А.В.
Выбор похожих пользователей
• Как определить, что вкусы пользователей похожи?
• Мера «похожести» - число от -1 до 1.
• 1 – вкусы пользователей совпадают
• 0 – у пользователей нет общих вкусов
• -1 – вкусы пользователей противоположны
• Mahout использует несколько алгоритмов расчета
«похожести»:
• Коэффициент Пирсона
• Евклидово расстояние
• Корреляция Спирмена
• Коэффициент Танимото
• Логарифмическое правдоподобие
35
Hadoop и Mahout Созыкин А.В.
«Соседние» пользователи
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
Фиксированное число соседей
(NearestNUserNeighborhood )
Соседи в пределах границы
(ThresholdUserNeighborhood)
36
Hadoop и Mahout Созыкин А.В.
Выбор параметров
• Какой тип «похожести» пользователей лучше?
• Какой тип «соседства» лучше?
• Критерии оценки:
• Однозначного ответа нет
• Результаты разные для разных данных
• Проводите эксперименты с разными параметрами!
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
37
Hadoop и Mahout Созыкин А.В.
Рекомендации на основе объектов
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel (new File("u.data"));
ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
ItemBasedRecommender recommender =
new GenericItemBasedRecommender(dataModel, itemSimilarity);
List<RecommendedItem> recommendations =
recommender.recommend(1, 1)
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
RecommendedItem [item:271, value:4.27682]
38
Hadoop и Mahout Созыкин А.В.
Mahout и Hadoop
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
39
Hadoop и Mahout Созыкин А.В.
Mahout и Hadoop
• Mahout может работать как отдельно, так и в
кластере Hadoop
• Запуск рекомендации Mahout в Hadoop выполняется
с помощью класса RecommenderJob
• Данные о предпочтениях должны быть записаны в
HDFS
• Полученные рекомендации записываются в HDFS
• Рекомендации можно перенести в базу данных с помощью sqoop
40
Hadoop и Mahout Созыкин А.В.
Пример запуска Mahout в Hadoop
$ hadoop jar mahout-core-0.7-job.jar 
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 
-Dmapred.input.dir=input
-Dmapred.output.dir=output
--usersFile users_list.txt
• Возможные параметры:
• Dmapred.input.dir – каталог с данными о предпочтениях (в
HDFS, может быть несколько файлов)
• Dmapred.output.dir – каталог, куда записываются
сгенерированные рекомендации (в HDFS)
• --usersFile – файл с идентификаторами пользователей,
для которых нужно сгенерировать рекомендации
• --similarityClassname – имя класса, который реализует
расчет «похожести»
• --numRecommendations – количество рекомендаций на одного
пользователя
41
Hadoop и Mahout Созыкин А.В.
Итоги
• MapReduce – программная модель для обработки
больших объемов данных (BigData)
• Hadoop – открытая реализация MapReduce
• Экосистема Hadoop
• Mahout – машинное обучение в Hadoop:
• Рекомендации, классификация, кластеризация
• Рекомендации в Mahout:
• Предпочтения: пользователь, объект, оценка
• Рекомендации на основе пользователей и на основе
объектов
• «Похожесть» пользователей и объектов
• «Соседство» пользователей
• Запуск Mahout RecommenderJob в Hadoop
42
Hadoop и Mahout Созыкин А.В.
Вопросы?
Контакты
Андрей Созыкин
avs@imm.uran.ru
www.asozykin.ru

More Related Content

PDF
Лекция 1. Введение в Big Data и MapReduce
PDF
Hadoop presentation
PDF
Лекция 14. Hadoop в Поиске Mail.Ru
PDF
Лекция 3. Распределённая файловая система HDFS
PDF
Лекция 2. Основы Hadoop
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PDF
Лекция 11. Вычислительная модель Pregel
PPTX
Архитектура Apache HAWQ Highload++ 2015
Лекция 1. Введение в Big Data и MapReduce
Hadoop presentation
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 3. Распределённая файловая система HDFS
Лекция 2. Основы Hadoop
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Лекция 11. Вычислительная модель Pregel
Архитектура Apache HAWQ Highload++ 2015

Viewers also liked (10)

PDF
DUMP-2013 Наука и жизнь - Атомы данных, деревья транзакций и прототип реализа...
PPT
DUMP-2013 Наука и жизнь - Суперкомпьютер «УРАН» - Созыкин Андрей
PPTX
DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уро...
PPT
DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир
PPT
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
PPT
DUMP-2013 Наука и жизнь - Современная математика компьютерного зрения - Перев...
PDF
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
PDF
Proof of Concept for Hadoop: storage and analytics of electrical time-series
PDF
Big Data Analytics in Energy & Utilities
PPTX
Big Data Analytics with Hadoop
DUMP-2013 Наука и жизнь - Атомы данных, деревья транзакций и прототип реализа...
DUMP-2013 Наука и жизнь - Суперкомпьютер «УРАН» - Созыкин Андрей
DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уро...
DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Современная математика компьютерного зрения - Перев...
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
Proof of Concept for Hadoop: storage and analytics of electrical time-series
Big Data Analytics in Energy & Utilities
Big Data Analytics with Hadoop
Ad

Similar to DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей (20)

PDF
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
PDF
Cостав дистрибутва Hortonworks data platform 2.3
PDF
Мастер-класс по BigData Tools для HappyDev'15
PDF
06 - Hadoop. Java API и Hadoop Streaming
PPT
ADD2010: Обработка большого объема данных на платформеApache Hadoop
PDF
HPC vs Big Data (Russian version)
PDF
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
PPT
Hadoop in Wikimart. Part 1. Business
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PDF
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
PDF
Apache Spark — Егор Пахомов
PPTX
DBD lection 4. Big Data, NoSQL. In Russian.
PDF
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
ODP
Apache Hadoop
PDF
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
PDF
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
PDF
Лекция 10. Apache Mahout
ODP
Apache Mahout. Применение модели MapReduce для задач машинного обучения.
PDF
Rapid Deployment of Hadoop Development Environments
PDF
Платформа Apache Hadoop
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Cостав дистрибутва Hortonworks data platform 2.3
Мастер-класс по BigData Tools для HappyDev'15
06 - Hadoop. Java API и Hadoop Streaming
ADD2010: Обработка большого объема данных на платформеApache Hadoop
HPC vs Big Data (Russian version)
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
Hadoop in Wikimart. Part 1. Business
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
Apache Spark — Егор Пахомов
DBD lection 4. Big Data, NoSQL. In Russian.
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
Apache Hadoop
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Лекция 10. Apache Mahout
Apache Mahout. Применение модели MapReduce для задач машинного обучения.
Rapid Deployment of Hadoop Development Environments
Платформа Apache Hadoop
Ad

More from it-people (20)

PDF
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
PDF
«Scrapy internals» Александр Сибиряков, Scrapinghub
PDF
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
PDF
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
PDF
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
PDF
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
PDF
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
PDF
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
PDF
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
PDF
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PDF
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
PDF
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
PDF
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
PDF
«(Без)опасный Python», Иван Цыганов, Positive Technologies
PDF
«Python of Things», Кирилл Борисов, Яндекс
PDF
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
PDF
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
PDF
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«Python of Things», Кирилл Борисов, Яндекс
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...

DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

  • 1. Использование Hadoop и Mahout в машинном обучении Созыкин Андрей Владимирович к.т.н. зав.кафедрой высокопроизводительных компьютерных технологий
  • 2. 2 Hadoop и Mahout Созыкин А.В. Big Data • Big Data – задачи обработки больших объемов данных: • Терабайты и петабайты • Высокая скорость обработки – невозможно сделать традиционными подходами • Оценки аналитиков Gartner и IDC: • Big Data входит в ТОП 10 наиболее важных тенденций развития информационных технологий • Рынок Big Data один из самых быстрорастущих • MapReduce – одна из наиболее популярных моделей обработки данных в Big Data
  • 3. 3 Hadoop и Mahout Созыкин А.В. План • Основы MapReduce и Apache Hadoop • Экосистема Hadoop • Машинное обучение в Apache Mahout
  • 4. 4 Hadoop и Mahout Созыкин А.В. История Hadoop и MapReduce • Технологию MapReduce придумали в Google для системы поиска в Интернет: • Цель – хранить и обрабатывать большие объемы данных на обычных компьютерах, объединенных сетью • Goggle не распространяет свою реализацию MapReduce • Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters • Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The Google File System • Apache Hadoop – открытая реализация MapReduce: • Разработан на основе идей Google • Написан на Java • http://hadoop.apache.org/
  • 5. 5 Hadoop и Mahout Созыкин А.В. Кто использует Hadoop • Кто использует Hadoop: • Самый большой кластер Hadoop в Yahoo!: • 4500 серверов • Используется для поисковой системы и подбора рекламных объявлений
  • 6. 6 Hadoop и Mahout Созыкин А.В. Основные технологии Hadoop • HDFS (Hadoop Distributed File System) – хранение данных • MapReduce – обработка данных
  • 7. 7 Hadoop и Mahout Созыкин А.В. HDFS Файл
  • 8. 8 Hadoop и Mahout Созыкин А.В. HDFS Файл 64МБ 64МБ 64МБ
  • 9. 9 Hadoop и Mahout Созыкин А.В. HDFS Файл 64МБ 64МБ 64МБ
  • 10. 10 Hadoop и Mahout Созыкин А.В. HDFS Data Node 1 Data Node 2 Data Node 3 Data Node 4 Data Node 5 Data Node 6 Name Node 1, 4, 6 1, 3, 5 1, 2, 5
  • 11. 11 Hadoop и Mahout Созыкин А.В. Работа с HDFS • Блоки файлов в HDFS распределены по разным серверам: • Нельзя смонтировать HDFS • Не работают стандартные команды ls, cp, mv и т.п. • Необходимо использовать специальную команду: • $ hadoop dfs –cmd • Примеры: $ hadoop dfs -ls Found 3 items -rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file1 -rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file2 -rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file3 $ hadoop dfs -put /tmp/file4 $ hadoop dfs -cat file4 Hello, world!
  • 12. 12 Hadoop и Mahout Созыкин А.В. Особенности HDFS • HDFS – специализированная файловая система, оптимизированная для параллельной потоковой работы с большими файлами • Подходит не для всех задач! • Модель Write Once Read Many: • Нельзя изменять файл, можно только добавлять в конец • Большой размер блока: • По-молчанию 64 МБ (часто 128 или 256 МБ) • Не эффективен произвольный доступ (базы данных и т.п.)
  • 13. 13 Hadoop и Mahout Созыкин А.В. MapReduce • MapReduce – технология распределенных вычислений • Цель MapReduce – разделить логику приложения и организацию распределенного взаимодействия: • Программист реализует только логику приложения • Распределенная работа в кластере обеспечивается автоматически • MapReduce работает с данными как с парами Ключ:Значение: • смещение в файле: текст • идентификатор пользователя: профиль • пользователь: список друзей • временная метка: событие в журнале Источник: http://www.youtube.com/watch?v=SS27F-hYWfU
  • 14. 14 Hadoop и Mahout Созыкин А.В. Функции Map и Reduce Источник: http://developer.yahoo.com/hadoop/tutorial/module4.html
  • 15. 15 Hadoop и Mahout Созыкин А.В. Пример MapReduce: WordCount • Задача: посчитать, сколько раз слово встречается в файле • Количество обращений к Web-страницам • Количество просмотра видео или прослушивания песни • Исходные данные: • Текстовые файлы • Каждый файл делится на пары: Смещение:Тест • Пример: • Цель MapReduce – разделить логику приложения и организацию распределенного взаимодействия. Программист реализует только логику приложения
  • 16. 16 Hadoop и Mahout Созыкин А.В. WordCount: функция Map • Исходные данные: • Цель MapReduce – разделить логику приложения и организацию распределенного взаимодействия. Программист реализует только логику приложения • Результаты обработки: • <цель, 1>, <mapreduce,1>, <разделить, 1>, <логику,1>, <приложения, 1>, <и, 1>, <организацию, 1>, <распределенного, 1>, <взаимодействия, 1>, <программист, 1>, <реализует, 1>, <только,1>, <логику, 1>, <приложения, 1> • Сортировка и группировка по ключу: • <mapreduce,1>, <взаимодействия, 1>, <и, 1>, <логику,1>, <логику, 1>, <организацию, 1>, <приложения, 1>, <приложения, 1>, <программист, 1>, <разделить, 1>, <распределенного, 1>, <реализует, 1>, <только,1>, <цель, 1>.
  • 17. 17 Hadoop и Mahout Созыкин А.В. WordCount: функция Reduce • Пары с одинаковыми ключами передаются в одну функцию Reduce: <mapreduce,1> → <mapreduce,1> <взаимодействия, 1> → <взаимодействия, 1> <и, 1> → <и, 1> <логику,1>, <логику, 1> → <логику, 2> <организацию, 1> → <организацию, 1> <приложения, 1>, <приложения, 1> → <приложения, 2> <программист, 1> → <программист, 1> <разделить, 1> → <разделить, 1> <распределенного, 1> → <распределенного, 1> <реализует, 1> → <реализует, 1> <только,1> → <только,1> <цель, 1> → <цель, 1>
  • 18. 18 Hadoop и Mahout Созыкин А.В. Модель MapReduce • MapReduce – странный подход к решению задачи WordCount • Есть более простые и интуитивно понятные решения • Достоинства MapReduce: • Возможность автоматического распараллеливания – функции Map и Reduce могут обрабатывать элементы списка параллельно не зависимо друг от друга • Масштабируемость – данные могут размещаться на разных серверах (в HDFS) и обрабатываться также на разных серверах • Отказоустойчивость – при выходе из строя сервера функции Map или Reduce запускаются на другом сервере • Недостатки MapReduce: • Фиксированный алгоритм обработки данных • Высокие накладные расходы на распараллеливание
  • 19. 19 Hadoop и Mahout Созыкин А.В. Перемещение вычислений к данным
  • 20. 20 Hadoop и Mahout Созыкин А.В. Пример запуска задачи Hadoop • $ hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' • hadoop-examples-*.jar – Имя архива с примерами из дистрибутива Hadoop • grep – Имя команды в архиве с примерами • input – Каталог входных данных (в HDFS) • output – Каталог выходных данных (в HDFS) • 'dfs[a-z.]+' – Шаблон для поиска
  • 21. 21 Hadoop и Mahout Созыкин А.В. Экосистема Hadoop • MapReduce – мощная модель программирования, но низкоуровневая • Реализация практически полезных алгоритмов требует высоких трудозатрат • Hadoop сложен в установке и администрировании • На основе Hadoop сложилась экосистема: • Программные продукты для решения различных прикладных задач, использующие Hadoop для масштабирования • Дистрибутивы Hadoop • Облачный хостинг для Hadoop
  • 22. 22 Hadoop и Mahout Созыкин А.В. Экосистема Hadoop • Pig – декларативный язык анализа данных • Hive – анализ данных с использованием языка, близкого к SQL • Oozie – поток работ в Hadoop • Hbase – база данных (нереляционная), аналог Google Big Table • Mahout – машинное обучение • Sqoop – перенос данных из РСУБД в Hadoop и наоборот • Flume – перенос логов в HDFS • Zookeeper, MRUnit, Avro, Giraph, Ambari, Cassandra, HCatalog, Fuse-DFS и т.д.
  • 23. 23 Hadoop и Mahout Созыкин А.В. Дистрибутивы Hadoop • Apache • hadoop.apache.org • Оригинальный дистрибутив, только Hadoop • Альтернативные дистрибутивы: • Совместно Hadoop, HBase, Pig, Hive, Mahout, Sqoop, Zookeeper и др. • Средства автоматизации установки и администрирования, мониторинг, безопасность • Поставщики альтернативных дистрибутивов: • Cloudera • MapR • Hortonworks • Intel
  • 24. 24 Hadoop и Mahout Созыкин А.В. Облачный хостинг Hadoop • Amazon Elastic MapReduce (Amazon EMR) • http://aws.amazon.com/elasticmapreduce/ • Партнерство с MapR • Apache Hadoop on Rackspace • http://www.rackspace.com/knowledge_center/article/ apache-hadoop-on-rackspace-private-cloud • Партнерство с Hortonworks • Microsoft Windows Azure • http://www.windowsazure.com/en-us/home/scenarios/big-data/ • Qubole Data Service • http://www.qubole.com/qubole-data-service • Web-интерфейс для анализа данных с Hadoop, Hive, Pig и др. на Amazon EMR
  • 25. 25 Hadoop и Mahout Созыкин А.В. Apache Mahout • Масштабируемая библиотека машинного обучения (machine learning) • Режимы работы: • В кластере Hadoop • Отдельно на одном компьютере • Mahout – слово из индийского языка, означает погонщик слонов • Открытые исходные коды: • Написан на Java • Лицензия Apache 2.0 • Страница проекта: • http://mahout.apache.org/
  • 26. 26 Hadoop и Mahout Созыкин А.В. Машинное обучение в Mahout • Коллаборативная (совместная) фильтрация • Рекомендации • Кластеризация • Объединение объектов в группы (кластеры, заранее не известные) • Примеры: Google News объединяет новости на одну тему • Алгоритмы в Mahout: K-Means, Fuzzy K-Means, Mean Shift, Dirichlet, Canopy и др. • Классификация: • Определение принадлежности объекта к заданному классу (классы известны заранее) • Примеры: определение спама, определение тематики текста (текст о политике, спорте и т.п.) • Алгоритмы в Mahout: Logistic Regression, Naive Bayes, Support Vector Machines, Online Passive Aggressive и др.
  • 27. 27 Hadoop и Mahout Созыкин А.В. Рекомендации
  • 28. 28 Hadoop и Mahout Созыкин А.В. Актуальность рекомендаций • Хорошая система рекомендаций может существенно повысит доход от продаж и рекламы • $1M NetflixPrize: • Компания Netflix устроила соревнования по улучшению алгоритма рекомендации DVD • Размер приза: 1 миллион долларов • Условие получения приза: улучшить алгоритм рекомендации на 10% • Приз получила команда «BellKor’s Pragmatic Chaos» в 2009 г. • Соревнования проходили с 2006 по 2009 г. • Каждый год выплачивался приз за прогресс $50 000 • http://www.netflixprize.com/
  • 29. 29 Hadoop и Mahout Созыкин А.В. Способы рекомендаций • На основе контента • Пример: пользователь выбрал книгу Пушкина, значит можно рекомендовать ему другую книгу Пушкина или классическую литературу • Недостаток: система рекомендаций сильно зависит от домена и непереносима • На основе предпочтений • Рекомендации на основе оценок пользователей • Объекты рекомендации могут быть любыми • Можно реализовать общую систему, не зависимую от домена • Реализован в Mahout
  • 30. 30 Hadoop и Mahout Созыкин А.В. Предпочтение • Рекомендации в Mahout выдаются на основе предпочтений пользователей • Предпочтение в Mahout: • Пользователь (целое число) • Объект (целое число) • Предпочтение (число двойной точности) • Пример данных о предпочтениях для Mahout из проекта GroupLens (Университет Минесоты) – оценка пользователями фильмов: 196 242 3 881250949 186 302 3 891717742 22 377 1 878887116 244 51 2 880606923 user id | item id | rating | timestamp (Не используется в Mahout)
  • 31. 31 Hadoop и Mahout Созыкин А.В. Подходы к рекомендации • На основе пользователей: • Найти пользователей с похожими вкусами • Посмотреть, что нравится этим пользователям • Рекомендовать объекты в соответствии с предпочтениями похожих пользователей • Недостатки: подход плохо масштабируется, предпочтения быстро меняются • На основе объектов: • Найти объекты, похожие на те, которые понравились пользователю • Рекомендовать наиболее популярные из них • Преимущества: хорошо масштабируется, оценки объектов меняются редко. Рекомендации можно генерировать в автономном режиме (с использованием Hadoop)
  • 32. 32 Hadoop и Mahout Созыкин А.В. Рекомендации на основе пользователей public static void main(String[] args) throws Exception { DataModel model = new FileDataModel (new File("u.data")); UserSimilarity similarity = new PearsonCorrelationSimilarity (model); UserNeighborhood neighborhood = new NearestNUserNeighborhood (2, similarity, model); Recommender recommender = new GenericUserBasedRecommender ( model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(1, 1); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } } RecommendedItem [item:643, value:4.27682]
  • 33. 33 Hadoop и Mahout Созыкин А.В. Рекомендации на основе пользователей Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
  • 34. 34 Hadoop и Mahout Созыкин А.В. Выбор похожих пользователей • Как определить, что вкусы пользователей похожи? • Мера «похожести» - число от -1 до 1. • 1 – вкусы пользователей совпадают • 0 – у пользователей нет общих вкусов • -1 – вкусы пользователей противоположны • Mahout использует несколько алгоритмов расчета «похожести»: • Коэффициент Пирсона • Евклидово расстояние • Корреляция Спирмена • Коэффициент Танимото • Логарифмическое правдоподобие
  • 35. 35 Hadoop и Mahout Созыкин А.В. «Соседние» пользователи Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action Фиксированное число соседей (NearestNUserNeighborhood ) Соседи в пределах границы (ThresholdUserNeighborhood)
  • 36. 36 Hadoop и Mahout Созыкин А.В. Выбор параметров • Какой тип «похожести» пользователей лучше? • Какой тип «соседства» лучше? • Критерии оценки: • Однозначного ответа нет • Результаты разные для разных данных • Проводите эксперименты с разными параметрами! Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
  • 37. 37 Hadoop и Mahout Созыкин А.В. Рекомендации на основе объектов public static void main(String[] args) throws Exception { DataModel model = new FileDataModel (new File("u.data")); ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel); ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity); List<RecommendedItem> recommendations = recommender.recommend(1, 1) for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } } RecommendedItem [item:271, value:4.27682]
  • 38. 38 Hadoop и Mahout Созыкин А.В. Mahout и Hadoop Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
  • 39. 39 Hadoop и Mahout Созыкин А.В. Mahout и Hadoop • Mahout может работать как отдельно, так и в кластере Hadoop • Запуск рекомендации Mahout в Hadoop выполняется с помощью класса RecommenderJob • Данные о предпочтениях должны быть записаны в HDFS • Полученные рекомендации записываются в HDFS • Рекомендации можно перенести в базу данных с помощью sqoop
  • 40. 40 Hadoop и Mahout Созыкин А.В. Пример запуска Mahout в Hadoop $ hadoop jar mahout-core-0.7-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.input.dir=input -Dmapred.output.dir=output --usersFile users_list.txt • Возможные параметры: • Dmapred.input.dir – каталог с данными о предпочтениях (в HDFS, может быть несколько файлов) • Dmapred.output.dir – каталог, куда записываются сгенерированные рекомендации (в HDFS) • --usersFile – файл с идентификаторами пользователей, для которых нужно сгенерировать рекомендации • --similarityClassname – имя класса, который реализует расчет «похожести» • --numRecommendations – количество рекомендаций на одного пользователя
  • 41. 41 Hadoop и Mahout Созыкин А.В. Итоги • MapReduce – программная модель для обработки больших объемов данных (BigData) • Hadoop – открытая реализация MapReduce • Экосистема Hadoop • Mahout – машинное обучение в Hadoop: • Рекомендации, классификация, кластеризация • Рекомендации в Mahout: • Предпочтения: пользователь, объект, оценка • Рекомендации на основе пользователей и на основе объектов • «Похожесть» пользователей и объектов • «Соседство» пользователей • Запуск Mahout RecommenderJob в Hadoop
  • 42. 42 Hadoop и Mahout Созыкин А.В. Вопросы? Контакты Андрей Созыкин avs@imm.uran.ru www.asozykin.ru