ppt - Андрей Созыкин

advertisement
Использование Hadoop и Mahout
в машинном обучении
Созыкин Андрей Владимирович
к.т.н.
зав.кафедрой высокопроизводительных компьютерных технологий
Hadoop и Mahout
Созыкин А.В.
Big Data
• Big Data – задачи обработки больших объемов данных:
• Терабайты и петабайты
• Высокая скорость обработки – невозможно сделать
традиционными подходами
• Оценки аналитиков Gartner и IDC:
• Big Data входит в ТОП 10 наиболее важных
тенденций развития информационных технологий
• Рынок Big Data один из самых быстрорастущих
• MapReduce – одна из наиболее популярных моделей
обработки данных в Big Data
2
Hadoop и Mahout
Созыкин А.В.
План
• Основы MapReduce и Apache Hadoop
• Экосистема Hadoop
• Машинное обучение в Apache Mahout
3
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/
4
Hadoop и Mahout
Созыкин А.В.
Кто использует Hadoop
• Кто использует Hadoop:
• Самый большой кластер Hadoop в Yahoo!:
• 4500 серверов
• Используется для поисковой системы и подбора рекламных
объявлений
5
Hadoop и Mahout
Созыкин А.В.
Основные технологии Hadoop
• HDFS (Hadoop Distributed File System) – хранение
данных
• MapReduce – обработка данных
6
Hadoop и Mahout
Созыкин А.В.
HDFS
Файл
7
Hadoop и Mahout
Созыкин А.В.
HDFS
Файл
64МБ
64МБ
64МБ
8
Hadoop и Mahout
Созыкин А.В.
HDFS
Файл
64МБ
64МБ
64МБ
9
Hadoop и Mahout
Созыкин А.В.
HDFS
Data Node 1
Data Node 2
Data Node 3
Name
Node
1, 4, 6
1, 3, 5
1, 2, 5
Data Node 4
Data Node 5
Data Node 6
10
Hadoop и Mahout
Созыкин А.В.
Работа с HDFS
• Блоки файлов в HDFS распределены по разным
серверам:
• Нельзя смонтировать HDFS
• Не работают стандартные команды ls, cp, mv и т.п.
• Необходимо использовать
• $ hadoop dfs –cmd
специальную команду:
• Примеры:
$ hadoop dfs -ls
Found 3 items
-rw-r--r-1 hadoop supergroup
-rw-r--r-1 hadoop supergroup
-rw-r--r-1 hadoop supergroup
$ hadoop dfs -put /tmp/file4
$ hadoop dfs -cat file4
Hello, world!
0 2011-06-22 13:58 /user/hadoop/file1
0 2011-06-22 13:58 /user/hadoop/file2
0 2011-06-22 13:58 /user/hadoop/file3
11
Hadoop и Mahout
Созыкин А.В.
Особенности HDFS
• HDFS – специализированная файловая система,
оптимизированная для параллельной потоковой работы
с большими файлами
• Подходит не для всех задач!
• Модель Write Once Read Many:
• Нельзя изменять файл, можно только добавлять в
конец
• Большой размер блока:
• По-молчанию 64 МБ (часто 128 или 256 МБ)
• Не эффективен произвольный доступ (базы
данных и т.п.)
12
Hadoop и Mahout
Созыкин А.В.
MapReduce
• MapReduce – технология распределенных вычислений
• Цель MapReduce – разделить логику приложения и
организацию распределенного взаимодействия:
• Программист реализует только логику приложения
• Распределенная
работа
в
кластере
обеспечивается автоматически
• MapReduce работает с данными как с парами
Ключ:Значение:
• смещение в файле: текст
• идентификатор пользователя: профиль
• пользователь: список друзей
• временная метка: событие в журнале
Источник: http://www.youtube.com/watch?v=SS27F-hYWfU
13
Hadoop и Mahout
Созыкин А.В.
Функции Map и Reduce
Источник: http://developer.yahoo.com/hadoop/tutorial/module4.html
14
Hadoop и Mahout
Созыкин А.В.
Пример MapReduce: WordCount
• Задача: посчитать, сколько раз слово встречается в
файле
• Количество обращений к Web-страницам
• Количество просмотра видео или прослушивания
песни
• Исходные данные:
• Текстовые файлы
• Каждый файл делится на пары: Смещение:Тест
• Пример:
• Цель MapReduce – разделить логику приложения и организацию
распределенного взаимодействия. Программист реализует только
логику приложения
15
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>.
16
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>
17
Hadoop и Mahout
Созыкин А.В.
Модель MapReduce
• MapReduce – странный подход к решению задачи
WordCount
• Есть более простые и интуитивно понятные решения
• Достоинства MapReduce:
• Возможность автоматического распараллеливания – функции Map и
Reduce могут обрабатывать элементы списка параллельно не
зависимо друг от друга
• Масштабируемость – данные могут размещаться на разных
серверах (в HDFS) и обрабатываться также на разных серверах
• Отказоустойчивость – при выходе из строя сервера функции Map
или Reduce запускаются на другом сервере
• Недостатки MapReduce:
• Фиксированный алгоритм обработки данных
• Высокие накладные расходы на распараллеливание
18
Hadoop и Mahout
Созыкин А.В.
Перемещение вычислений к данным
19
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.]+' – Шаблон для поиска
20
Hadoop и Mahout
Созыкин А.В.
Экосистема Hadoop
• MapReduce – мощная модель программирования, но
низкоуровневая
• Реализация практически
высоких трудозатрат
полезных
алгоритмов
требует
сложен в установке и администрировании
• На основе Hadoop сложилась экосистема:
• Hadoop
• Программные продукты для решения различных прикладных
задач, использующие Hadoop для масштабирования
• Дистрибутивы Hadoop
• Облачный хостинг для Hadoop
21
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 и т.д.
22
Hadoop и Mahout
Созыкин А.В.
Дистрибутивы Hadoop
• Apache
• hadoop.apache.org
• Оригинальный дистрибутив, только Hadoop
• Альтернативные дистрибутивы:
• Совместно Hadoop, HBase, Pig, Hive, Mahout, Sqoop,
Zookeeper и др.
• Средства
автоматизации
установки
и
администрирования, мониторинг, безопасность
• Поставщики
дистрибутивов:
•
•
•
•
альтернативных
Cloudera
MapR
Hortonworks
Intel
23
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/apachehadoop-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
24
Hadoop и Mahout
Созыкин А.В.
Apache Mahout
• Масштабируемая библиотека машинного обучения
(machine learning)
• Режимы работы:
• В кластере Hadoop
• Отдельно на одном компьютере
• Mahout – слово из индийского языка, означает
погонщик слонов
• Открытые исходные коды:
• Написан на Java
• Лицензия Apache 2.0
• Страница проекта:
• http://mahout.apache.org/
25
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 и др.
26
Hadoop и Mahout
Созыкин А.В.
Рекомендации
27
Hadoop и Mahout
Созыкин А.В.
Актуальность рекомендаций
• Хорошая система рекомендаций может существенно
повысит доход от продаж и рекламы
• $1M NetflixPrize:
• Компания Netflix устроила соревнования по улучшению
алгоритма рекомендации DVD
• Размер приза: 1 миллион долларов
• Условие
получения
приза:
улучшить
алгоритм
рекомендации на 10%
• Приз получила команда «BellKor’s Pragmatic Chaos» в
2009 г.
• Соревнования проходили с 2006 по 2009 г.
• Каждый год выплачивался приз за прогресс $50 000
• http://www.netflixprize.com/
28
Hadoop и Mahout
Созыкин А.В.
Способы рекомендаций
• На основе контента
• Пример: пользователь выбрал книгу Пушкина, значит можно
рекомендовать
ему
другую
книгу
Пушкина
или
классическую литературу
• Недостаток: система рекомендаций сильно зависит от
домена и непереносима
• На основе предпочтений
• Рекомендации на основе оценок пользователей
• Объекты рекомендации могут быть любыми
• Можно реализовать общую систему, не зависимую от
домена
• Реализован в Mahout
29
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)
30
Hadoop и Mahout
Созыкин А.В.
Подходы к рекомендации
• На основе пользователей:
• Найти пользователей с похожими вкусами
• Посмотреть, что нравится этим пользователям
• Рекомендовать объекты в соответствии с предпочтениями
похожих пользователей
• Недостатки: подход плохо масштабируется, предпочтения
быстро меняются
• На основе объектов:
• Найти объекты, похожие на те, которые понравились
пользователю
• Рекомендовать наиболее популярные из них
• Преимущества: хорошо масштабируется, оценки объектов
меняются редко. Рекомендации можно генерировать в
автономном режиме (с использованием Hadoop)
31
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]
32
Hadoop и Mahout
Созыкин А.В.
Рекомендации на основе пользователей
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
33
Hadoop и Mahout
Созыкин А.В.
Выбор похожих пользователей
• Как определить, что вкусы пользователей похожи?
• Мера «похожести» - число от -1 до 1.
• 1 – вкусы пользователей совпадают
• 0 – у пользователей нет общих вкусов
• -1 – вкусы пользователей противоположны
• Mahout использует несколько алгоритмов расчета
«похожести»:
•
•
•
•
•
Коэффициент Пирсона
Евклидово расстояние
Корреляция Спирмена
Коэффициент Танимото
Логарифмическое правдоподобие
34
Hadoop и Mahout
Созыкин А.В.
«Соседние» пользователи
Фиксированное число соседей
(NearestNUserNeighborhood )
Соседи в пределах границы
(ThresholdUserNeighborhood)
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
35
Hadoop и Mahout
Созыкин А.В.
Выбор параметров
• Какой тип «похожести» пользователей лучше?
• Какой тип «соседства» лучше?
• Критерии оценки:
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
• Однозначного ответа нет
• Результаты разные для разных данных
• Проводите эксперименты с разными параметрами!
36
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]
37
Hadoop и Mahout
Созыкин А.В.
Mahout и Hadoop
Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action
38
Hadoop и Mahout
Созыкин А.В.
Mahout и Hadoop
• Mahout может работать как отдельно, так и в
кластере Hadoop
• Запуск рекомендации Mahout в Hadoop выполняется
с помощью класса RecommenderJob
• Данные о предпочтениях должны быть записаны в
HDFS
• Полученные рекомендации записываются в HDFS
• Рекомендации можно перенести в базу данных с помощью sqoop
39
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 – количество рекомендаций на одного
пользователя
40
Hadoop и Mahout
Созыкин А.В.
Итоги
• MapReduce – программная модель для обработки
больших объемов данных (BigData)
• Hadoop – открытая реализация MapReduce
• Экосистема Hadoop
• Mahout – машинное обучение в Hadoop:
• Рекомендации, классификация, кластеризация
• Рекомендации в Mahout:
• Предпочтения: пользователь, объект, оценка
• Рекомендации на основе пользователей и на основе
объектов
• «Похожесть» пользователей и объектов
• «Соседство» пользователей
• Запуск Mahout RecommenderJob в Hadoop
41
Hadoop и Mahout
Созыкин А.В.
Вопросы?
Контакты
Андрей Созыкин
avs@imm.uran.ru
www.asozykin.ru
42
Download