Profesjonalny programista musi zachować równowagę pomiędzy byciem ekspertem na bardzo wąskim polu, i orientacją w zmieniających się wyzwaniach naszej branży. Big Data to jedna z tych dziedzin, których profesjonalny inżynier oprogramowania po prostu nie może zignorować. Środowiska, w których awaria infrastruktury jest częścią codziennej rutyny, gromadzone dane, które nie mieszczą się na pojedynczej maszynie lub dane które muszą być przetwarzane szybko (w sekundach, a nie w godzinach) – to tylko kilka wyzwań, przed którymi stoją projekty Big Data. Apache Spark to szybkie i ogólne narzędzie do przetwarzania danych na dużą skalę. Był on od razu zaprojektowany tak, aby poradzić sobie z wyżej wymienionymi problemami. Niezależnie od tego, czy zajmujesz się Big Data w tej chwili, czy nie, wraz z wykładniczym wzrostem naszej branży (zarówno pod względem złożoności, jak i przestrzeni użytkowników) i pojawiającymi się nowymi dziedzinami, takimi jak nauka dot. danych – może okazać się, że dogłębna znajomość Apache Spark może mieć kluczowe znaczenie.
Pojęcia i umiejętności
Wśród wielu pojęć, z którymi zapoznają się uczestnicy, są:
Big Data, Map-Reduce, Partitioning, HA & resilience in cluster environment, HDFS Apache Spark architecture (logical & physical), Driver program, Master node, Worker node, Executor, RDD (Resilient Distributed Dataset), Transformations & Actions, Partitions, Tasks, Pipelining, Shuffeling, DAG (Directed Acyclic Graph), data locality, Spark Execution Model, Partitoner, Caching, Checkpointing, Broadcast, Accumulators, Spark Memory Model, DataFrames, Datasets, Working with semi-structured & strucutred data (json, parquet, avro), Spark Catalyst optimizer, predicate push down, Project Tungsten, Streaming, DStream, Strucutred Streaming, Back pressure & Elastic Scaling.
Program:
- Wprowadzenie
- Co to jest Apache Spark?
- Co było wcześniej?
- Wyzwania, problemy i zagadnienia z MapReduce
- The Big Picture
- Spark Core
- Typowe pułapki (groupBy)
- Pogłębiona wiedza na temat działania klastra
- Problemy Classpath & Serialization
- Konfiguracja Spark
- Spark UI & Spark history server
- RDD
- Transformacje vs. działania
- Partycje i zadania
- RDD for key values
- Pipelining & Shuffling
- DAG & Stages
- Resilience
- Problemy z wydajnością i sposoby zaradzenia im
- Caching & Checkpointing
- Broadcasts & Accumulators
- Joins
- Spark Core – elementy wewnętrzne
- 5 rzeczy definiujących RDD
- Algorytmy tasowania
- Model pamięci Spark
- Spark SQL
- Zalety danych pół-strukturyzowanych
- SQL
- Wprowadzenie
- Joins
- Hive
- Dataframes
- Wprowadzenie
- Joins
- JSON
- Parquet
- Avro
- DataSets
- Problemy z Dataframes
- Dataset na ratunek!
- Dlaczego Spark SQL działa szybciej
- Structure vs Expression
- Catalyst Optimizer
- Predicate Push Down
- Projekt Tungsten
- Spark SQL – elementy wewnętrzne
- Jak są wdrażane Dataframes i Datasets
- Jak działa Catalyst Optimizer
- Spark Streaming
- Dlaczego Streaming?
- Przegląd ogólny
- Reciever – zadanie długoterminowe
- Resilience
- Transformacje
- Stateless
- Stateful (Window & Sliding duration, .reduceByWindow, .updateStateByKey vs .mapWithState)
- Przykład Ultimate Apache Kafka
- Structured Streaming
- Pozostałe tematy
- Back pressure & Elastic Scaling
- Uruchomienie Spark na Mesos
- Pytania i odpowiedzi