SlideShare a Scribd company logo
www.provectus.com
A presentation of expertise we boast and services we render for
partners across the board, around the globe.
© Provectus, Inc.
О спикере
www.provectus.com
Леонид Блохин
• Big Data Engineer
Provectus
PHP Java .NET Java Script Cloud Services
iOS Android Ruby J2EE QA
Provectus – международная R&D компания, предоставляющая полный комплекс услуг по разработке
программного обеспечения для корпоративного сегмента, мобильных платформ и WEB по всему
миру.
Apache Spark Job
www.provectus.com
“Магия вуду” над Spark Job
• Что такое Apache Spark
• Как устроены Spark Job
• Почему падают Spark Job
• Кто виноват, и что делать
Apache Spark Job
www.provectus.com
Что такое Apache Spark
• Open Source Framework для работы с данными
• Альтернатива Map Reduce, работает с HDFS
• Позволяет производить вычисления распределенно
• Есть API на Scala, Python и Java
• Поддерживает несколько режимов управления кластера Mesos, Yarn,
Standalone (есть в Amazon EC2)
• Поддерживает Streaming
Apache Spark Job
www.provectus.com
Основные понятия
• RDD (Resilent Distributed Dataset)
• Driver Program , Spark Context
• Worker Node, Executor, Task
• Job, Stage
Apache Spark Job
www.provectus.com
RDD
• Распределенная, неизменяемая коллекция элементов, доступная для
параллельной обработки. Она знает, как вычислить саму себя в случае сбоя, а
также хранит ссылки на своих предков.
RDD1 RDD2 RDD3
Преобразование Преобразование
Apache Spark Job
www.provectus.com
Как работает кластер
Apache Spark Job
www.provectus.com
Spark Job
• Job - Параллельные вычисления состоящие из
нескольких task созданных на Spark action.
Разбивается на зависимые друг от друга
последовательные подзадачи (Stage)
Apache Spark Job
www.provectus.com
Запускаем Job
val SparkConf = new SpakConf().SetMaser(“mesos://HOST:PORT”).SetAppName(“myApp”)
val sc = new SparkContext(SparkConf)
val rdd1 = sc.textFile(“hdfs://...”).flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a +
b)
textFile flatMap map reduceByKey
Apache Spark Job
www.provectus.com
Запускаем Job
val rdd2 = sc.hadoopFile(“hdfs://...”).groupByKey().map(...)
hadoopFile groupByKey map
Apache Spark Job
www.provectus.com
Запускаем Job
val rdd3 = rdd1.join(rdd2).map(...)
join map
Apache Spark Job
www.provectus.com
Запускаем Job
rdd3.collect()
textFile flatMap map
reduceB
yKey
hadoopFile groupByKey map
join map
Worker Node
Apache Spark Job
www.provectus.com
Что то пошло не так
spark.task.maxFailures default 4
Task Task
Worker node
Executer
Task Task
Worker node
Executer
Task Task
Worker node
Executer
Driver Programm
Spark Context
Cluster Manager
Apache Spark Job
www.provectus.com
Как избежать падения Executor
• Основные причины падения – не хватило буфера для сериализации, воркеру не хватило памяти.
• --conf executor-memory память executor`ов на нодах
• --conf spark.kryoserializer.buffer.mb KryoSerializer позволяет экономить память, он сжимает объекты, по дефолту
используется Java serialization
• --conf spark.storage.memoryFraction кэширование
• --conf spark.default.parallelism Default количество партиций в RDD хах
Apache Spark Job
www.provectus.com
Падение Master Driver
• Операции в Spark: Transformations, Actions, Persistense
• .collect() весь результат собирается в память в драйвере!
Apache Spark Job
www.provectus.com
Как избежать падения мастера
• toLocalIterator() собирает в одном узле данные
• --conf spark.driver.maxResultSize Макимальный размер результата в мастере
• --conf spark.driver.memory Память мастер драйвера
• --conf spark.default.parallelism Default количество партиций в RDD хах
Apache Spark Job
www.provectus.com
rdd = sc.parallelize(range(100), 10)
def make_part_filter(index):
def part_filter(split_index, iterator):
if split_index == index:
for el in iterator:
yield el
return part_filter
for part_id in range(rdd.getNumPartitions()):
part_rdd = rdd.mapPartitionsWithIndex(make_part_filter(part_id), True)
data_from_part_rdd = part_rdd.collect()
print "partition id: %s elements: %s" % (part_id, data_from_part_rdd)
out:
partition id: 0 elements: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
partition id: 1 elements: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
partition id: 2 elements: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
partition id: 3 elements: [30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
partition id: 4 elements: [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
partition id: 5 elements: [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
partition id: 6 elements: [60, 61, 62, 63, 64, 65, 66, 67, 68, 69]
partition id: 7 elements: [70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
partition id: 8 elements: [80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
partition id: 9 elements: [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
Партицирование результатов
Благодарю за внимание!
www.provectus.com
Задавайте ваши вопросы
Контакты
Леонид Блохин
Skype:
Email: lblokhin@provectus.com
www.provectus.com

More Related Content

What's hot

Sequel — механизм доступа к БД, написанный на Ruby
Sequel — механизм доступа к БД, написанный на RubySequel — механизм доступа к БД, написанный на Ruby
Sequel — механизм доступа к БД, написанный на Ruby
Alexey Nayden
 
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
MoscowJS
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
Ontico
 
Devcamp nodejs-2010
Devcamp nodejs-2010Devcamp nodejs-2010
Devcamp nodejs-2010
Antono Vasiljev
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
FDConf
 
Что API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон КорзуновЧто API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон Корзунов
Yandex
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
Roman Brovko
 
Spark: нетипичные примеры использования
Spark:  нетипичные примеры использованияSpark:  нетипичные примеры использования
Spark: нетипичные примеры использования
faithlessfriend
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
Ilya Chesnokov
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
Roman Brovko
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreData
Dmitriy Kuragin
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
Andrey Gershun
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Yandex
 

What's hot (14)

Sequel — механизм доступа к БД, написанный на Ruby
Sequel — механизм доступа к БД, написанный на RubySequel — механизм доступа к БД, написанный на Ruby
Sequel — механизм доступа к БД, написанный на Ruby
 
Chef
ChefChef
Chef
 
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
"Alasql.js — база данных SQL на JavaScript" — Андрей Гершун, MoscowJS 18
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
 
Devcamp nodejs-2010
Devcamp nodejs-2010Devcamp nodejs-2010
Devcamp nodejs-2010
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
Что API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон КорзуновЧто API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон Корзунов
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Spark: нетипичные примеры использования
Spark:  нетипичные примеры использованияSpark:  нетипичные примеры использования
Spark: нетипичные примеры использования
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreData
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
 

Viewers also liked

Альмеев Азат - создание коллажа из фотографий в iOS приложении
Альмеев Азат - создание коллажа из фотографий в iOS приложенииАльмеев Азат - создание коллажа из фотографий в iOS приложении
Альмеев Азат - создание коллажа из фотографий в iOS приложении
Provectus
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
 
Равиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processingРавиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processing
Provectus
 
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
Provectus
 
Практическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере RubyПрактическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере Ruby
Provectus
 
Backbone js for expert fridays.pptx
Backbone js for  expert fridays.pptxBackbone js for  expert fridays.pptx
Backbone js for expert fridays.pptx
Provectus
 
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
Provectus
 
Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0
Provectus
 
Данис Тазетдинов - Зачем нужны-Apple-watch
Данис Тазетдинов - Зачем нужны-Apple-watchДанис Тазетдинов - Зачем нужны-Apple-watch
Данис Тазетдинов - Зачем нужны-Apple-watch
Provectus
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
Provectus
 
Yulian Georgiev (Zebrito.com): "Mobile Game Design"
Yulian Georgiev (Zebrito.com): "Mobile Game Design"Yulian Georgiev (Zebrito.com): "Mobile Game Design"
Yulian Georgiev (Zebrito.com): "Mobile Game Design"
Provectus
 
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Provectus
 
Применение нейронных сетей в NLP
Применение нейронных сетей в NLPПрименение нейронных сетей в NLP
Применение нейронных сетей в NLP
Provectus
 
How to (and should you?) turn your app idea into a business
How to (and should you?) turn your app idea into a businessHow to (and should you?) turn your app idea into a business
How to (and should you?) turn your app idea into a business
Provectus
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Provectus
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
Provectus
 
Expert Fridays - Сергей Укустов: "CRDT"
Expert Fridays - Сергей Укустов: "CRDT"Expert Fridays - Сергей Укустов: "CRDT"
Expert Fridays - Сергей Укустов: "CRDT"
Provectus
 
Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI” Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI”
Provectus
 

Viewers also liked (18)

Альмеев Азат - создание коллажа из фотографий в iOS приложении
Альмеев Азат - создание коллажа из фотографий в iOS приложенииАльмеев Азат - создание коллажа из фотографий в iOS приложении
Альмеев Азат - создание коллажа из фотографий в iOS приложении
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 
Равиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processingРавиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processing
 
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
QA MeetUp - Евгений Сабиров: "Рай тестировщика - миф или реальность?"
 
Практическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере RubyПрактическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере Ruby
 
Backbone js for expert fridays.pptx
Backbone js for  expert fridays.pptxBackbone js for  expert fridays.pptx
Backbone js for expert fridays.pptx
 
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
QA MeetUp - Эмиль Хуснетдинов: "Управление качеством проекта"
 
Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0
 
Данис Тазетдинов - Зачем нужны-Apple-watch
Данис Тазетдинов - Зачем нужны-Apple-watchДанис Тазетдинов - Зачем нужны-Apple-watch
Данис Тазетдинов - Зачем нужны-Apple-watch
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
 
Yulian Georgiev (Zebrito.com): "Mobile Game Design"
Yulian Georgiev (Zebrito.com): "Mobile Game Design"Yulian Georgiev (Zebrito.com): "Mobile Game Design"
Yulian Georgiev (Zebrito.com): "Mobile Game Design"
 
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
 
Применение нейронных сетей в NLP
Применение нейронных сетей в NLPПрименение нейронных сетей в NLP
Применение нейронных сетей в NLP
 
How to (and should you?) turn your app idea into a business
How to (and should you?) turn your app idea into a businessHow to (and should you?) turn your app idea into a business
How to (and should you?) turn your app idea into a business
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
 
Expert Fridays - Сергей Укустов: "CRDT"
Expert Fridays - Сергей Укустов: "CRDT"Expert Fridays - Сергей Укустов: "CRDT"
Expert Fridays - Сергей Укустов: "CRDT"
 
Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI” Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI”
 

Similar to Expert Fridays Spark Job

Scala for android
Scala for androidScala for android
Scala for android
Alexander Rusin
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
Roman Dvornov
 
Spark overview (18.06.2015)
Spark overview (18.06.2015)Spark overview (18.06.2015)
Spark overview (18.06.2015)
bddmoscow
 
Apache Spark — Егор Пахомов
Apache Spark — Егор ПахомовApache Spark — Егор Пахомов
Apache Spark — Егор Пахомов
Yandex
 
Архитектура Apache Spark
Архитектура Apache SparkАрхитектура Apache Spark
Архитектура Apache Spark
RamblerML
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
Anton Kirillov
 
Apache spark
Apache sparkApache spark
Apache spark
Anton Anokhin
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
Roman Brovko
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
Омские ИТ-субботники
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
Alexander Makarov
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Magneta AI
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
Sergey Nemchinsky
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Dmytro Mindra
 
Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)
lectureswww lectureswww
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBStepan Stolyarov
 

Similar to Expert Fridays Spark Job (20)

Scala for android
Scala for androidScala for android
Scala for android
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Spark overview (18.06.2015)
Spark overview (18.06.2015)Spark overview (18.06.2015)
Spark overview (18.06.2015)
 
Apache Spark — Егор Пахомов
Apache Spark — Егор ПахомовApache Spark — Егор Пахомов
Apache Spark — Егор Пахомов
 
Архитектура Apache Spark
Архитектура Apache SparkАрхитектура Apache Spark
Архитектура Apache Spark
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Apache spark
Apache sparkApache spark
Apache spark
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012
 
Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDB
 

More from Provectus

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
Provectus
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Provectus
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
Provectus
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
Provectus
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
Provectus
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
Provectus
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Provectus
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Provectus
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
Provectus
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
Provectus
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
Provectus
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
Provectus
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
Provectus
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
Provectus
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
Provectus
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
Provectus
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
Provectus
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
Provectus
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
Provectus
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
Provectus
 

More from Provectus (20)

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
 

Expert Fridays Spark Job

  • 1. www.provectus.com A presentation of expertise we boast and services we render for partners across the board, around the globe. © Provectus, Inc.
  • 3. Provectus PHP Java .NET Java Script Cloud Services iOS Android Ruby J2EE QA Provectus – международная R&D компания, предоставляющая полный комплекс услуг по разработке программного обеспечения для корпоративного сегмента, мобильных платформ и WEB по всему миру.
  • 4. Apache Spark Job www.provectus.com “Магия вуду” над Spark Job • Что такое Apache Spark • Как устроены Spark Job • Почему падают Spark Job • Кто виноват, и что делать
  • 5. Apache Spark Job www.provectus.com Что такое Apache Spark • Open Source Framework для работы с данными • Альтернатива Map Reduce, работает с HDFS • Позволяет производить вычисления распределенно • Есть API на Scala, Python и Java • Поддерживает несколько режимов управления кластера Mesos, Yarn, Standalone (есть в Amazon EC2) • Поддерживает Streaming
  • 6. Apache Spark Job www.provectus.com Основные понятия • RDD (Resilent Distributed Dataset) • Driver Program , Spark Context • Worker Node, Executor, Task • Job, Stage
  • 7. Apache Spark Job www.provectus.com RDD • Распределенная, неизменяемая коллекция элементов, доступная для параллельной обработки. Она знает, как вычислить саму себя в случае сбоя, а также хранит ссылки на своих предков. RDD1 RDD2 RDD3 Преобразование Преобразование
  • 8. Apache Spark Job www.provectus.com Как работает кластер
  • 9. Apache Spark Job www.provectus.com Spark Job • Job - Параллельные вычисления состоящие из нескольких task созданных на Spark action. Разбивается на зависимые друг от друга последовательные подзадачи (Stage)
  • 10. Apache Spark Job www.provectus.com Запускаем Job val SparkConf = new SpakConf().SetMaser(“mesos://HOST:PORT”).SetAppName(“myApp”) val sc = new SparkContext(SparkConf) val rdd1 = sc.textFile(“hdfs://...”).flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b) textFile flatMap map reduceByKey
  • 11. Apache Spark Job www.provectus.com Запускаем Job val rdd2 = sc.hadoopFile(“hdfs://...”).groupByKey().map(...) hadoopFile groupByKey map
  • 12. Apache Spark Job www.provectus.com Запускаем Job val rdd3 = rdd1.join(rdd2).map(...) join map
  • 13. Apache Spark Job www.provectus.com Запускаем Job rdd3.collect() textFile flatMap map reduceB yKey hadoopFile groupByKey map join map
  • 14. Worker Node Apache Spark Job www.provectus.com Что то пошло не так spark.task.maxFailures default 4 Task Task Worker node Executer Task Task Worker node Executer Task Task Worker node Executer Driver Programm Spark Context Cluster Manager
  • 15. Apache Spark Job www.provectus.com Как избежать падения Executor • Основные причины падения – не хватило буфера для сериализации, воркеру не хватило памяти. • --conf executor-memory память executor`ов на нодах • --conf spark.kryoserializer.buffer.mb KryoSerializer позволяет экономить память, он сжимает объекты, по дефолту используется Java serialization • --conf spark.storage.memoryFraction кэширование • --conf spark.default.parallelism Default количество партиций в RDD хах
  • 16. Apache Spark Job www.provectus.com Падение Master Driver • Операции в Spark: Transformations, Actions, Persistense • .collect() весь результат собирается в память в драйвере!
  • 17. Apache Spark Job www.provectus.com Как избежать падения мастера • toLocalIterator() собирает в одном узле данные • --conf spark.driver.maxResultSize Макимальный размер результата в мастере • --conf spark.driver.memory Память мастер драйвера • --conf spark.default.parallelism Default количество партиций в RDD хах
  • 18. Apache Spark Job www.provectus.com rdd = sc.parallelize(range(100), 10) def make_part_filter(index): def part_filter(split_index, iterator): if split_index == index: for el in iterator: yield el return part_filter for part_id in range(rdd.getNumPartitions()): part_rdd = rdd.mapPartitionsWithIndex(make_part_filter(part_id), True) data_from_part_rdd = part_rdd.collect() print "partition id: %s elements: %s" % (part_id, data_from_part_rdd) out: partition id: 0 elements: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] partition id: 1 elements: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] partition id: 2 elements: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29] partition id: 3 elements: [30, 31, 32, 33, 34, 35, 36, 37, 38, 39] partition id: 4 elements: [40, 41, 42, 43, 44, 45, 46, 47, 48, 49] partition id: 5 elements: [50, 51, 52, 53, 54, 55, 56, 57, 58, 59] partition id: 6 elements: [60, 61, 62, 63, 64, 65, 66, 67, 68, 69] partition id: 7 elements: [70, 71, 72, 73, 74, 75, 76, 77, 78, 79] partition id: 8 elements: [80, 81, 82, 83, 84, 85, 86, 87, 88, 89] partition id: 9 elements: [90, 91, 92, 93, 94, 95, 96, 97, 98, 99] Партицирование результатов