SlideShare a Scribd company logo
1 of 114
Download to read offline
BigData Tools
Зиновьев Алексей
Java/BigData тренер в EPAM
Контакты
• https://twitter.com/zaleslaw
• https://twitter.com/BigDataRussia
• http://vk.com/big_data_russia Big Data Russia
• http://vk.com/java_jvm
JavaScript изо всех щелей
И вот, что я скажу тебе, JavaScript
И вот, что я скажу тебе, JavaScript
Мне нравится, когда все на JVM
крутится!
Типичный BigData кластер
• 450 машин
• Master Nodes (24 ядра, 158 Gb RAM).
• Data Nodes (24|32 ядра, 96|128 Gb RAM).
• Средняя YARN Queue utilization 85% (по
дням).
• 12Pb – емкость хранения данных
Когда мы говорим, что имеем дело с
BigData решением
• Когда перед глазами смесь архитектурных
подходов, таких как Kappa, Lambda, Data Lake
• Когда мы имеем дело со стеком технологий,
таких как Hadoop, Kafka, Spark, Storm, Samza,
HBase, Cassandra, Titan, GridGain
• Когда анализ логов этих систем – задача не
менее серьезного уровня
ScaleUp vs ScaleOut
16 CPUs 16 CPUs 16 CPUsScale - Out16 CPUs
48 CPUsScale - Up16 CPUs
Приходит время, данные в
датацентры улетают…
I
50GB
300GB
5TB
Приходит время, данные в
датацентры улетают…
Как вылечить невысокую
устойчивость к сбоям?
Мыть голову при помощи нового
шампуня «Репликация»!
Если вы слишком увлечётесь гонкой
инструментов, то получится..
Типичный многосервисный проект,
где основной болью будет конфликт
разных версий
Real-Time Data-Marts
Batch Data-Marts
Relations Graph
Ontology Metadata
Search Index
Events & Alarms
Real-time
Dashboarding
Events & Alarms
All Raw Data backup
is stored here
Real-time Data
Ingestion
Batch Data
Ingestion
Real-Time ETL & CEP
Batch ETL & Raw Area
Scheduler
Internal
External
Social
HDFS → CFS
as an option
Time-Series Data
Titan & KairosDB
store data in Cassandra
Push Events & Alarms (Email, SNMP etc.)
Hadoop
Пора дать определение!
• Hadoop != MapReduce
Пора дать определение!
• Hadoop != MapReduce
• Hadoop – это фреймворк
Пора дать определение!
• Hadoop != MapReduce
• Hadoop – это фреймворк
• Фреймворк для обработки больших
массивов данных
Пора дать определение!
• Hadoop != MapReduce
• Hadoop – это фреймворк
• Фреймворк для обработки больших
массивов данных
• Который использует простые модели и
парадигмы программирования
Пора дать определение!
• Hadoop != MapReduce
• Hadoop – это фреймворк
• Фреймворк для обработки больших
массивов данных
• Который использует простые модели и
парадигмы программирования
• Скрывая от нас всю самую сложную часть с
параллелизацией, перемещением данных и
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
• Абстрактные (Pig, Pipeline Spark)
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
• Абстрактные (Pig, Pipeline Spark)
• SQL – подобные (Hive, Impala, Spark SQL)
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
• Абстрактные (Pig, Pipeline Spark)
• SQL – подобные (Hive, Impala, Spark SQL)
• Для обработки графов (Giraph, GraphX)
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
• Абстрактные (Pig, Pipeline Spark)
• SQL – подобные (Hive, Impala, Spark SQL)
• Для обработки графов (Giraph, GraphX)
• Машинное обучение (MLlib, Mahout)
Фреймворке в семействе Hadoop
• Универсальные (MapReduce, Tez, Kudu, RDD
in Spark)
• Абстрактные (Pig, Pipeline Spark)
• SQL – подобные (Hive, Impala, Spark SQL)
• Для обработки графов (Giraph, GraphX)
• Машинное обучение (MLlib, Mahout)
• Stream (Spark Streaming, Storm)
Важнейшие части «слона»
• Hadoop Commons
• Hadoop Clients
• HDFS – Hadoop Distributed File System
• Yarn – Yet Another Resource Negotiator
• MapReduce
Как начать?
Как начать?
С выбора дистрибутива, конечно
Важнейшие части «слона»
• Apache Hadoop 2.7.1
• Hortonworks HDP 2.3 2.7.1
• Cloudera CDH 5.4.4 2.6.0
• MapR 5.0 2.7.0
• Pivotal HD 3.0 2.6.0
• other
HDP != Hadoop
HDP != Hadoop
Русские ставят вручную на первый
попавшийся сервер
Нравится много писать в консоли?
Big Data on your local machine : How to install Hadoop 2.6.0
Режим установки local
• Однопоточная Java
• Легко дебажить даже из IDE
• Репликации нет
• HDFS учить не нужно
• dfs.replication=“1”;
• fs.defaultFS=“file:///”;
fs.default.name=“file:///”;
• mapreduce.framework.name=“local”
Режим установки Pseudo-distributed
• Все на одной ноде
• Репликации нет
• Каждому демону из Hadoop соответсвует
thread из Java
• Yarn выполняет свою работу
Режим установки Fully-distributed
• Репликация какая надо
• Master/slave ноды
• Yarn выполняет свою работу
Топология Hadoop
Best Practices
• DataNodes, NodeManagers and RegionServers
обычно разворачиваются исходя из
стратегии DataLocality
Best Practices
• DataNodes, NodeManagers and RegionServers
обычно разворачиваются исходя из
стратегии DataLocality
• Обычно каждый блок данных реплицируется
минимум трижды в действительно разных
местах
Best Practices
• DataNodes, NodeManagers and RegionServers
обычно разворачиваются исходя из
стратегии DataLocality
• Обычно каждый блок данных реплицируется
минимум трижды в действительно разных
местах
• Если можно, ставим балансировщик
Best Practices
• DataNodes, NodeManagers and RegionServers
обычно разворачиваются исходя из
стратегии DataLocality
• Обычно каждый блок данных реплицируется
минимум трижды в действительно разных
местах
• Если можно, ставим балансировщик
• Изучаем особенности HDFS 
Рекомендации по мощностям
• 64GB RAM для NameNode позволяют
адресоваться ~100M files в HDFS
• 256 GB RAM для data nodes и интенсивными
in-memory operations (например Spark
executors, или in-memory DBs)
• Минимум 8-16 cores CPUs
• Минимум 4 дисков (для master nodes) и 6-12
дисков (для data nodes) для IO optimization; +
1 отдельный диск для OS
HDFS
Hadoop Distributed File System
Hortonworks утверждает, что
существуют кластера на 200 PB, 4500
машин, > 10^6 файлов и HDFS
нормально так работает
NameNode
• Вообще это отдельные процессы, которые
умеют жить как на одной, так и на разных
машинах
• В кластере только одна NameNode, но это не
SPOF!
• Есть StanbyNameNode, она страхует
• Если NameNode недоступна, то недоступен и
HDFS кластер
NameNode рулит и разруливает!
DataNode
• DataNode может быть сколько угодно, чем
больше, тем лучше
• Можно убирать и добавлять их без особого
ущерба
• DataNode сама отвечает на запросы
• И слушается NameNode, когда надо умереть,
реплицировать что-то или удалить реплику
Что нужно уметь и знать!
• Перемещать данные между HDFS и обычной
FS: hdfs fs -copyFromLocal ; -copyToLocal
• Удалять/создавать директории
• Управлять правами на файлы/папки
• Диагностировать
• Проверять наличие свободного пространства
Все это при помощи команд, похожих на Linux
Укротите демонов!
• /logs
• /logLevel
• /stacks
• /metrics
• /metrics?format=json
MapReduce
MapReduce на уровне языков
Language Code sample
Java 8 Integer totalAge = persons
.stream()
.map(Person::getAge)
.reduce( 0, (a, b) -> a + b);
Scala val totalAge = persons
.map( (p: Person) => p.getAge )
.reduce( _ + _ )
Python totalAge = reduce(
(lambda a, b: a + b),
list( map(lambda p: p.getAge, persons) )
)
MapReduce для WordCount
WordCount, отлитый в Java : Mapper
WordCount, отлитый в Java : Reducer
WordCount, отлитый в Java : Runner
WordCount, отлитый в Java : Runner
Как запустить это хозяйство?
• Сделать jar
Как запустить это хозяйство?
• Сделать jar
• Запустить его на удаленной машине, где есть Hadoop
Как запустить это хозяйство?
• Сделать jar
• Запустить его на удаленной машине, где есть Hadoop
• hadoop jar your-jar.jar <packagename>.YourDriver –
Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4
Как запустить это хозяйство?
• Сделать jar
• Запустить его на удаленной машине, где есть Hadoop
• hadoop jar your-jar.jar <packagename>.YourDriver –
Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4
• В коде драйвера работай с этими константами
Как запустить это хозяйство?
• Сделать jar
• Запустить его на удаленной машине, где есть Hadoop
• hadoop jar your-jar.jar <packagename>.YourDriver –
Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4
• В коде драйвера работай с этими константами
• String hdfsInputFileOrDirectory =
configuration.get(“dir.input”);
Запустили? Упало! Нужны тесты 
Вот бы нам JUnit…
Запустили? Упало! Нужны тесты 
public class MRUnitHelloWorld {
MapDriver<LongWritable, Text, Text, IntWritable> mapDriver;
@Before
public void setUp() {
WordMapper mapper = new WordMapper();
mapDriver = new MapDriver<LongWritable, Text, Text, IntWritable>();
mapDriver.setMapper(mapper);
}
@Test
public void testMapper() {
mapDriver.withInput(new LongWritable(1), new Text("cat dog"));
mapDriver.withOutput(new Text("cat"), new IntWritable(1));
mapDriver.withOutput(new Text("dog"), new IntWritable(1));
mapDriver.runTest();
}
}
Hadoop Jobs
Не забывай о JVM!
Но всеми этим фронтами кто-то
должен управлять, говорить кому
когда что делать…
Скелет Hadoop, который пришелся
по вкусу всем!
YARN
MapReduce – это всего лишь одно
приложение, которое приходит к
всемогущему YARN за ресурсами для
своих авантюр
YARN общается с HDFS, чтобы
задействовать DataLocality и
оптимизировать свои ресурсы
YARN управляет жизненным циклом,
нудно, но все работает!
Как извлекать факты для анализа
данных из Hadoop?
Свин и шмелле летят на помощь!
Pig
Подсчет треугольников в графе
Pig Scripts -> MapReduce jobs
Сделаем отчет на Pig
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
Сделаем отчет на Pig
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int,
success:boolean, geoIp:int, userAgent:int);
Сделаем отчет на Pig
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int,
success:boolean, geoIp:int, userAgent:int);
by_user_success = GROUP logins BY (userid, success);
Сделаем отчет на Pig
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int,
success:boolean, geoIp:int, userAgent:int);
by_user_success = GROUP logins BY (userid, success);
logins_data = FOREACH by_user_success
GENERATE FLATTEN (group) as (userid, success),
COUNT(logins.ts) as login_amount;
Сделаем отчет на Pig
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int,
success:boolean, geoIp:int, userAgent:int);
by_user_success = GROUP logins BY (userid, success);
logins_data = FOREACH by_user_success
GENERATE FLATTEN (group) as (userid, success),
COUNT(logins.ts) as login_amount;
DESCRIBE logins_data;
Сделаем отчет на Pig
/* amount of logins by regions */
dem_logins= JOIN dem BY id, logins_data BY userid;
Сделаем отчет на Pig
/* amount of logins by regions */
dem_logins= JOIN dem BY id, logins_data BY userid;
by_region = GROUP dem_logins BY (region, gender, success);
Сделаем отчет на Pig
/* amount of logins by regions */
dem_logins= JOIN dem BY id, logins_data BY userid;
by_region = GROUP dem_logins BY (region, gender, success);
result = FOREACH by_region
GENERATE FLATTEN (group) as (region, gender, success),
SUM(dem_logins.login_amount) as login_amount;
Сделаем отчет на Pig
/* amount of logins by regions */
dem_logins= JOIN dem BY id, logins_data BY userid;
by_region = GROUP dem_logins BY (region, gender, success);
result = FOREACH by_region
GENERATE FLATTEN (group) as (region, gender, success),
SUM(dem_logins.login_amount) as login_amount;
DESCRIBE result;
Сделаем отчет на Pig
/* amount of logins by regions */
dem_logins= JOIN dem BY id, logins_data BY userid;
by_region = GROUP dem_logins BY (region, gender, success);
result = FOREACH by_region
GENERATE FLATTEN (group) as (region, gender, success),
SUM(dem_logins.login_amount) as login_amount;
DESCRIBE result;
STORE result INTO '/ok/dem_logins_by_region' using PigStorage(',');
Да по-любому надо тюнить!
set default_parallel 64;
set job.name Calculate_number_of_users;
set mapred.child.java.opts -Xmx1024m
dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int,
gender:int, region:int);
….
Hive
Как так? Снова SQL?
Да, дружище, он никуда не уходил, стоял за дверью…
Причины триумфа Hive
• Иллюзия структуры
• Единый язык для различных хранилищ
• SQL всем знаком
• Вполне реален ответ за небольшое время
• MapReduce слишком сложен
• Иллюзия JOINs
JOINы превращаются.. в элегантные
шорты
Spark
Почему мамонты вымирают?
• Они слишком часто сохраняются на диск
Почему мамонты вымирают?
• Они слишком часто сохраняются на диск
• Слишком много людей сидят на абстракциях,
а не пишут MR jobs
Почему мамонты вымирают?
• Они слишком часто сохраняются на диск
• Слишком много людей сидят на абстракциях,
а не пишут MR jobs
• Слишком плох MR для итерационных
вычислений
Почему мамонты вымирают?
• Они слишком часто сохраняются на диск
• Слишком много людей сидят на абстракциях,
а не пишут MR jobs
• Слишком плох MR для итерационных
вычислений
• Слишком долго MR был на коне
Почему мамонты вымирают?
• Они слишком часто сохраняются на диск
• Слишком много людей сидят на абстракциях,
а не пишут MR jobs
• Слишком плох MR для итерационных
вычислений
• Слишком долго MR был на коне
• И да, Google его больше не использует
Мы можем комбинировать подходы
для всех источников данных
val points = spark.sql("select latitude, longitude
from tweets")
val model = KMeans.train(points, 10)
WordCount на Scala + Spark
val conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
WordCount на Scala + Spark
val conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
val spark = new SparkContext(conf)
WordCount на Scala + Spark
val conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
val spark = new SparkContext(conf)
val file = spark.textFile("…")
res.saveAsTextFile("…");
WordCount на Scala + Spark
val conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
val spark = new SparkContext(conf)
val file = spark.textFile("…")
Тут как напишем сейчас MR!
res.saveAsTextFile("…");
WordCount на Scala + Spark
val conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
val spark = new SparkContext(conf)
val file = spark.textFile("…")
val res = file
.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_+_)
res.saveAsTextFile("…");
Основные компоненты
Типичный итерационный алгоритм
до и после..
10x – 100x
Spark – это не царская дорога к
большим данным
Статья о том, что меня раздражает в Spark
Контакты
• https://twitter.com/zaleslaw
• https://twitter.com/BigDataRussia
• http://vk.com/big_data_russia Big Data Russia
• http://vk.com/java_jvm

More Related Content

What's hot

Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Ontico
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)Ontico
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Oleg Tsarev
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comOntico
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)Ontico
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014Alex Chistyakov
 
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkDF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkMoscowDataFest
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовMax Lapshin
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 

What's hot (20)

Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkDF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 

Viewers also liked

JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...Alexey Zinoviev
 
Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Alexey Zinoviev
 
Big Data Developers Moscow Meetup 1 - sql on hadoop
Big Data Developers Moscow Meetup 1  - sql on hadoopBig Data Developers Moscow Meetup 1  - sql on hadoop
Big Data Developers Moscow Meetup 1 - sql on hadoopbddmoscow
 
Introductory Keynote at Hadoop Workshop by Ospcon (2014)
Introductory Keynote at Hadoop Workshop by Ospcon (2014)Introductory Keynote at Hadoop Workshop by Ospcon (2014)
Introductory Keynote at Hadoop Workshop by Ospcon (2014)Andrei Nikolaenko
 
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )Shamim bhuiyan
 
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...Spark Summit
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopYury Petrov
 
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)Spark Summit
 
JavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projectsJavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projectsAlexey Zinoviev
 
Community detection (Поиск сообществ в графах)
Community detection (Поиск сообществ в графах)Community detection (Поиск сообществ в графах)
Community detection (Поиск сообществ в графах)Kirill Rybachuk
 
GraphFrames: Graph Queries In Spark SQL
GraphFrames: Graph Queries In Spark SQLGraphFrames: Graph Queries In Spark SQL
GraphFrames: Graph Queries In Spark SQLSpark Summit
 
Joker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDBJoker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDBAlexey Zinoviev
 
Using spark for timeseries graph analytics
Using spark for timeseries graph analyticsUsing spark for timeseries graph analytics
Using spark for timeseries graph analyticsSigmoid
 
Building a Graph of all US Businesses Using Spark Technologies by Alexis Roos
Building a Graph of all US Businesses Using Spark Technologies by Alexis RoosBuilding a Graph of all US Businesses Using Spark Technologies by Alexis Roos
Building a Graph of all US Businesses Using Spark Technologies by Alexis RoosSpark Summit
 
Graphs are everywhere! Distributed graph computing with Spark GraphX
Graphs are everywhere! Distributed graph computing with Spark GraphXGraphs are everywhere! Distributed graph computing with Spark GraphX
Graphs are everywhere! Distributed graph computing with Spark GraphXAndrea Iacono
 
Hadoop Eagle - Real Time Monitoring Framework for eBay Hadoop
Hadoop Eagle - Real Time Monitoring Framework for eBay HadoopHadoop Eagle - Real Time Monitoring Framework for eBay Hadoop
Hadoop Eagle - Real Time Monitoring Framework for eBay HadoopDataWorks Summit
 

Viewers also liked (20)

JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
 
Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)
 
Big Data Developers Moscow Meetup 1 - sql on hadoop
Big Data Developers Moscow Meetup 1  - sql on hadoopBig Data Developers Moscow Meetup 1  - sql on hadoop
Big Data Developers Moscow Meetup 1 - sql on hadoop
 
Introductory Keynote at Hadoop Workshop by Ospcon (2014)
Introductory Keynote at Hadoop Workshop by Ospcon (2014)Introductory Keynote at Hadoop Workshop by Ospcon (2014)
Introductory Keynote at Hadoop Workshop by Ospcon (2014)
 
JBoss seam 2 part
JBoss seam 2 partJBoss seam 2 part
JBoss seam 2 part
 
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
 
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...
Building a Location Based Social Graph in Spark at InMobi-(Seinjuti Chatterje...
 
Apache spark
Apache sparkApache spark
Apache spark
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему Hadoop
 
A22 Introduction to DTrace by Kyle Hailey
A22 Introduction to DTrace by Kyle HaileyA22 Introduction to DTrace by Kyle Hailey
A22 Introduction to DTrace by Kyle Hailey
 
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)
Interactive Graph Analytics with Spark-(Daniel Darabos, Lynx Analytics)
 
JavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projectsJavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projects
 
Community detection (Поиск сообществ в графах)
Community detection (Поиск сообществ в графах)Community detection (Поиск сообществ в графах)
Community detection (Поиск сообществ в графах)
 
GraphFrames: Graph Queries In Spark SQL
GraphFrames: Graph Queries In Spark SQLGraphFrames: Graph Queries In Spark SQL
GraphFrames: Graph Queries In Spark SQL
 
Joker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDBJoker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDB
 
Using spark for timeseries graph analytics
Using spark for timeseries graph analyticsUsing spark for timeseries graph analytics
Using spark for timeseries graph analytics
 
Building a Graph of all US Businesses Using Spark Technologies by Alexis Roos
Building a Graph of all US Businesses Using Spark Technologies by Alexis RoosBuilding a Graph of all US Businesses Using Spark Technologies by Alexis Roos
Building a Graph of all US Businesses Using Spark Technologies by Alexis Roos
 
Graphs are everywhere! Distributed graph computing with Spark GraphX
Graphs are everywhere! Distributed graph computing with Spark GraphXGraphs are everywhere! Distributed graph computing with Spark GraphX
Graphs are everywhere! Distributed graph computing with Spark GraphX
 
Hadoop Eagle - Real Time Monitoring Framework for eBay Hadoop
Hadoop Eagle - Real Time Monitoring Framework for eBay HadoopHadoop Eagle - Real Time Monitoring Framework for eBay Hadoop
Hadoop Eagle - Real Time Monitoring Framework for eBay Hadoop
 
Hadoop Jungle
Hadoop JungleHadoop Jungle
Hadoop Jungle
 

Similar to Мастер-класс по BigData Tools для HappyDev'15

С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...it-people
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentationVlad Orlov
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache HadoopDotNetConf
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityBadoo Development
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"IT Event
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)Andrew Panfilov
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Rapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsRapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsAndrei Nikolaenko
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
presentation_r00t_conf
presentation_r00t_confpresentation_r00t_conf
presentation_r00t_confMax Glekov
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016rusbase
 
Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"zabej
 

Similar to Мастер-класс по BigData Tools для HappyDev'15 (20)

С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Rapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsRapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development Environments
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
presentation_r00t_conf
presentation_r00t_confpresentation_r00t_conf
presentation_r00t_conf
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
 
Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"
 

More from Alexey Zinoviev

Kafka pours and Spark resolves
Kafka pours and Spark resolvesKafka pours and Spark resolves
Kafka pours and Spark resolvesAlexey Zinoviev
 
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Alexey Zinoviev
 
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...Alexey Zinoviev
 
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)Alexey Zinoviev
 
Joker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data ScientistJoker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data ScientistAlexey Zinoviev
 
First steps in Data Mining Kindergarten
First steps in Data Mining KindergartenFirst steps in Data Mining Kindergarten
First steps in Data Mining KindergartenAlexey Zinoviev
 
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...Alexey Zinoviev
 
Android Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find youAndroid Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find youAlexey Zinoviev
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Alexey Zinoviev
 
Big data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsBig data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsAlexey Zinoviev
 
"Говнокод-шоу"
"Говнокод-шоу""Говнокод-шоу"
"Говнокод-шоу"Alexey Zinoviev
 
Алгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерностиАлгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерностиAlexey Zinoviev
 
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)Alexey Zinoviev
 
GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!Alexey Zinoviev
 
How to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSHow to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSAlexey Zinoviev
 
Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Alexey Zinoviev
 
MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?Alexey Zinoviev
 
Google I/O туда и обратно.
Google I/O туда и обратно.Google I/O туда и обратно.
Google I/O туда и обратно.Alexey Zinoviev
 
Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.Alexey Zinoviev
 
Google Docs. Zinoviev Alexey
Google Docs. Zinoviev AlexeyGoogle Docs. Zinoviev Alexey
Google Docs. Zinoviev AlexeyAlexey Zinoviev
 

More from Alexey Zinoviev (20)

Kafka pours and Spark resolves
Kafka pours and Spark resolvesKafka pours and Spark resolves
Kafka pours and Spark resolves
 
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
 
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
 
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
 
Joker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data ScientistJoker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data Scientist
 
First steps in Data Mining Kindergarten
First steps in Data Mining KindergartenFirst steps in Data Mining Kindergarten
First steps in Data Mining Kindergarten
 
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
 
Android Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find youAndroid Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find you
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
 
Big data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsBig data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphs
 
"Говнокод-шоу"
"Говнокод-шоу""Говнокод-шоу"
"Говнокод-шоу"
 
Алгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерностиАлгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерности
 
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
 
GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!
 
How to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSHow to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOS
 
Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012
 
MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?
 
Google I/O туда и обратно.
Google I/O туда и обратно.Google I/O туда и обратно.
Google I/O туда и обратно.
 
Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.
 
Google Docs. Zinoviev Alexey
Google Docs. Zinoviev AlexeyGoogle Docs. Zinoviev Alexey
Google Docs. Zinoviev Alexey
 

Мастер-класс по BigData Tools для HappyDev'15

  • 2.
  • 3. Контакты • https://twitter.com/zaleslaw • https://twitter.com/BigDataRussia • http://vk.com/big_data_russia Big Data Russia • http://vk.com/java_jvm
  • 5. И вот, что я скажу тебе, JavaScript
  • 6. И вот, что я скажу тебе, JavaScript
  • 7. Мне нравится, когда все на JVM крутится!
  • 8. Типичный BigData кластер • 450 машин • Master Nodes (24 ядра, 158 Gb RAM). • Data Nodes (24|32 ядра, 96|128 Gb RAM). • Средняя YARN Queue utilization 85% (по дням). • 12Pb – емкость хранения данных
  • 9. Когда мы говорим, что имеем дело с BigData решением • Когда перед глазами смесь архитектурных подходов, таких как Kappa, Lambda, Data Lake • Когда мы имеем дело со стеком технологий, таких как Hadoop, Kafka, Spark, Storm, Samza, HBase, Cassandra, Titan, GridGain • Когда анализ логов этих систем – задача не менее серьезного уровня
  • 10. ScaleUp vs ScaleOut 16 CPUs 16 CPUs 16 CPUsScale - Out16 CPUs 48 CPUsScale - Up16 CPUs
  • 11. Приходит время, данные в датацентры улетают… I 50GB 300GB 5TB
  • 12. Приходит время, данные в датацентры улетают…
  • 14. Мыть голову при помощи нового шампуня «Репликация»!
  • 15. Если вы слишком увлечётесь гонкой инструментов, то получится..
  • 16. Типичный многосервисный проект, где основной болью будет конфликт разных версий Real-Time Data-Marts Batch Data-Marts Relations Graph Ontology Metadata Search Index Events & Alarms Real-time Dashboarding Events & Alarms All Raw Data backup is stored here Real-time Data Ingestion Batch Data Ingestion Real-Time ETL & CEP Batch ETL & Raw Area Scheduler Internal External Social HDFS → CFS as an option Time-Series Data Titan & KairosDB store data in Cassandra Push Events & Alarms (Email, SNMP etc.)
  • 19. Пора дать определение! • Hadoop != MapReduce • Hadoop – это фреймворк
  • 20. Пора дать определение! • Hadoop != MapReduce • Hadoop – это фреймворк • Фреймворк для обработки больших массивов данных
  • 21. Пора дать определение! • Hadoop != MapReduce • Hadoop – это фреймворк • Фреймворк для обработки больших массивов данных • Который использует простые модели и парадигмы программирования
  • 22. Пора дать определение! • Hadoop != MapReduce • Hadoop – это фреймворк • Фреймворк для обработки больших массивов данных • Который использует простые модели и парадигмы программирования • Скрывая от нас всю самую сложную часть с параллелизацией, перемещением данных и
  • 23. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark)
  • 24. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark) • Абстрактные (Pig, Pipeline Spark)
  • 25. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark) • Абстрактные (Pig, Pipeline Spark) • SQL – подобные (Hive, Impala, Spark SQL)
  • 26. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark) • Абстрактные (Pig, Pipeline Spark) • SQL – подобные (Hive, Impala, Spark SQL) • Для обработки графов (Giraph, GraphX)
  • 27. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark) • Абстрактные (Pig, Pipeline Spark) • SQL – подобные (Hive, Impala, Spark SQL) • Для обработки графов (Giraph, GraphX) • Машинное обучение (MLlib, Mahout)
  • 28. Фреймворке в семействе Hadoop • Универсальные (MapReduce, Tez, Kudu, RDD in Spark) • Абстрактные (Pig, Pipeline Spark) • SQL – подобные (Hive, Impala, Spark SQL) • Для обработки графов (Giraph, GraphX) • Машинное обучение (MLlib, Mahout) • Stream (Spark Streaming, Storm)
  • 29.
  • 30.
  • 31. Важнейшие части «слона» • Hadoop Commons • Hadoop Clients • HDFS – Hadoop Distributed File System • Yarn – Yet Another Resource Negotiator • MapReduce
  • 33. Как начать? С выбора дистрибутива, конечно
  • 34. Важнейшие части «слона» • Apache Hadoop 2.7.1 • Hortonworks HDP 2.3 2.7.1 • Cloudera CDH 5.4.4 2.6.0 • MapR 5.0 2.7.0 • Pivotal HD 3.0 2.6.0 • other
  • 37. Русские ставят вручную на первый попавшийся сервер
  • 38. Нравится много писать в консоли? Big Data on your local machine : How to install Hadoop 2.6.0
  • 39. Режим установки local • Однопоточная Java • Легко дебажить даже из IDE • Репликации нет • HDFS учить не нужно • dfs.replication=“1”; • fs.defaultFS=“file:///”; fs.default.name=“file:///”; • mapreduce.framework.name=“local”
  • 40. Режим установки Pseudo-distributed • Все на одной ноде • Репликации нет • Каждому демону из Hadoop соответсвует thread из Java • Yarn выполняет свою работу
  • 41. Режим установки Fully-distributed • Репликация какая надо • Master/slave ноды • Yarn выполняет свою работу
  • 43. Best Practices • DataNodes, NodeManagers and RegionServers обычно разворачиваются исходя из стратегии DataLocality
  • 44. Best Practices • DataNodes, NodeManagers and RegionServers обычно разворачиваются исходя из стратегии DataLocality • Обычно каждый блок данных реплицируется минимум трижды в действительно разных местах
  • 45. Best Practices • DataNodes, NodeManagers and RegionServers обычно разворачиваются исходя из стратегии DataLocality • Обычно каждый блок данных реплицируется минимум трижды в действительно разных местах • Если можно, ставим балансировщик
  • 46. Best Practices • DataNodes, NodeManagers and RegionServers обычно разворачиваются исходя из стратегии DataLocality • Обычно каждый блок данных реплицируется минимум трижды в действительно разных местах • Если можно, ставим балансировщик • Изучаем особенности HDFS 
  • 47. Рекомендации по мощностям • 64GB RAM для NameNode позволяют адресоваться ~100M files в HDFS • 256 GB RAM для data nodes и интенсивными in-memory operations (например Spark executors, или in-memory DBs) • Минимум 8-16 cores CPUs • Минимум 4 дисков (для master nodes) и 6-12 дисков (для data nodes) для IO optimization; + 1 отдельный диск для OS
  • 48. HDFS
  • 49. Hadoop Distributed File System Hortonworks утверждает, что существуют кластера на 200 PB, 4500 машин, > 10^6 файлов и HDFS нормально так работает
  • 50. NameNode • Вообще это отдельные процессы, которые умеют жить как на одной, так и на разных машинах • В кластере только одна NameNode, но это не SPOF! • Есть StanbyNameNode, она страхует • Если NameNode недоступна, то недоступен и HDFS кластер
  • 51. NameNode рулит и разруливает!
  • 52. DataNode • DataNode может быть сколько угодно, чем больше, тем лучше • Можно убирать и добавлять их без особого ущерба • DataNode сама отвечает на запросы • И слушается NameNode, когда надо умереть, реплицировать что-то или удалить реплику
  • 53. Что нужно уметь и знать! • Перемещать данные между HDFS и обычной FS: hdfs fs -copyFromLocal ; -copyToLocal • Удалять/создавать директории • Управлять правами на файлы/папки • Диагностировать • Проверять наличие свободного пространства Все это при помощи команд, похожих на Linux
  • 54. Укротите демонов! • /logs • /logLevel • /stacks • /metrics • /metrics?format=json
  • 56. MapReduce на уровне языков Language Code sample Java 8 Integer totalAge = persons .stream() .map(Person::getAge) .reduce( 0, (a, b) -> a + b); Scala val totalAge = persons .map( (p: Person) => p.getAge ) .reduce( _ + _ ) Python totalAge = reduce( (lambda a, b: a + b), list( map(lambda p: p.getAge, persons) ) )
  • 62. Как запустить это хозяйство? • Сделать jar
  • 63. Как запустить это хозяйство? • Сделать jar • Запустить его на удаленной машине, где есть Hadoop
  • 64. Как запустить это хозяйство? • Сделать jar • Запустить его на удаленной машине, где есть Hadoop • hadoop jar your-jar.jar <packagename>.YourDriver – Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4
  • 65. Как запустить это хозяйство? • Сделать jar • Запустить его на удаленной машине, где есть Hadoop • hadoop jar your-jar.jar <packagename>.YourDriver – Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4 • В коде драйвера работай с этими константами
  • 66. Как запустить это хозяйство? • Сделать jar • Запустить его на удаленной машине, где есть Hadoop • hadoop jar your-jar.jar <packagename>.YourDriver – Ddir.input=/bla/bla/bla -Dmapred.reduce.tasks=4 • В коде драйвера работай с этими константами • String hdfsInputFileOrDirectory = configuration.get(“dir.input”);
  • 67. Запустили? Упало! Нужны тесты  Вот бы нам JUnit…
  • 68. Запустили? Упало! Нужны тесты  public class MRUnitHelloWorld { MapDriver<LongWritable, Text, Text, IntWritable> mapDriver; @Before public void setUp() { WordMapper mapper = new WordMapper(); mapDriver = new MapDriver<LongWritable, Text, Text, IntWritable>(); mapDriver.setMapper(mapper); } @Test public void testMapper() { mapDriver.withInput(new LongWritable(1), new Text("cat dog")); mapDriver.withOutput(new Text("cat"), new IntWritable(1)); mapDriver.withOutput(new Text("dog"), new IntWritable(1)); mapDriver.runTest(); } }
  • 71. Но всеми этим фронтами кто-то должен управлять, говорить кому когда что делать…
  • 72. Скелет Hadoop, который пришелся по вкусу всем!
  • 73. YARN
  • 74. MapReduce – это всего лишь одно приложение, которое приходит к всемогущему YARN за ресурсами для своих авантюр
  • 75. YARN общается с HDFS, чтобы задействовать DataLocality и оптимизировать свои ресурсы
  • 76. YARN управляет жизненным циклом, нудно, но все работает!
  • 77. Как извлекать факты для анализа данных из Hadoop?
  • 78. Свин и шмелле летят на помощь!
  • 79. Pig
  • 81. Pig Scripts -> MapReduce jobs
  • 82. Сделаем отчет на Pig dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int);
  • 83. Сделаем отчет на Pig dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int); logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int, success:boolean, geoIp:int, userAgent:int);
  • 84. Сделаем отчет на Pig dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int); logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int, success:boolean, geoIp:int, userAgent:int); by_user_success = GROUP logins BY (userid, success);
  • 85. Сделаем отчет на Pig dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int); logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int, success:boolean, geoIp:int, userAgent:int); by_user_success = GROUP logins BY (userid, success); logins_data = FOREACH by_user_success GENERATE FLATTEN (group) as (userid, success), COUNT(logins.ts) as login_amount;
  • 86. Сделаем отчет на Pig dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int); logins = LOAD '/ok/logins/*' AS (ts:chararray, userid:int, clientType:int, success:boolean, geoIp:int, userAgent:int); by_user_success = GROUP logins BY (userid, success); logins_data = FOREACH by_user_success GENERATE FLATTEN (group) as (userid, success), COUNT(logins.ts) as login_amount; DESCRIBE logins_data;
  • 87. Сделаем отчет на Pig /* amount of logins by regions */ dem_logins= JOIN dem BY id, logins_data BY userid;
  • 88. Сделаем отчет на Pig /* amount of logins by regions */ dem_logins= JOIN dem BY id, logins_data BY userid; by_region = GROUP dem_logins BY (region, gender, success);
  • 89. Сделаем отчет на Pig /* amount of logins by regions */ dem_logins= JOIN dem BY id, logins_data BY userid; by_region = GROUP dem_logins BY (region, gender, success); result = FOREACH by_region GENERATE FLATTEN (group) as (region, gender, success), SUM(dem_logins.login_amount) as login_amount;
  • 90. Сделаем отчет на Pig /* amount of logins by regions */ dem_logins= JOIN dem BY id, logins_data BY userid; by_region = GROUP dem_logins BY (region, gender, success); result = FOREACH by_region GENERATE FLATTEN (group) as (region, gender, success), SUM(dem_logins.login_amount) as login_amount; DESCRIBE result;
  • 91. Сделаем отчет на Pig /* amount of logins by regions */ dem_logins= JOIN dem BY id, logins_data BY userid; by_region = GROUP dem_logins BY (region, gender, success); result = FOREACH by_region GENERATE FLATTEN (group) as (region, gender, success), SUM(dem_logins.login_amount) as login_amount; DESCRIBE result; STORE result INTO '/ok/dem_logins_by_region' using PigStorage(',');
  • 92. Да по-любому надо тюнить! set default_parallel 64; set job.name Calculate_number_of_users; set mapred.child.java.opts -Xmx1024m dem = LOAD '/ok/demography/part-r-00000' AS (id:int, age:int, gender:int, region:int); ….
  • 93. Hive
  • 94. Как так? Снова SQL? Да, дружище, он никуда не уходил, стоял за дверью…
  • 95. Причины триумфа Hive • Иллюзия структуры • Единый язык для различных хранилищ • SQL всем знаком • Вполне реален ответ за небольшое время • MapReduce слишком сложен • Иллюзия JOINs
  • 96.
  • 97.
  • 98. JOINы превращаются.. в элегантные шорты
  • 99. Spark
  • 100. Почему мамонты вымирают? • Они слишком часто сохраняются на диск
  • 101. Почему мамонты вымирают? • Они слишком часто сохраняются на диск • Слишком много людей сидят на абстракциях, а не пишут MR jobs
  • 102. Почему мамонты вымирают? • Они слишком часто сохраняются на диск • Слишком много людей сидят на абстракциях, а не пишут MR jobs • Слишком плох MR для итерационных вычислений
  • 103. Почему мамонты вымирают? • Они слишком часто сохраняются на диск • Слишком много людей сидят на абстракциях, а не пишут MR jobs • Слишком плох MR для итерационных вычислений • Слишком долго MR был на коне
  • 104. Почему мамонты вымирают? • Они слишком часто сохраняются на диск • Слишком много людей сидят на абстракциях, а не пишут MR jobs • Слишком плох MR для итерационных вычислений • Слишком долго MR был на коне • И да, Google его больше не использует
  • 105. Мы можем комбинировать подходы для всех источников данных val points = spark.sql("select latitude, longitude from tweets") val model = KMeans.train(points, 10)
  • 106. WordCount на Scala + Spark val conf = new SparkConf() .setAppName(appName) .setMaster(master)
  • 107. WordCount на Scala + Spark val conf = new SparkConf() .setAppName(appName) .setMaster(master) val spark = new SparkContext(conf)
  • 108. WordCount на Scala + Spark val conf = new SparkConf() .setAppName(appName) .setMaster(master) val spark = new SparkContext(conf) val file = spark.textFile("…") res.saveAsTextFile("…");
  • 109. WordCount на Scala + Spark val conf = new SparkConf() .setAppName(appName) .setMaster(master) val spark = new SparkContext(conf) val file = spark.textFile("…") Тут как напишем сейчас MR! res.saveAsTextFile("…");
  • 110. WordCount на Scala + Spark val conf = new SparkConf() .setAppName(appName) .setMaster(master) val spark = new SparkContext(conf) val file = spark.textFile("…") val res = file .flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_+_) res.saveAsTextFile("…");
  • 113. Spark – это не царская дорога к большим данным Статья о том, что меня раздражает в Spark
  • 114. Контакты • https://twitter.com/zaleslaw • https://twitter.com/BigDataRussia • http://vk.com/big_data_russia Big Data Russia • http://vk.com/java_jvm