SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesi
SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesiSCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesi
SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesiSerhad MAKBULOĞLU, MBA
 
SoftServe - the difference is you! join professionals!
SoftServe - the difference is you! join professionals!SoftServe - the difference is you! join professionals!
SoftServe - the difference is you! join professionals!SoftServe
 
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»e-Legion
 
How to Give an Effective and Powerful Presentation? by Dr. Honjo
How to Give an Effective and Powerful Presentation? by Dr. HonjoHow to Give an Effective and Powerful Presentation? by Dr. Honjo
How to Give an Effective and Powerful Presentation? by Dr. HonjoNaoko Tsubaki
 
Garis garis besar program pengajaran
Garis garis besar program pengajaranGaris garis besar program pengajaran
Garis garis besar program pengajaranRatzman III
 
Epaper Surya 13 Juli 2013
Epaper Surya 13 Juli 2013Epaper Surya 13 Juli 2013
Epaper Surya 13 Juli 2013Portal Surya
 
Pricelistapteka
PricelistaptekaPricelistapteka
Pricelistaptekagorin2008
 
Media Murros Aalto 1 10 2009
Media Murros Aalto 1 10 2009Media Murros Aalto 1 10 2009
Media Murros Aalto 1 10 2009Teemu Leinonen
 
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segment
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segmentVodafone is de meest voorkomende zakelijke provider in het MBK+ segment
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segmentComputer Profile
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
 
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...RTTS
 
Big Data Testing: Ensuring MongoDB Data Quality
Big Data Testing: Ensuring MongoDB Data QualityBig Data Testing: Ensuring MongoDB Data Quality
Big Data Testing: Ensuring MongoDB Data QualityRTTS
 
Data quality and data profiling
Data quality and data profilingData quality and data profiling
Data quality and data profilingShailja Khurana
 
Testing Big Data: Automated Testing of Hadoop with QuerySurge
Testing Big Data: Automated  Testing of Hadoop with QuerySurgeTesting Big Data: Automated  Testing of Hadoop with QuerySurge
Testing Big Data: Automated Testing of Hadoop with QuerySurgeRTTS
 

Andere mochten auch (16)

SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesi
SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesiSCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesi
SCOM 2007 Management Pack Yönetimi ve Server (SQL,Web) Performans İzlemesi
 
SoftServe - the difference is you! join professionals!
SoftServe - the difference is you! join professionals!SoftServe - the difference is you! join professionals!
SoftServe - the difference is you! join professionals!
 
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
 
How to Give an Effective and Powerful Presentation? by Dr. Honjo
How to Give an Effective and Powerful Presentation? by Dr. HonjoHow to Give an Effective and Powerful Presentation? by Dr. Honjo
How to Give an Effective and Powerful Presentation? by Dr. Honjo
 
Garis garis besar program pengajaran
Garis garis besar program pengajaranGaris garis besar program pengajaran
Garis garis besar program pengajaran
 
Epaper Surya 13 Juli 2013
Epaper Surya 13 Juli 2013Epaper Surya 13 Juli 2013
Epaper Surya 13 Juli 2013
 
Pricelistapteka
PricelistaptekaPricelistapteka
Pricelistapteka
 
Media Murros Aalto 1 10 2009
Media Murros Aalto 1 10 2009Media Murros Aalto 1 10 2009
Media Murros Aalto 1 10 2009
 
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segment
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segmentVodafone is de meest voorkomende zakelijke provider in het MBK+ segment
Vodafone is de meest voorkomende zakelijke provider in het MBK+ segment
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Big Data Profiling
Big Data Profiling Big Data Profiling
Big Data Profiling
 
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...
 
Big Data Testing: Ensuring MongoDB Data Quality
Big Data Testing: Ensuring MongoDB Data QualityBig Data Testing: Ensuring MongoDB Data Quality
Big Data Testing: Ensuring MongoDB Data Quality
 
Data quality and data profiling
Data quality and data profilingData quality and data profiling
Data quality and data profiling
 
Testing Big Data: Automated Testing of Hadoop with QuerySurge
Testing Big Data: Automated  Testing of Hadoop with QuerySurgeTesting Big Data: Automated  Testing of Hadoop with QuerySurge
Testing Big Data: Automated Testing of Hadoop with QuerySurge
 

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

Руслан Гроховецкий "Как 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
 

Ähnlich wie RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки данных (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
 

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

  • 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