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

Post on 22-May-2020

11 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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