SlideShare una empresa de Scribd logo
1 de 16
Сервис рекомендаций на
виртуальном Hadoop кластере
         Роман Зыков
Содержание
•   Проблема: сервисы рекомендаций
•   Архитектуры
•   Компоненты Hadoop
•   Конфигурация Hadoop
•   Интеграция с БД
•   Hive и Pig
•   Что дальше
Рекомендации
Проблема
Алгоритмы рекомендаций это:
• перемножение больших матриц
• очень большие JOIN

Пример:
Лог из 338Мб –> 55 Гб –> 32 Мб
Архитектура До
Хранилище MS SQL Enterprise
(2 CPU Xeon, 48G RAM, 8x300Gb RAID10 SAS)

Эксплуатация:
  – обновление раз в неделю
  – 5 часов в лучшем случае
  – 30% вероятности падения из-за tempdb
  – блокировал ETL
Архитектура После




• виртуальный кластер: 6 нод
• 2Gb RAM, 30 Gb HDD, 16 cores
• Cloudera Manager (free up to 50)
Компоненты Hadoop
Конфигурация Hadoop
• Компрессия данных (Snappy или LZO)
• Предварительная фильтрация данных
• Бекапирование namenode на NFS
• 1 map/reduce задача на ноду
• Настройка памяти Java
Компрессия
Algorithm     Compression Ratio   IO performance increase
Snappy        40%                 25%
LZF           40%                 21%
LZO           41%                 5%
ZLIB          48%                 -16%

Snappy – Sequence Files, Avro, HBASE, txt
LZO – поддерживает индексацию для split операции

•   HDFS хранение
•   MAP output
•   MapReduce output
•   AVRO!
SQOOP
SQOOP утилита обмена данными между Hadoop (HDFS, HIVE,
HBASE) и базами данных.

sqoop export --options-file ./sqoop_recommendations_connect --table ItemView
--export-dir /data/itemview --input-fields-terminated-by 't'


sqoop import --options-file ./sqoop_web_connect --table hadoop_webstat_daily
-m 1 --warehouse-dir /data --fields-terminated-by 't'

sqoop eval --options-file ./sqoop_warehouse_connect --query "exec
dbo._hadoop_model_value"
PIG
•   Скриптовый DataFlow
•   Удобен для ETL!
•   Данные в виде csv или sequence файлов, AVRO
•   UDF (Java, Python и т.д.)
•   Поддерживает Custom Loaders
•   Поддерживает сложные структуры данных
•   JOINS/ORDER BY
•   Pig 0.10.0 добавлены DataFu UDF от LinkedIn
PIG
%declare cur_date `date +%s`;
set mapred.output.compress true;
set mapred.output.compression.codec 'org.apache.hadoop.io.compress.SnappyCodec';
set mapred.output.compression.type 'BLOCK';
set mapred.compress.map.output true;
set mapred.map.output.compression.codec 'org.apache.hadoop.io.compress.SnappyCodec';

-- load data
A = load '/tmp/itemview_input' AS (session_id1:int, item_id1:int, val1:int);
B = load '/tmp/itemview_input' AS (session_id2:int, item_id2:int, val2:int);

-- calculate the length of one item vector
L_0 = load '/tmp/itemview_input' AS (session_id:int, item_id:int, val:int);
L_1 = FOREACH L_0 GENERATE item_id, val*val as val;
L_2 = GROUP L_1 BY item_id;
L = FOREACH L_2 GENERATE FLATTEN(group) as item_id, (long)SQRT(SUM(L_1.val)) as weight;

STORE L INTO '/tmp/itemview_matrix' USING PigStorage();
Hive
•Виртуальное ХД, Почти SQL, ODBC/JDBC
•Сsv, Sequence, AVRO в HDFS
•HBASE
•Партиции
•Индексы
•JOINS
•Таблицы, Views
•Нет: Delete, Update !!!
•REGEXP по названию полей
•Cложные структуры данных: map, arrays, struct
•Поддерживает UDF и UDTF функции (Java, Python и т.д.)
Hive
SELECT hs.search_word, b.model_id, SUM(b.weight) as weight, count(distinct hs.visitor_id) as
visitors
                        FROM
                                   (SELECT hw.visitor_id, hw.date_time, hw.model_id,
                                    SUM(CASE page_type WHEN 'cart_add' THEN 3
                                                           WHEN 'order' THEN 5 ELSE 1)
                                      FROM hadoop_catalog_model hc JOIN
                                             hadoop_webstat hw
                                             ON (hc.model_id=hw.model_id)
                                    WHERE hc.t_recommended_good_id > 0
                                    GROUP BY hw.visitor_id, hw.date_time, hw.model_id) b
JOIN hadoop_searchwords hs
ON b.visitor_id = hs.visitor_id AND ROUND(hs.date_time/86400)*86400 = b.date_time
WHERE ! (hs.search_word RLIKE '^[-+]?[0-9]*.?[0-9]+$')
and length(hs.search_word) > 2
GROUP BY hs.search_word, b.model_id
HAVING count(distinct hs.visitor_id) >1
LIMIT 100
Что дальше
• Realtime веб-аналитика на HBASE + HIVE
• Хранилище данных на HIVE
• AVRO
• OLAP?
Вопросы???
 rzykov@gmail.com

Más contenido relacionado

La actualidad más candente

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
IT-Portfolio
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
Ontico
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Ontico
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
IT-Portfolio
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
Andrey Korshikov
 
SSAS Multidimension и Tabular: что выбрать?
SSAS Multidimension и Tabular: что выбрать?SSAS Multidimension и Tabular: что выбрать?
SSAS Multidimension и Tabular: что выбрать?
Andrey Korshikov
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Ontico
 

La actualidad más candente (20)

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
 
Clickhouse
ClickhouseClickhouse
Clickhouse
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
 
ClickHouse
ClickHouseClickHouse
ClickHouse
 
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
 
Azure
AzureAzure
Azure
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
SSAS Multidimension и Tabular: что выбрать?
SSAS Multidimension и Tabular: что выбрать?SSAS Multidimension и Tabular: что выбрать?
SSAS Multidimension и Tabular: что выбрать?
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
 

Destacado

Ozon в высшей школе экономики часть 2
Ozon в высшей школе экономики часть 2Ozon в высшей школе экономики часть 2
Ozon в высшей школе экономики часть 2
Roman Zykov
 
Ozon в высшей школе экономики часть 4
Ozon в высшей школе экономики часть 4Ozon в высшей школе экономики часть 4
Ozon в высшей школе экономики часть 4
Roman Zykov
 
Ozon в высшей школе экономики часть 3
Ozon в высшей школе экономики часть 3Ozon в высшей школе экономики часть 3
Ozon в высшей школе экономики часть 3
Roman Zykov
 
How to eliminate ideas as soon as possible
How to eliminate ideas as soon as possibleHow to eliminate ideas as soon as possible
How to eliminate ideas as soon as possible
Roman Zykov
 

Destacado (6)

Ozon в высшей школе экономики часть 2
Ozon в высшей школе экономики часть 2Ozon в высшей школе экономики часть 2
Ozon в высшей школе экономики часть 2
 
Ozon в высшей школе экономики часть 4
Ozon в высшей школе экономики часть 4Ozon в высшей школе экономики часть 4
Ozon в высшей школе экономики часть 4
 
Owox rzykov
Owox rzykovOwox rzykov
Owox rzykov
 
Ozon в высшей школе экономики часть 3
Ozon в высшей школе экономики часть 3Ozon в высшей школе экономики часть 3
Ozon в высшей школе экономики часть 3
 
Kib Rif 2015. Make money from your data
Kib Rif 2015. Make money from your dataKib Rif 2015. Make money from your data
Kib Rif 2015. Make money from your data
 
How to eliminate ideas as soon as possible
How to eliminate ideas as soon as possibleHow to eliminate ideas as soon as possible
How to eliminate ideas as soon as possible
 

Similar a Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)

Hadoop implementation in Wikimart
Hadoop implementation in WikimartHadoop implementation in Wikimart
Hadoop implementation in Wikimart
Roman Zykov
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
Vladimir Klimontovich
 
Web весна 2012 лекция 10
Web весна 2012 лекция 10Web весна 2012 лекция 10
Web весна 2012 лекция 10
Technopark
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
it-people
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
DevDay
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
Technopark
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
Technopark
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
rit2011
 

Similar a Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков) (20)

Hadoop implementation in Wikimart
Hadoop implementation in WikimartHadoop implementation in Wikimart
Hadoop implementation in Wikimart
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Web весна 2012 лекция 10
Web весна 2012 лекция 10Web весна 2012 лекция 10
Web весна 2012 лекция 10
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and 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
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 

Más de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Más de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)

  • 1. Сервис рекомендаций на виртуальном Hadoop кластере Роман Зыков
  • 2. Содержание • Проблема: сервисы рекомендаций • Архитектуры • Компоненты Hadoop • Конфигурация Hadoop • Интеграция с БД • Hive и Pig • Что дальше
  • 4. Проблема Алгоритмы рекомендаций это: • перемножение больших матриц • очень большие JOIN Пример: Лог из 338Мб –> 55 Гб –> 32 Мб
  • 5. Архитектура До Хранилище MS SQL Enterprise (2 CPU Xeon, 48G RAM, 8x300Gb RAID10 SAS) Эксплуатация: – обновление раз в неделю – 5 часов в лучшем случае – 30% вероятности падения из-за tempdb – блокировал ETL
  • 6. Архитектура После • виртуальный кластер: 6 нод • 2Gb RAM, 30 Gb HDD, 16 cores • Cloudera Manager (free up to 50)
  • 8. Конфигурация Hadoop • Компрессия данных (Snappy или LZO) • Предварительная фильтрация данных • Бекапирование namenode на NFS • 1 map/reduce задача на ноду • Настройка памяти Java
  • 9. Компрессия Algorithm Compression Ratio IO performance increase Snappy 40% 25% LZF 40% 21% LZO 41% 5% ZLIB 48% -16% Snappy – Sequence Files, Avro, HBASE, txt LZO – поддерживает индексацию для split операции • HDFS хранение • MAP output • MapReduce output • AVRO!
  • 10. SQOOP SQOOP утилита обмена данными между Hadoop (HDFS, HIVE, HBASE) и базами данных. sqoop export --options-file ./sqoop_recommendations_connect --table ItemView --export-dir /data/itemview --input-fields-terminated-by 't' sqoop import --options-file ./sqoop_web_connect --table hadoop_webstat_daily -m 1 --warehouse-dir /data --fields-terminated-by 't' sqoop eval --options-file ./sqoop_warehouse_connect --query "exec dbo._hadoop_model_value"
  • 11. PIG • Скриптовый DataFlow • Удобен для ETL! • Данные в виде csv или sequence файлов, AVRO • UDF (Java, Python и т.д.) • Поддерживает Custom Loaders • Поддерживает сложные структуры данных • JOINS/ORDER BY • Pig 0.10.0 добавлены DataFu UDF от LinkedIn
  • 12. PIG %declare cur_date `date +%s`; set mapred.output.compress true; set mapred.output.compression.codec 'org.apache.hadoop.io.compress.SnappyCodec'; set mapred.output.compression.type 'BLOCK'; set mapred.compress.map.output true; set mapred.map.output.compression.codec 'org.apache.hadoop.io.compress.SnappyCodec'; -- load data A = load '/tmp/itemview_input' AS (session_id1:int, item_id1:int, val1:int); B = load '/tmp/itemview_input' AS (session_id2:int, item_id2:int, val2:int); -- calculate the length of one item vector L_0 = load '/tmp/itemview_input' AS (session_id:int, item_id:int, val:int); L_1 = FOREACH L_0 GENERATE item_id, val*val as val; L_2 = GROUP L_1 BY item_id; L = FOREACH L_2 GENERATE FLATTEN(group) as item_id, (long)SQRT(SUM(L_1.val)) as weight; STORE L INTO '/tmp/itemview_matrix' USING PigStorage();
  • 13. Hive •Виртуальное ХД, Почти SQL, ODBC/JDBC •Сsv, Sequence, AVRO в HDFS •HBASE •Партиции •Индексы •JOINS •Таблицы, Views •Нет: Delete, Update !!! •REGEXP по названию полей •Cложные структуры данных: map, arrays, struct •Поддерживает UDF и UDTF функции (Java, Python и т.д.)
  • 14. Hive SELECT hs.search_word, b.model_id, SUM(b.weight) as weight, count(distinct hs.visitor_id) as visitors FROM (SELECT hw.visitor_id, hw.date_time, hw.model_id, SUM(CASE page_type WHEN 'cart_add' THEN 3 WHEN 'order' THEN 5 ELSE 1) FROM hadoop_catalog_model hc JOIN hadoop_webstat hw ON (hc.model_id=hw.model_id) WHERE hc.t_recommended_good_id > 0 GROUP BY hw.visitor_id, hw.date_time, hw.model_id) b JOIN hadoop_searchwords hs ON b.visitor_id = hs.visitor_id AND ROUND(hs.date_time/86400)*86400 = b.date_time WHERE ! (hs.search_word RLIKE '^[-+]?[0-9]*.?[0-9]+$') and length(hs.search_word) > 2 GROUP BY hs.search_word, b.model_id HAVING count(distinct hs.visitor_id) >1 LIMIT 100
  • 15. Что дальше • Realtime веб-аналитика на HBASE + HIVE • Хранилище данных на HIVE • AVRO • OLAP?