spark overview (18.06.2015)
TRANSCRIPT
1 © 2015 IBM Corporation
Всеволод Грабельников, in/vsgrab
Андрей Орлов, in/andreyorlov
3 © 2015 IBM Corporation
Предисловие
MPP
Spark
DBMS
Flink
Spark это shared nothing MPP движок реализующий
архитектурные концепций, которые были ранее реализованы в
параллельных СУБД (DB2 DPF, Teradata, Netezza и.т.п.)
DB2
DataFlow
Netezza
4 © 2015 IBM Corporation
Предисловие
Основная польза от Spark:– Точно так же, как в конце 70-х СУБД (и MPP СУБД)
облегчили написание, а главное выполнение запросов,
Spark позволяет разработчикам и аналитикам
упростить написание приложений для распределенной
обработки данных• Разработка приложений происходит на «более высоком»
уровне абстракции, благодаря RDD (Resilent Distributed Dataset)
• Система заботится о производительности Эффективно использует память (Bufferpools, Кеширование RDD в
памяти)
Управляет подчиненными процессами-агентами (subagents in
DBMS, Executors in Spark)
• Позволяет выполнять интерактивные запросы (spark-shell)
– Поддерживает различные нагрузки (SQL, Streaming,
Machine Learning, Работа с графами)
5 © 2015 IBM Corporation
Кое-что о развитии Spark
6 © 2015 IBM Corporation
Apache Spark – система для обработки больших данных– Скорость
• Использует распределенный in-memory
кэш
• Быстрее чем Map-Reduce
– Система общего назначения
• Позволяет обрабатывать разные задачи
• SQL, streaming (потоки),
сложная аналитика, графы
– Гибче и проще чем Map Reduce
• Spark написан на Scala
• Scala, Python и Java APIs
• Scala и Python интерактивные оболочки
• Работает на Hadoop, Mesos, автономно и
в облаке
Логистическая регрессия на Hadoop и Spark
from http://spark.apache.org
7 © 2015 IBM Corporation
Коротко об истории Spark
2002 – MapReduce @ Google
2004 – MapReduce paper
2006 – Hadoop @ Yahoo
2008 – Hadoop Summit
2010 – Spark paper
2014 – Apache Spark top-level
2014 – 1.2.0 release in December
2015 – 1.3.0 release in March
Spark популярен!!!
Самый активный проект среди
Hadoop - экосистемы
Один из 3 наиболее активных
проектов Apache
Databricks - компания,
основанная создателями
Spark работавшими в UC
Berkeley AMPLab
Activity for 6 months in 2014
(from Matei Zaharia – 2014 Spark Summit)
8 © 2015 IBM Corporation
Spark в экосистеме Hadoop
На текущий момент SPARK - подсистема, которая интегрируется
с YARN (управляет ресурсами кластера) вместе с другими
подсистемами
YARN
HDFS
Map/
Reduce 2
Hive Pig SparkHbase BigSQL Impala
Slider Llama
9 © 2015 IBM Corporation
Spark в экосистеме Hadoop
Spark достаточно универсален и гибок:– Работает поверх YARN / HDFS, автономно и с MESOS
– Способен обрабатывать разные задачи:SQL, streaming (потоки),
машинное обучение и сложная аналитика, графы
10 © 2015 IBM Corporation
Spark: немного деталей
12 © 2015 IBM Corporation
Схема работы Spark
SparkContext
Driver ProgramCluster Manager
Worker Node
Executor
Task Task
Cache
Worker Node
Executor
Task Task
Cache
App
Каждое приложение на Spark выполняется как набор процессов,
координируемый Spark context object (driver program)– Spark context соединяется с Cluster Manager (автономным, Mesos/Yarn)
– Spark context получает executor (JVM instance)
на рабочих узлах (worker node)
– Spark context посылает задания для executor’ов
13 © 2015 IBM Corporation
RDDs неизменяемы– Модификации создают новые RDDs
Содержит ссылки на партиционированные объекты
Каждая партиция (=секция) - подмножество общих данных
Секции назначаются
узлам в кластере
Секции находятся в
памяти (по-умолчанию)
RDDs помнят свою
«родословную»
Resilient Distributed Dataset (RDD)
Partition
Memory
partition
Partition
Partition
Partition
Memory
partition
Memory
partition
Memory
partition
RDD
Array
14 © 2015 IBM Corporation
Spark Programming Model
Операции с RDDs (datasets)– Transformation
– Action
Трансформации используют lazy evaluation– Выполняется только в тот момент, когда операция с типом Action в этом
нуждается
Приложение состоит из ориентированного ациклического графа
(directed acyclic graph = DAG)– Каждый action превращается в отдельный JOB
– Параллелизм определяется числом RDD секций
RDD1 RDD2 RDD3
Act1
Act2
Job-1
Job-2
15 © 2015 IBM Corporation
Spark Shells Большим преимуществом Spark является возможность
интерактивного анализа с помощью специальных оболочек.– Аналог в СУБД: SQL*Plus (Oracle), sqlcmd (MS SQL), nzsql (Netezza).
– Spark поддерживает интерактивные оболочки Scala и Python shell
<Scala
Python>
16 © 2015 IBM Corporation
Code Execution (1)
// Create RDD
val quotes =
sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val danQuotes = quotes.filter(_.startsWith("DAN"))
val danSpark = danQuotes.map(_.split(" ")).map(x =>
x(1))
// Action
danSpark.filter(_.contains("Spark")).count()
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
File: sparkQuotes.txt
‘spark-shell’ provides Spark context as ‘sc’
17 © 2015 IBM Corporation
Code Execution (2)
// Create RDD
val quotes =
sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val danQuotes = quotes.filter(_.startsWith("DAN"))
val danSpark = danQuotes.map(_.split(" ")).map(x =>
x(1))
// Action
danSpark.filter(_.contains("Spark")).count()
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
File: sparkQuotes.txt RDD: quotes
18 © 2015 IBM Corporation
Code Execution (3)
// Create RDD
val quotes =
sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val danQuotes = quotes.filter(_.startsWith("DAN"))
val danSpark = danQuotes.map(_.split(" ")).map(x =>
x(1))
// Action
danSpark.filter(_.contains("Spark")).count()
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
File: sparkQuotes.txt RDD: quotes RDD: danQuotes
19 © 2015 IBM Corporation
Code Execution (4)
// Create RDD
val quotes =
sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val danQuotes = quotes.filter(_.startsWith("DAN"))
val danSpark = danQuotes.map(_.split(" ")).map(x =>
x(1))
// Action
danSpark.filter(_.contains("Spark")).count()
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
File: sparkQuotes.txt RDD: quotes RDD: danQuotes RDD: danSpark
20 © 2015 IBM Corporation
Code Execution (5)
// Create RDD
val quotes =
sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val danQuotes = quotes.filter(_.startsWith("DAN"))
val danSpark = danQuotes.map(_.split(" ")).map(x =>
x(1))
// Action
danSpark.filter(_.contains("Spark")).count()
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
File: sparkQuotes.txt
HadoopRDD
DAN Spark is cool
BOB Spark is fun
BRIAN Spark is great
DAN Scala is awesome
BOB Scala is flexible
RDD: quotes
DAN Spark is cool
DAN Scala is awesome
RDD: danQuotes
Spark
Scala
RDD: danSpark
1
21 © 2015 IBM Corporation
Direct Acyclic Graph (DAG)
Посмотрим «план запроса»
Или перепишем в 1 строку
scala> danSpark.toDebugString
res1: String =
(2) MappedRDD[4] at map at <console>:16
| MappedRDD[3] at map at <console>:16
| FilteredRDD[2] at filter at <console>:14
| hdfs:/sparkdata/sparkQuotes.txt MappedRDD[1] at textFile at <console>:12
| hdfs:/sparkdata/sparkQuotes.txt HadoopRDD[0] at textFile at <console>:12
val danSpark = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt").
filter(_.startsWith("DAN")).
map(_.split(" ")).
map(x => x(1)).
.filter(_.contains("Spark"))
danSpark.count()
22 © 2015 IBM Corporation
23 © 2015 IBM Corporation
SparkSQL
IBM Spark © 2015 IBM Corporation
IBM Spark © 2015 IBM Corporation
IBM анонсирует свою стратегию
по интеграции приложений и
улучшению Apache® Spark™
Наиболее важный Open Source проект с точки зрения IBM
IBM Spark © 2015 IBM Corporation
Передача в Open Source SystemML
Обучение 1 Миллион Data Professionals
Открываем Spark Technology Center ~ 300 разработчиков
Основатель и спонсор AMPLab
Коммиты в Ядро проекта
Анонс IBM
IBM Spark © 2015 IBM Corporation
SystemML – набор параллельных алгоритмов
Позволяет создавать свои собственные алгоритмы
Помогает data scientist сосредоточиться на написании алгоритма, а
не его имплементации
Ускоряет достижение результата для аналитиков
Передача SystemML в open source
IBM Spark © 2015 IBM Corporation
Big Data University MOOC
Spark Fundamentals I and II
Advanced Spark Development series
Foundational Methodology for Data Science
Партнерство с Databricks, AMPLab, DataCamp и MetiStream
Курсы для обучения Data
Scientists и Data Engineers
IBM Spark © 2015 IBM Corporation
Помощь заказчикам в адаптации технологий на основе Spark
Коммиты в проект
Создание обучающих курсов
Развитиеинтеграции продуктов IBM со Spark
Центр технологий Spark
IBM Spark © 2015 IBM Corporation
Экосистема партнеров
IBM Spark © 2015 IBM Corporation
Spark и платформа для аналитики IBM
Spark
Discovery & Exploration
ContentAnalytics
Prescriptive Analytics
Streaming Analytics
Business Intelligence & Predictive Analytics
DataManagement
ContentManagement
HadoopSystems
DataWarehousing
Information Integration & Governance
Apache Spark as a Service on IBM Bluemix (beta)
IBM Open Platform with Apache Hadoop может
использовать Spark как альтернативу MapReduce;
поддерживает все компоненты Apache Spark
Модули IBM BigInsights будут поддерживать Spark
Интеграция Spark моделей в IBM Streams
Java Code написанный для Spark работает в IBM Streams
Spark & IBM Streams могут работать на 1 кластере
Hadoop Systems
Streaming Analytics
IBM Spark © 2015 IBM Corporation
Сейчас
IBM Open Platform with Apache
Hadoop
IBM InfoSphere Streams
IBM Platform Computing
Использование Spark в IBM
Планы на текущий год
Apache Spark as a Service on IBM Bluemix (in beta)
IBM Watson Analytics
SPSS Modeler & Analytics Server
IBM DataWorks
IBM PureData Systems (Netezza) with Fluid Query
IBM Commerce
IBM Spark © 2015 IBM Corporation
Discover Сайт IBM Big Data Hub хаб новостей про большие данные
Learn Курс “Spark Fundamentals” в Big Data University
Try Spark Бета-программа Spark в облаке IBM Bluemix www.spark.tc/beta
Try Spark with Hadoop Скачать Hadoop IBM.com/Hadoop
Engage IBM Spark Technology Center www.spark.tc
Converse #SparkInsight
Напоследок: