SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Hadoop Streaming: простой путь к
масштабированию приложений обработки данных

                   Алексей Воропаев
   Руководитель группы ранжирования результатов поиска
Зачем?
    Данные постоянно растут:
         -   Граф внешних ссылок 2007 год: 100 Гб
         -   Граф внешних ссылок 2011 год: 10 Тб
         -   Граф всех ссылок 2011 год: 100 Тб
         -   Поведенческая статистика: 300 Гб / день




www.mail.ru                                       2
Как обработать «большие» данные?
    - Нельзя хранить на 1-ой машине
    - Нельзя обработать на 1-ой машине




www.mail.ru                              3
Горизонтальное масштабирование
    1. Как разбить данные?
    2. Как организовать вычисления?

Больше железа — больше поломок!
    1.   Сохранность данных?
    2.   Отказоустойчивость вычислений?
    3.   Балансировка?
    4.   Дальнейшее масштабирование?



www.mail.ru                               4
Частичные решения:
    1. Распределённые FS
    2. Распределённые СУБД
    3. MPI, PVM, Cluster OpenMP и т.д.




www.mail.ru                              5
Где взять людей???
    - опыт работы с петабайтами данных
    - знания распределённых вычислений
    - умение делать быстро и надёжно




www.mail.ru                              6
Комплексные решения?
Google:
   - 2003 год: GoogleFileSystem
   - 2004 год: MapReduce




www.mail.ru                       7
Подсчет уникальных строк:




   # cat input   | sort |   uniq -c   > output




www.mail.ru                                  8
Добавляем параллелизм:

              cat

                             sort      uniq -c




                                                     output
  input




              cat

                             sort      uniq -c

              cat
                                       Обрабатывае
                       Группируем в       м кучи
            Строки
                       кучи по ключу   параллельно
          независимы

www.mail.ru                                                   9
MapReduce:

         cat

                 sort   uniq -c




                                  output
 input




         cat

                 sort   uniq -c

         cat


         map   shufle   reduce
Применении:
   - Распределённый sort, grep и т.д.
   - Статистика
   - SQL-подобные операции
   - Алгоритмы на графах
   - Обработка текстов (обратный индекс)
   - Машинное обучение
   - и т.д




www.mail.ru                                11
Экосистема для «больших» данных:
   -   Линейно масштабируемые
   -   Для «обычного» железа
   -   Простота использования
   -   Основан на Java




www.mail.ru                     12
Распределённая файловая система:
   -   Блочная структура
   -   Адаптация под очень большие файлы
   -   Репликации
   -   Автоматическое восстановление
   -   Дружественна MapReduce


www.mail.ru                                13
Фреймворк для вычислений:
    -   Инфраструктура
    -   Планирование и балансировка нагрузки
    -   Мониторинг
    -   Основан на Java




www.mail.ru                              14
Streaming:
      hadoop jar hadoop-streaming.jar   
           -input /data/input_dir       
           -output /data/output_dir     
           -mapper cat                  
           -reducer 'uniq -c'

Mapper & Reducer:
  - На любом языке: Python, Ruby, C++, bash
  - Взаимодействие через стандартные
    потоки
  - Быстро и просто

www.mail.ru                                 15
Только 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 cat




www.mail.ru                                             16
Запуск скриптов:
 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 -c'



mapper.pl:
  - input: строчки лога
  - output: '<page>n'


www.mail.ru                              17
Комбайнер:
 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.pl
mapper.pl:
   - input: строчки лога
   - output: '<uid>t1'
reducer.pl:
   - input:    '<uid1>t<cnt1>'
               '<uid1>t<cnt2>'
   - output:   '<uid1>t<cnt1+cnt2>'

www.mail.ru                                         18
Несколько входов:
   1. Данные хранятся в одном формате
   2. Несколько '-input'
   3. Переменная окружения $map_input_file

Любое свойство конфига доступно через
переменную окружения.




www.mail.ru                                  19
Обмен данными:
      -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
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/1226555456


www.mail.ru                                                                                21
Счетчики и job-статус:
   - позволяют вести учет событий
   - используют стандартный поток ошибок
   - счетчик:
       reporter:counter:<group>,<counter>,<amount>
   - статус:
     reporter:status:<message>




www.mail.ru                                    22
Отладка, тесты:

   -   читаемый ввод-вывод
   -   наличие системы мониторинга
   -   логирование
   -   легко запускать без Hadoop


   cat input | sort | uniq -c > output



www.mail.ru                          23
Плюсы:
   - простота разработки
   - удобство отладки
   - любые языки

Минусы:
   - не все возможности Hadoop
   - замедление примерно 15%
   - сложности с бинарными данными



www.mail.ru                          24
Спасибо!
                Алексей Воропаев
   Руководитель группы ранжирования результатов поиска
                   voropaev@corp.mail.ru




www.mail.ru

Mais conteúdo relacionado

Destaque

Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache HadoopDotNetConf
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...solit
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentationVlad Orlov
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Hadoop introduction , Why and What is Hadoop ?
Hadoop introduction , Why and What is  Hadoop ?Hadoop introduction , Why and What is  Hadoop ?
Hadoop introduction , Why and What is Hadoop ?sudhakara st
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture EMC
 

Destaque (9)

Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Hadoop introduction , Why and What is Hadoop ?
Hadoop introduction , Why and What is  Hadoop ?Hadoop introduction , Why and What is  Hadoop ?
Hadoop introduction , Why and What is Hadoop ?
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture
 

Semelhante a Hadoop streaming простой путь к масштабированию приложений обработки данных. алексей воропаев. зал 2

Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)Andrew Panfilov
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduceRoman Brovko
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduceRoman Brovko
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogAndrew Panfilov
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисленияMATLAB
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 MapscriptSlach
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Yandex
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
pgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQLpgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQLDmitry Kremer
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениSQALab
 
PureMVC в картинках - часть 1
PureMVC в картинках - часть 1PureMVC в картинках - часть 1
PureMVC в картинках - часть 1Rostyslav Siryk
 

Semelhante a Hadoop streaming простой путь к масштабированию приложений обработки данных. алексей воропаев. зал 2 (20)

pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> Cascalog
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 Mapscript
 
Batch processing on RoR
Batch processing on RoRBatch processing on RoR
Batch processing on RoR
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
pgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQLpgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQL
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
PureMVC в картинках - часть 1
PureMVC в картинках - часть 1PureMVC в картинках - часть 1
PureMVC в картинках - часть 1
 

Mais de rit2011

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2rit2011
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3rit2011
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4rit2011
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2rit2011
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3rit2011
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4rit2011
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...rit2011
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2rit2011
 

Mais de rit2011 (20)

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
 

Hadoop streaming простой путь к масштабированию приложений обработки данных. алексей воропаев. зал 2

  • 1. Hadoop Streaming: простой путь к масштабированию приложений обработки данных Алексей Воропаев Руководитель группы ранжирования результатов поиска
  • 2. Зачем? Данные постоянно растут: - Граф внешних ссылок 2007 год: 100 Гб - Граф внешних ссылок 2011 год: 10 Тб - Граф всех ссылок 2011 год: 100 Тб - Поведенческая статистика: 300 Гб / день www.mail.ru 2
  • 3. Как обработать «большие» данные? - Нельзя хранить на 1-ой машине - Нельзя обработать на 1-ой машине www.mail.ru 3
  • 4. Горизонтальное масштабирование 1. Как разбить данные? 2. Как организовать вычисления? Больше железа — больше поломок! 1. Сохранность данных? 2. Отказоустойчивость вычислений? 3. Балансировка? 4. Дальнейшее масштабирование? www.mail.ru 4
  • 5. Частичные решения: 1. Распределённые FS 2. Распределённые СУБД 3. MPI, PVM, Cluster OpenMP и т.д. www.mail.ru 5
  • 6. Где взять людей??? - опыт работы с петабайтами данных - знания распределённых вычислений - умение делать быстро и надёжно www.mail.ru 6
  • 7. Комплексные решения? Google: - 2003 год: GoogleFileSystem - 2004 год: MapReduce www.mail.ru 7
  • 8. Подсчет уникальных строк: # cat input | sort | uniq -c > output www.mail.ru 8
  • 9. Добавляем параллелизм: cat sort uniq -c output input cat sort uniq -c cat Обрабатывае Группируем в м кучи Строки кучи по ключу параллельно независимы www.mail.ru 9
  • 10. MapReduce: cat sort uniq -c output input cat sort uniq -c cat map shufle reduce
  • 11. Применении: - Распределённый sort, grep и т.д. - Статистика - SQL-подобные операции - Алгоритмы на графах - Обработка текстов (обратный индекс) - Машинное обучение - и т.д www.mail.ru 11
  • 12. Экосистема для «больших» данных: - Линейно масштабируемые - Для «обычного» железа - Простота использования - Основан на Java www.mail.ru 12
  • 13. Распределённая файловая система: - Блочная структура - Адаптация под очень большие файлы - Репликации - Автоматическое восстановление - Дружественна MapReduce www.mail.ru 13
  • 14. Фреймворк для вычислений: - Инфраструктура - Планирование и балансировка нагрузки - Мониторинг - Основан на Java www.mail.ru 14
  • 15. Streaming: hadoop jar hadoop-streaming.jar -input /data/input_dir -output /data/output_dir -mapper cat -reducer 'uniq -c' Mapper & Reducer: - На любом языке: Python, Ruby, C++, bash - Взаимодействие через стандартные потоки - Быстро и просто www.mail.ru 15
  • 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 cat www.mail.ru 16
  • 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 -c' mapper.pl: - input: строчки лога - output: '<page>n' www.mail.ru 17
  • 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.pl mapper.pl: - input: строчки лога - output: '<uid>t1' reducer.pl: - input: '<uid1>t<cnt1>' '<uid1>t<cnt2>' - output: '<uid1>t<cnt1+cnt2>' www.mail.ru 18
  • 19. Несколько входов: 1. Данные хранятся в одном формате 2. Несколько '-input' 3. Переменная окружения $map_input_file Любое свойство конфига доступно через переменную окружения. www.mail.ru 19
  • 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. 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/1226555456 www.mail.ru 21
  • 22. Счетчики и job-статус: - позволяют вести учет событий - используют стандартный поток ошибок - счетчик: reporter:counter:<group>,<counter>,<amount> - статус: reporter:status:<message> www.mail.ru 22
  • 23. Отладка, тесты: - читаемый ввод-вывод - наличие системы мониторинга - логирование - легко запускать без Hadoop cat input | sort | uniq -c > output www.mail.ru 23
  • 24. Плюсы: - простота разработки - удобство отладки - любые языки Минусы: - не все возможности Hadoop - замедление примерно 15% - сложности с бинарными данными www.mail.ru 24
  • 25. Спасибо! Алексей Воропаев Руководитель группы ранжирования результатов поиска voropaev@corp.mail.ru www.mail.ru