Электронная коммерция: от Hadoop к Spark Scala

17
Платформа для мультиканальной персонализации интернетмагазина на основе big data retailrocket На пути к Apache Spark Роман Зыков Сооснователь и директор по аналитике 12 ноября 2014, Москва

Transcript of Электронная коммерция: от Hadoop к Spark Scala

Page 1: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  

retailrocketНа  пути  к  Apache  Spark  

Роман  Зыков  Со-­‐основатель  и  директор  по  аналитике  12  ноября  2014,  Москва  

Page 2: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  

Как  работает  Retail  Rocket  

Page 3: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

1.  Наш  сервис  собирает  всю  информацию  о  пользователях  и  их  поведении  на  сайте  магазина.  

2.  Мощный  аналитический  аппарат  превращает  огромное  количество  данных  в  рекомендации.  

3.  Персональные  рекомендации  через  виджеты  или  серверный  API  размещаются  на  сайте    

       магазина,  в  персональных  email-­‐сообщениях,  в  CRM  у  операторов  колл-­‐центра  и  в  любых  других  

       каналах  коммуникации.  Система  постоянно  самообучается  и  увеличивает  эффективность.      

1  

2  

3  

Мы  используем  сложную  big  data  модель  для  формирования  товарных  рекомендаций  

Page 4: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  

Что  дает  Retail  Rocket  

Page 5: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Что  дает  Retail  Rocket?  

+  Персонализация  сайта  

       –  Более  10  сценариев,  разработанных  создателями  рекомендательных  систем    

             Ozon.ru  и  Wikimart.ru  

       –  Рост  продаж  от  10%  до  50%  (по  результатам  независимых  А/Б  тестов)  

       –  Месяц  на  бесплатное  тестирование      

+  Персонализация  email          –  Полностью  автоматизированные  рассылки  без  затрат  на  персонал  

       –  Средняя  конверсия  из  переходов  в  заказы  –  >10%  (!)  

       –  Оплата  только  за  результат  (CPO  или  Revenue  Share)  

Page 6: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  *  Согласно  независимому  исследованию  InSales  от  30.10.2014  

Page 7: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  

Архитектура  Retail  Rocket  

Page 8: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

•  CDH  5.1.2  •  Spark  1.1  •  High  Availability:  2  Namenodes,  3  Journalnodes  •  18  Datanodes  •  100  Tb  несжатых  данных  •  100  млн  новых  событий  в  сутки  

Page 9: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Page 10: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Проблемы!!!  

•  Зоопарк  языков  программирования  •  Сложность  реализации  итеративных  алгоритмов  •  Инвестиции  в  железо  

Page 11: Электронная коммерция: от Hadoop к Spark Scala

Платформа  для  мультиканальной  персонализации  интернет-­‐магазина  на  основе  big  data  

Apache  Spark  

Page 12: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Решение  

•  Один  язык  программирования  -­‐    Scala  •  Расчеты  в  памяти  –  поддержка  итеративных  алгоритмов  •  Производительность  (в  3-­‐5  раз)  •  Лучше  использует  память  •  Spark  SQL  вместо  Hive  •  Spark  Streaming    •  Parquet  

Page 13: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Переезд  хуже  пожара  –  нужен  Yarn  

Old  cluster  

Name  nodes  

Journal  nodes  

Name  nodes  

Journal  nodes  

New  cluster  

CDH  4.5  

CDH  5.1  Yarn  

Puppet  

hzps://github.com/RetailRocket/puppet-­‐cdh5  

Page 14: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Spark  Scala  

•  Проблема  «мелких»  файлов    •  Капризен  к  опциям  параллелизации  (reduce)  •  Нет  удобного  notebook  •  Лучше  писать  свои  сериализаторы  на  базе  Kryo  

Page 15: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Проблема  мелких  файлов  

•  По-­‐умолчанию  Hadoop:  1  маппер  на  файл  •  org.apache.hadoop.hive.ql.io.CombineHiveInputFormat      •  Pig:    

•  pig.splitCombina�on  =  true  •  pig.maxCombinedSplitSize    

•  Hive:  •  hive.input.format  =  

org.apache.hadoop.hive.ql.io.CombineHiveInputFormat  •  hive.hadoop.supports.splizable.combineinpu�ormat=true  

•  Spark/Scala  •  hzps://github.com/RetailRocket/SparkMul�Tool  

Retail  Rocket:  100000  файлов  -­‐    100000(ДО),  3000(после)  Скорость  чтения  выросла  в  «три»  раза  

Page 16: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Ссылки  

•  Книга  Learning  on  Spark  (hzp://shop.oreilly.com/product/0636920028512.do)  •  Курс  Coursera  курс  по  Scala  (hzps://www.coursera.org/course/progfun)  •  Видео  Spark  Summit  2014  (hzp://spark-­‐summit.org/2014)  •  Spark  should  be  bezer  than  MapReduce  (if  only  it  worked)  •  Retail  Rocket  Public  GitHub  (hzps://github.com/RetailRocket)    

Page 17: Электронная коммерция: от Hadoop к Spark Scala

retailrocket

Вопросы?  

[email protected]