SlideShare a Scribd company logo
Распределенные
вычисления на
JavaScript!
Viktor Turskyi
CTO at WebbyLab
Webcamp 2015
Бизнес задача
Обработка большого массива (миллиарды
записей) данных с соц. сетей.
Примера анализа
Расчет упоминаемости групп ключевых
слов.
Источник данных - Twitter Public Stream API
Объем данных: +15ГБ ежедневно (5ТБ в
год)
Примеры запроса
“#nike” против “#adidas”
“#nike & nba” против “#adidas & nba”
“(спорт|турнир) & -футбол”
“волки & косметичка”
MapReduce или как это делают в
Google
MapReduce — модель распределённых
вычислений, представленная компанией
Google, используемая для параллельных
вычислений над очень большими, несколько
петабайт, наборами данных в компьютерных
кластерах. (Wikipedia)
Как работает MapReduce?
Фазы mapreduce
map: mapper(line) -> (k1, v1)
shuffle: сортировка по k1
reduce: reducer(k1, [v1, v2, v3])
Подсчет слов (“hello world” из мира MR)
Подсчет слов
Когда Джефф Дин не может заснуть,
он мап-редьюсит овечек
Экосистема Hadoop
Google MapReduce -> Hadoop Mapreduce
Google File System -> HDFS
Google BigTable -> Hbase
Как использовать JS c Hadoop
(hadoop streaming)
Подсчет слов на hadoop streaming
Тестируем локально
cat data | ./mapper.js | sort -k1,1 | ./reducer.js
Boilerplate for Hadoop tasks
https://github.com/koorchik/node-hadoop-
boilerplate
От “hello world” к реальной задаче
Задача: сравнение упоминаемости групп
ключевых слов.
Вход: данные с твиттера
Выход: график упоминаемости групп
ключевых слов по дням
Время обработки: до 10 секунд
Общая архитектура
Режим работы
1) Запись и хранение данных на S3
2) Ежедневный пересчет (transient cluster)
3) Дополнительный кластер для hbase
(хранит индексы и результаты
вычислений).
4) Оплата только за используемые ресурсы
Инвертированный индекс
Построение инвертированного
индекса
Проблемы
Установка зависимостей на кластер
Склонения слов (стеминг, лематизация)
Асинхронность маппера
Стоп-слова
Токенизация (ссылки, хеш-теги, юзернеймы)
Компрессия индекса
Вычисление пересечений в индексе
Ранжирование документов
Обработка словосочетаний
Создаем кластер на AWS EMR
(демо)
1) Установка NodeJS на кластер
2) Работа с зависимостями
Асинхронность & mystem
Живая демонстрация
Ссылки
Hadoop streaming utils for NodeJS https://www.npmjs.com/package/hadoop-
streaming-utils
Node Hadoop boilerplate https://github.com/koorchik/node-hadoop-boilerplate
NodeJS Mystem3 - https://www.npmjs.com/package/mystem3
MapReduce: Simplified Data Processing on Large Clusters http://research.
google.com/archive/mapreduce.html
Amazon Elastic MapReduce http://aws.amazon.com/elasticmapreduce/
Viktor Turskyi
viktor@webbylab.com
https://twitter.com/koorchik
https://github.com/koorchik
WebbyLab
http://webbylab.com

More Related Content

PDF
«Облачная платформа Windows Azure для высоконагруженных проектов»
PPTX
Использование облачной платформы OpenStack для реализации механизмов обработк...
ODP
Maybe you do not know that ...
PDF
JS Lab 2016 - Frontend trends 2015 - 2016
PDF
Language Independent Validation Rules (LIVR)
PDF
Excel in Javascript
PDF
Testing orm based code
PDF
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
«Облачная платформа Windows Azure для высоконагруженных проектов»
Использование облачной платформы OpenStack для реализации механизмов обработк...
Maybe you do not know that ...
JS Lab 2016 - Frontend trends 2015 - 2016
Language Independent Validation Rules (LIVR)
Excel in Javascript
Testing orm based code
Kharkiv JS 2015 - Creating isomorphic applications in React (en)

Similar to Hadoop webcamp 2015 (9)

PDF
Mapreduce in JavaScript
PDF
2 я.студент леванов map reduce
PDF
О.В.Сухорослов "MapReduce"
PPTX
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
ODP
Apache Hadoop
PDF
Hadoop presentation
PDF
06 - Hadoop. Java API и Hadoop Streaming
PPTX
DBD lection 4. Big Data, NoSQL. In Russian.
Mapreduce in JavaScript
2 я.студент леванов map reduce
О.В.Сухорослов "MapReduce"
Лекция 5. MapReduce в Hadoop (алгоритмы)
Apache Hadoop
Hadoop presentation
06 - Hadoop. Java API и Hadoop Streaming
DBD lection 4. Big Data, NoSQL. In Russian.
Ad

More from Viktor Turskyi (12)

PDF
How to create a high performance excel engine in java script
PDF
Livr 2.0 in JS - Vinnytsia.JS 2019
PDF
The working architecture of node js applications open tech week javascript ...
PDF
Yet another json rpc library (mole rpc)
PDF
KharkivJS 2018 Information Security Practice
PDF
"Offline mode for a mobile application, redux on server and a little bit abou...
PDF
The working architecture of NodeJs applications
PDF
Language Independent Validation Rules 2.0, Viktor Turskyi, talk at OSDN 2017
PDF
How to extract information from text with Semgrex
PDF
How to translate your Single Page Application - Webcamp 2016 (en)
PDF
It's Quiz - Cloud testing platform
PDF
Kharkiv JS 2015: Боль и радость создания изоморфных приложений на ReactJS (RU)
How to create a high performance excel engine in java script
Livr 2.0 in JS - Vinnytsia.JS 2019
The working architecture of node js applications open tech week javascript ...
Yet another json rpc library (mole rpc)
KharkivJS 2018 Information Security Practice
"Offline mode for a mobile application, redux on server and a little bit abou...
The working architecture of NodeJs applications
Language Independent Validation Rules 2.0, Viktor Turskyi, talk at OSDN 2017
How to extract information from text with Semgrex
How to translate your Single Page Application - Webcamp 2016 (en)
It's Quiz - Cloud testing platform
Kharkiv JS 2015: Боль и радость создания изоморфных приложений на ReactJS (RU)
Ad

Hadoop webcamp 2015