Wprowadzenie do Apache Spark
Jakub Toczek
Epoka informacyjna
MapReduce
MapReduce
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
HDFS
Apache Spark - czym jest?Ogólny silnik do przetwarzania Big Data. Open source.
Spark - motywacja● Trudność w programowaniu w Hadoopie (MapReduce)● Nadmierne wykorzystywanie HDD przez Hadoopa● Potrzeba frameworku bardziej przyjaznego machine-learning
Trudność w programowaniu
Trudność w programowaniuPython: Scala:
Java:
Spark - motywacja● Trudność w programowaniu w Hadoopie (MapReduce)● Nadmierne wykorzystywanie HDD przez Hadoopa● Potrzeba frameworku bardziej przyjaznego machine-learning
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)
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
Budowa Sparka
Główne filary SparkaDAG – Direct Acyclic Graph (Skierowany graf acykliczny)
RDD – Resilient Distributed Dataset
DAG - przykład WordCount
DAG - przykład mapowanie + filtrowanie
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.
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.
RDDTrzy podstawowe tryby przetrzymywania RDD:
● tylko w pamięci ● tylko na dysku● w pamięci i na dysku
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
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.
Operacje iteracyjne na MapReduce
Operacje interaktywne na MapReduce
Operacje iteracyjne na Spark RDD
Operacje interaktywne na Spark RDD
Jak działa Apache Spark?
Przykład WordCount
Przykład WordCount
Przykład WordCount
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.
Spark Streaming
Spark SQLZadania są generowane na podstawie zapytań SQL. Podobny do Hive, może korzystać z jego komponentów i zapytań.
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)
Ź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
Top Related