Hadoop Streaming: простой путь кмасштабированию приложений обработки данных                   Алексей Воропаев   Руководит...
Зачем?    Данные постоянно растут:         -   Граф внешних ссылок 2007 год: 100 Гб         -   Граф внешних ссылок 2011 г...
Как обработать «большие» данные?    - Нельзя хранить на 1-ой машине    - Нельзя обработать на 1-ой машинеwww.mail.ru      ...
Горизонтальное масштабирование    1. Как разбить данные?    2. Как организовать вычисления?Больше железа — больше поломок!...
Частичные решения:    1. Распределённые FS    2. Распределённые СУБД    3. MPI, PVM, Cluster OpenMP и т.д.www.mail.ru     ...
Где взять людей???    - опыт работы с петабайтами данных    - знания распределённых вычислений    - умение делать быстро и...
Комплексные решения?Google:   - 2003 год: GoogleFileSystem   - 2004 год: MapReducewww.mail.ru                       7
Подсчет уникальных строк:   # cat input   | sort |   uniq -c   > outputwww.mail.ru                                  8
Добавляем параллелизм:              cat                             sort      uniq -c                                     ...
MapReduce:         cat                 sort   uniq -c                                  output input         cat           ...
Применении:   - Распределённый sort, grep и т.д.   - Статистика   - SQL-подобные операции   - Алгоритмы на графах   - Обра...
Экосистема для «больших» данных:   -   Линейно масштабируемые   -   Для «обычного» железа   -   Простота использования   -...
Распределённая файловая система:   -   Блочная структура   -   Адаптация под очень большие файлы   -   Репликации   -   Ав...
Фреймворк для вычислений:    -   Инфраструктура    -   Планирование и балансировка нагрузки    -   Мониторинг    -   Основ...
Streaming:      hadoop jar hadoop-streaming.jar              -input /data/input_dir                  -output /data/output_...
Только map: hadoop jar hadoop-streaming.jar                          -D mapred.output.compress=true                      -...
Запуск скриптов: hadoop jar hadoop-streaming.jar           -D mapreduce.job.reduces=100         -files ./bin/mapper.pl    ...
Комбайнер: hadoop jar hadoop-streaming.jar                      -D mapreduce.job.reduces=100                    -files ./b...
Несколько входов:   1. Данные хранятся в одном формате   2. Несколько -input   3. Переменная окружения $map_input_fileЛюбо...
Обмен данными:      -D stream.map.input=[identifier]      -D stream.map.output=[identifier]      -D stream.reduce.input=[i...
Hbase:    - нереляционное хранилище колонок данных    - аналог BigTable    - http://github.com/wanpark/hadoop-hbase-stream...
Счетчики и job-статус:   - позволяют вести учет событий   - используют стандартный поток ошибок   - счетчик:       reporte...
Отладка, тесты:   -   читаемый ввод-вывод   -   наличие системы мониторинга   -   логирование   -   легко запускать без Ha...
Плюсы:   - простота разработки   - удобство отладки   - любые языкиМинусы:   - не все возможности Hadoop   - замедление пр...
Спасибо!                Алексей Воропаев   Руководитель группы ранжирования результатов поиска                   voropaev@...
Upcoming SlideShare
Loading in …5
×

RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки данных

1,245 views
1,138 views

Published on

Slides from RIT++2011
Hadoop Streaming: простой путь к масштабированию приложений обработки данных (Hadoop Streaming: simple way to scale data processing applications)

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,245
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки данных

  1. 1. Hadoop Streaming: простой путь кмасштабированию приложений обработки данных Алексей Воропаев Руководитель группы ранжирования результатов поиска
  2. 2. Зачем? Данные постоянно растут: - Граф внешних ссылок 2007 год: 100 Гб - Граф внешних ссылок 2011 год: 10 Тб - Граф всех ссылок 2011 год: 100 Тб - Поведенческая статистика: 300 Гб / деньwww.mail.ru 2
  3. 3. Как обработать «большие» данные? - Нельзя хранить на 1-ой машине - Нельзя обработать на 1-ой машинеwww.mail.ru 3
  4. 4. Горизонтальное масштабирование 1. Как разбить данные? 2. Как организовать вычисления?Больше железа — больше поломок! 1. Сохранность данных? 2. Отказоустойчивость вычислений? 3. Балансировка? 4. Дальнейшее масштабирование?www.mail.ru 4
  5. 5. Частичные решения: 1. Распределённые FS 2. Распределённые СУБД 3. MPI, PVM, Cluster OpenMP и т.д.www.mail.ru 5
  6. 6. Где взять людей??? - опыт работы с петабайтами данных - знания распределённых вычислений - умение делать быстро и надёжноwww.mail.ru 6
  7. 7. Комплексные решения?Google: - 2003 год: GoogleFileSystem - 2004 год: MapReducewww.mail.ru 7
  8. 8. Подсчет уникальных строк: # cat input | sort | uniq -c > outputwww.mail.ru 8
  9. 9. Добавляем параллелизм: cat sort uniq -c output input cat sort uniq -c cat Обрабатывае Группируем в м кучи Строки кучи по ключу параллельно независимыwww.mail.ru 9
  10. 10. MapReduce: cat sort uniq -c output input cat sort uniq -c cat map shufle reduce
  11. 11. Применении: - Распределённый sort, grep и т.д. - Статистика - SQL-подобные операции - Алгоритмы на графах - Обработка текстов (обратный индекс) - Машинное обучение - и т.дwww.mail.ru 11
  12. 12. Экосистема для «больших» данных: - Линейно масштабируемые - Для «обычного» железа - Простота использования - Основан на Javawww.mail.ru 12
  13. 13. Распределённая файловая система: - Блочная структура - Адаптация под очень большие файлы - Репликации - Автоматическое восстановление - Дружественна MapReducewww.mail.ru 13
  14. 14. Фреймворк для вычислений: - Инфраструктура - Планирование и балансировка нагрузки - Мониторинг - Основан на Javawww.mail.ru 14
  15. 15. Streaming: hadoop jar hadoop-streaming.jar -input /data/input_dir -output /data/output_dir -mapper cat -reducer uniq -cMapper & Reducer: - На любом языке: Python, Ruby, C++, bash - Взаимодействие через стандартные потоки - Быстро и простоwww.mail.ru 15
  16. 16. Только map: hadoop jar hadoop-streaming.jar -D mapred.output.compress=true -D mapred.output.compression.codec=GzipCode -D mapreduce.job.reduces=0 -input /data/input_dir -output /data/output_dir -mapper catwww.mail.ru 16
  17. 17. Запуск скриптов: hadoop jar hadoop-streaming.jar -D mapreduce.job.reduces=100 -files ./bin/mapper.pl -input /data/input_dir -output /data/output_dir -mapper mapper.pl -reducer uniq -cmapper.pl: - input: строчки лога - output: <page>nwww.mail.ru 17
  18. 18. Комбайнер: hadoop jar hadoop-streaming.jar -D mapreduce.job.reduces=100 -files ./bin/mapper.pl,./bin/reducer.pl -input /data/input_dir -output /data/output_dir -mapper mapper.pl -combiner reducer.pl -reducer reducer.plmapper.pl: - input: строчки лога - output: <uid>t1reducer.pl: - input: <uid1>t<cnt1> <uid1>t<cnt2> - output: <uid1>t<cnt1+cnt2>www.mail.ru 18
  19. 19. Несколько входов: 1. Данные хранятся в одном формате 2. Несколько -input 3. Переменная окружения $map_input_fileЛюбое свойство конфига доступно черезпеременную окружения.www.mail.ru 19
  20. 20. Обмен данными: -D stream.map.input=[identifier] -D stream.map.output=[identifier] -D stream.reduce.input=[identifier] -D stream.reduce.output=[identifier]или -io [identifier][identifier]: - text : текстовые строки - raw: 4 байта длины + бинарные данные - typedbytes: код типа + бинарные данныеwww.mail.ru 20
  21. 21. Hbase: - нереляционное хранилище колонок данных - аналог BigTable - http://github.com/wanpark/hadoop-hbase-streaming# hadoop jar hadoop-streaming.jar -input dammy_input -output output -mapper /bin/cat -inputformat org.childtv.hadoop.hbase.mapred.JSONTableInputFormat -jobconf map.input.table=scores -jobconf map.input.columns=course:# hadoop dfs -cat output/*Dan {"course:math":"87","course:art":"97"}Dana {"course:math":"100","course:art":"80"} http://d.hatena.ne.jp/wanpark/20081113/1226555456www.mail.ru 21
  22. 22. Счетчики и job-статус: - позволяют вести учет событий - используют стандартный поток ошибок - счетчик: reporter:counter:<group>,<counter>,<amount> - статус: reporter:status:<message>www.mail.ru 22
  23. 23. Отладка, тесты: - читаемый ввод-вывод - наличие системы мониторинга - логирование - легко запускать без Hadoop cat input | sort | uniq -c > outputwww.mail.ru 23
  24. 24. Плюсы: - простота разработки - удобство отладки - любые языкиМинусы: - не все возможности Hadoop - замедление примерно 15% - сложности с бинарными даннымиwww.mail.ru 24
  25. 25. Спасибо! Алексей Воропаев Руководитель группы ранжирования результатов поиска voropaev@corp.mail.ruwww.mail.ru

×