wprowadzenie do apache spark · 2017-01-20 · wprowadzenie do apache spark jakub toczek. epoka...

35
Wprowadzenie do Apache Spark Jakub Toczek

Upload: others

Post on 22-May-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Wprowadzenie do Apache Spark

Jakub Toczek

Page 2: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Epoka informacyjna

Page 3: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

MapReduce

Page 4: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

MapReduce

Page 5: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Apache Hadoop● narodziny w 2006 roku z Apache Nutch● open source● składa się z systemu plików HDFS i silnika MapReduce● napisany w Javie i w C

Page 6: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

HDFS

Page 7: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Apache Spark - czym jest?Ogólny silnik do przetwarzania Big Data. Open source.

Page 8: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark - motywacja● Trudność w programowaniu w Hadoopie (MapReduce)● Nadmierne wykorzystywanie HDD przez Hadoopa● Potrzeba frameworku bardziej przyjaznego machine-learning

Page 9: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Trudność w programowaniu

Page 10: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Trudność w programowaniuPython: Scala:

Java:

Page 11: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark - motywacja● Trudność w programowaniu w Hadoopie (MapReduce)● Nadmierne wykorzystywanie HDD przez Hadoopa● Potrzeba frameworku bardziej przyjaznego machine-learning

Page 12: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Historia2009 - wychodzi pierwsza wersja Spark’a (część doktoratu Matei Zaharia z UC Berkeley AMPLab)

2010 - upublicznienie kodu źródłowego (licencja BSD)

2013 - Spark staje się częścią Apache Software Foundation i zmienia licencję na Apache 2.0

listopad 2014 - Apache Spark pobija rekord w szybkości sortowania (100 TB danych w 23 min, wcześniejszy rekord: Hadoop i 72 min używając 10x więcej maszyn)

Page 13: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark i optymalizacjaSpark oferuje nam:

● lazy computation (optymalizacja przed wykonywaniem)● jak najmniejsza ilość skanowań HDD (jak się da to tylko na początku, reszta obliczeń

w pamięci RAM)● obsługa interaktywnych zapytań● możliwość przetwarzania strumieni● prosty i przyjemny framework● wsparcie dla machine learning

Page 14: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Budowa Sparka

Page 15: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Główne filary SparkaDAG – Direct Acyclic Graph (Skierowany graf acykliczny)

RDD – Resilient Distributed Dataset

Page 16: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

DAG - przykład WordCount

Page 17: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

DAG - przykład mapowanie + filtrowanie

Page 18: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

RDDStruktura danych w Sparku. Niezmienna, rozproszona kolekcja obiektów. Każdy zbiór danych w RDD jest podzielony na logiczne partycje, które mogą być przetwarzane przez różne wierzchołki klastra. Może przechowywać obiekty Pythonowe, Javowe i w Scali. Read-only - po każdej operacji na RDD tworzony jest nowy RDD.

Page 19: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

RDDIstnieją dwa sposoby stworzenia RDD:

● zrównoleglenie kolekcji danych w programie sterownika

● odwołanie się do zewnętrznego systemu przechowywania danych jak HDFS, HBase

albo dowolne źródło danych oferujące Hadoop Input Format

Spark używa RDD do szybszego przetwarzania operacji MapReduce.

Page 20: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

RDDTrzy podstawowe tryby przetrzymywania RDD:

● tylko w pamięci ● tylko na dysku● w pamięci i na dysku

Page 21: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

RDDDwa rodzaje obsługiwanych operacji:

● transformacje● akcje

Przykłady transformacji: map, filter, flatMap, groupByKey, reduceByKey, aggregateByKey, pipe i coalesce.

Przykłady akcji: reduce, collect, count, first, take, countByKey i foreach.

Zapraszam na: http://spark.apache.org/docs/latest/programming-guide.html

Page 22: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Dlaczego RDD?Może być przechowywany w pamięci podręcznej. Aplikacje iteracyjne jak i interaktywne

wymagają szybkiej wymiany danych między równoległymi jobami. W MapReduce

wymiana danych jest bardzo wolna przez replikacje, serializacje i zapis danych na dysk.

Bez względu na system plików, zajmuje to ok 90% całkowitego czasu przetwarzania.

Page 23: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Operacje iteracyjne na MapReduce

Page 24: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Operacje interaktywne na MapReduce

Page 25: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Operacje iteracyjne na Spark RDD

Page 26: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Operacje interaktywne na Spark RDD

Page 27: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Jak działa Apache Spark?

Page 28: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Przykład WordCount

Page 29: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Przykład WordCount

Page 30: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Przykład WordCount

Page 31: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark StreamingRozszerzenie Sparka generujące mikro-zadania wsadowe (co jakiś czas np 2s), pozwalające na analizę strumieni danych. Używa tych samych mechanizmów do zrównoleglania co Spark Core. Zapewnia analizę elementu strumienia danych dokładnie raz. Większość innych frameworków traktuje strumienie pojedynczo.

Page 32: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark Streaming

Page 33: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Spark SQLZadania są generowane na podstawie zapytań SQL. Podobny do Hive, może korzystać z jego komponentów i zapytań.

Page 34: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

InstalacjaNie wymaga wcześniej zainstalowanego Hadoopa.

Trzeba mieć zainstalowane JDK.

Działa na komputerach z systemem opartych na UNIXie (Linux, Mac OS) oraz Windows (tutaj trzeba zbudować projekt Spark’a samemu za pomocą Maven’a).

Projekty buduje się za pomocą Maven’a.

(Z własnego doświadczenia… lepiej na Win10 ściągnąć sobie maszynę wirtualną z linuxem)

Page 35: Wprowadzenie do Apache Spark · 2017-01-20 · Wprowadzenie do Apache Spark Jakub Toczek. Epoka informacyjna. MapReduce. MapReduce. Apache Hadoop narodziny w 2006 roku z Apache Nutch

Źródłahttps://www.tutorialspoint.com/apache_spark/

https://en.wikipedia.org/wiki/Apache_Spark

http://spark.apache.org/docs/latest/programming-guide.html

http://0x0fff.com/spark-architecture-talk/

https://www.sigmoid.com/apache-spark-internals/

https://www.infoq.com/articles/apache-spark-introduction