spark overview (18.06.2015)

32
1 © 2015 IBM Corporation Всеволод Грабельников, in/vsgrab Андрей Орлов, in/andreyorlov

Upload: bddmoscow

Post on 12-Aug-2015

170 views

Category:

Science


0 download

TRANSCRIPT

Page 1: Spark overview (18.06.2015)

1 © 2015 IBM Corporation

Всеволод Грабельников, in/vsgrab

Андрей Орлов, in/andreyorlov

Page 2: Spark overview (18.06.2015)

© 2015 IBM Corporation

Введение в Apache Spark

Всеволод Грабельников ([email protected])

Page 3: Spark overview (18.06.2015)

3 © 2015 IBM Corporation

Предисловие

MPP

Spark

DBMS

Flink

Spark это shared nothing MPP движок реализующий

архитектурные концепций, которые были ранее реализованы в

параллельных СУБД (DB2 DPF, Teradata, Netezza и.т.п.)

DB2

DataFlow

Netezza

Page 4: Spark overview (18.06.2015)

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, Работа с графами)

Page 5: Spark overview (18.06.2015)

5 © 2015 IBM Corporation

Кое-что о развитии Spark

Page 6: Spark overview (18.06.2015)

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

Page 7: Spark overview (18.06.2015)

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)

Page 8: Spark overview (18.06.2015)

8 © 2015 IBM Corporation

Spark в экосистеме Hadoop

На текущий момент SPARK - подсистема, которая интегрируется

с YARN (управляет ресурсами кластера) вместе с другими

подсистемами

YARN

HDFS

Map/

Reduce 2

Hive Pig SparkHbase BigSQL Impala

Slider Llama

Page 9: Spark overview (18.06.2015)

9 © 2015 IBM Corporation

Spark в экосистеме Hadoop

Spark достаточно универсален и гибок:– Работает поверх YARN / HDFS, автономно и с MESOS

– Способен обрабатывать разные задачи:SQL, streaming (потоки),

машинное обучение и сложная аналитика, графы

Page 10: Spark overview (18.06.2015)

10 © 2015 IBM Corporation

Spark: немного деталей

Page 11: Spark overview (18.06.2015)

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’ов

Page 12: Spark overview (18.06.2015)

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

Page 13: Spark overview (18.06.2015)

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

Page 14: Spark overview (18.06.2015)

15 © 2015 IBM Corporation

Spark Shells Большим преимуществом Spark является возможность

интерактивного анализа с помощью специальных оболочек.– Аналог в СУБД: SQL*Plus (Oracle), sqlcmd (MS SQL), nzsql (Netezza).

– Spark поддерживает интерактивные оболочки Scala и Python shell

<Scala

Python>

Page 15: Spark overview (18.06.2015)

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’

Page 16: Spark overview (18.06.2015)

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

Page 17: Spark overview (18.06.2015)

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

Page 18: Spark overview (18.06.2015)

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

Page 19: Spark overview (18.06.2015)

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

Page 20: Spark overview (18.06.2015)

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()

Page 21: Spark overview (18.06.2015)

22 © 2015 IBM Corporation

Page 22: Spark overview (18.06.2015)

23 © 2015 IBM Corporation

SparkSQL

Page 23: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

Page 24: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

IBM анонсирует свою стратегию

по интеграции приложений и

улучшению Apache® Spark™

Наиболее важный Open Source проект с точки зрения IBM

Page 25: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

Передача в Open Source SystemML

Обучение 1 Миллион Data Professionals

Открываем Spark Technology Center ~ 300 разработчиков

Основатель и спонсор AMPLab

Коммиты в Ядро проекта

Анонс IBM

Page 26: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

SystemML – набор параллельных алгоритмов

Позволяет создавать свои собственные алгоритмы

Помогает data scientist сосредоточиться на написании алгоритма, а

не его имплементации

Ускоряет достижение результата для аналитиков

Передача SystemML в open source

Page 27: Spark overview (18.06.2015)

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

Page 28: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

Помощь заказчикам в адаптации технологий на основе Spark

Коммиты в проект

Создание обучающих курсов

Развитиеинтеграции продуктов IBM со Spark

Центр технологий Spark

Page 29: Spark overview (18.06.2015)

IBM Spark © 2015 IBM Corporation

Экосистема партнеров

Page 30: Spark overview (18.06.2015)

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

Page 31: Spark overview (18.06.2015)

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

Page 32: Spark overview (18.06.2015)

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

Напоследок: