Poznajemy Sparka / Holden Karau, Andy Konwinski, Patrick

Transkrypt

Poznajemy Sparka / Holden Karau, Andy Konwinski, Patrick
Poznajemy Sparka / Holden Karau, Andy Konwinski, Patrick Wendell,
Matei Zaharia. – Warszawa, 2016
Spis treści
Słowo wstępne
XI
Wprowadzenie
XIII
1. Wprowadzenie do analizy danych w Sparku
Czym jest Apache Spark?
Ujednolicony stos
Jądro Sparka
Spark SQL
Spark Streaming
MLlib
GraphX
Zarządzanie klastrami
Kto i po co korzysta ze Sparka?
Zadania z zakresu nauki o danych
Aplikacje przetwarzania danych
Krótka historia Sparka
Wersje i wydania Sparka
Warstwy pamięci w Sparku
1
1
2
3
3
3
4
4
4
4
5
6
6
7
7
2. Pobieranie Sparka i rozpoczęcie pracy
Pobieranie Sparka
Wprowadzenie do powłok Sparka dla Pythona i Scali
Wprowadzenie do podstawowych pojęć Sparka
Niezależne aplikacje
Inicjalizowanie kontekstu SparkContext
Tworzenie niezależnych aplikacji
Podsumowanie
9
9
11
14
17
17
19
21
3. Programowanie z rozproszonymi zbiorami danych RDD
Podstawy RDD
Tworzenie RDD
Działania na RDD
Transformacje
Akcje
Leniwa ewaluacja
Przekazywanie funkcji do Sparka
Python
23
23
25
26
26
28
29
30
30
Scala
Java
Popularne transformacje i akcje
Podstawowe RDD
Przekształcenia między typami RDD
Utrzymywanie (buforowanie)
Podsumowanie
31
32
33
34
42
44
46
4. Praca z parami klucz-wartość
Motywacja
Tworzenie RDD par
Transformacje na RDD par
Agregacje
Grupowanie danych
Złączenia
Sortowanie danych
Działania dostępne na RDD par
Partycjonowanie danych (zaawansowane)
Określanie partycjonera RDD
Działania, które zyskują dzięki partycjonowaniu
Działania, które mają wpływ na partycjonowanie
Przykład: PageRank
Niestandardowe partycjonery
Podsumowanie
47
47
48
49
51
57
57
59
60
60
64
65
65
66
68
70
5. Ładowanie i zapisywanie danych
Motywacja
Formaty plików
Pliki tekstowe
JSON
Wartości oddzielane przecinkami i tabulatorami
Pliki sekwencyjne
Pliki obiektowe
Formaty wejścia i wyjścia w Hadoop
Kompresja plików
Systemy plików
Lokalny lub „zwykły"
Amazon S3
HDFS
Dane strukturalne w Spark SQL
Apache Hive
JSON
Bazy danych
Łączniki z bazą danych Java
Cassandra
71
71
72
73
74
77
80
83
84
88
89
89
90
90
91
91
92
93
93
94
HBase
Elasticsearch
Podsumowanie
96
97
98
6. Zaawansowane programowanie w Sparku
Wprowadzenie
Akumulatory
Akumulatory i odporność na błędy
Akumulatory niestandardowe
Zmienne rozgłoszeniowe
Optymalizacja rozgłoszeń
Praca na poszczególnych partycjach
Potokowanie do programów zewnętrznych
Działania liczbowe na RDD
Podsumowanie
99
99
100
103
104
104
107
107
110
113
115
7. Uruchamianie Sparka w klastrze
Wprowadzenie
Spark Runtime Architecture
Sterownik
Wykonawcy
Menedżer klastrów
Uruchamianie programu
Podsumowanie
Wdrażanie aplikacji za pomocą spark-submit
Pakowanie kodu i elementów zależnych
Aplikacja Java Spark budowana za pomocą Mavena
Aplikacja Scala Spark budowana za pomocą sbt
Konflikty zależności
Harmonogramowanie w aplikacjach Sparka i między nimi
Menedżery klastrów
Menedżer klastrów Standalone
Hadoop YARN
Apache Mesos
Amazon EC2
Którego menedżera klastrów używać?
Podsumowanie
117
117
117
118
119
119
120
120
121
123
124
126
128
128
129
129
133
134
135
138
139
8. Dostrajanie i debugowanie Sparka
Konfigurowanie Sparka z SparkConf
Składniki wykonania: prace, zadania i etapy
Znajdowanie informacji
Sieciowy interfejs użytkownika w Sparku (Web UI)
Dzienniki sterownika i wykonawców
Kluczowe zagadnienia dotyczące wydajności
141
141
145
150
150
153
154
Poziom równoległości
Format serializacji
Zarządzanie pamięcią
Dostarczanie sprzętu
Podsumowanie
155
156
157
158
160
9. Spark SQL
Łączenie ze Spark SQL
Używanie Spark SQL w aplikacjach
Inicjalizacja Spark SQL
Przykład podstawowych zapytań
Elementy DataFrames
Buforowanie
Ładowanie i zapisywanie danych
Apache Hive
Źródła danych lub Parquet
JSON
Ze zbiorów RDD
Serwer JDBC/ODBC
Praca z Beeline
Długotrwałe tablice i zapytania
Funkcje definiowane przez użytkowników
UDF w Spark SQL
Funkcje UDF w Hive
Wydajność Spark SQL
Opcje dostrajania wydajności
Podsumowanie
161
162
164
164
165
166
169
170
171
172
173
175
176
178
179
179
179
181
181
182
183
10. Spark Streaming
Prosty przykład
Architektura i abstrakcja
Transformacje
Transformacje bezstanowe
Transformacje stanowe
Operacje wyjścia
Źródła wejściowe
Główne źródła
Dodatkowe źródła
Wiele źródeł i ustawianie rozmiaru klastra
Działanie 24/7
Punkty kontrolne
Odporność sterownika na błędy
Odporność węzła roboczego na błędy
Odporność odbiornika na błędy
Gwarancje przetwarzania
185
186
188
192
192
195
200
201
202
203
208
208
209
209
211
211
212
Interfejs użytkownika w strumieniowaniu
Kwestie wydajności
Rozmiary wsadu i okien
Poziom równoległości
Czyszczenie pamięci i jej wykorzystywanie
Podsumowanie
213
213
213
214
214
215
11. Systemy uczące się w MLib
Przegląd
Wymagania dotyczące systemu
Podstawy systemów uczących się
Przykład: klasyfikacja spamu
Typy danych
Praca z wektorami
Algorytmy
Ekstrakcja cech
Statystyki
Klasyfikacja i regresja
Klastrowanie
Wspólne filtrowanie i rekomendacje
Zmniejszenie wymiarowości
Ewaluacja modelu
Wskazówki i kwestie wydajności
Przygotowanie cech
Konfigurowanie algorytmów
Bufrowanie zbiorów RDD do ponownego wykorzystania
Rozpoznawanie rzadkości
Poziom równoległości
API potoku
Podsumowanie
217
217
218
219
220
223
224
225
225
228
229
234
235
237
239
239
239
240
240
240
241
241
242
Skorowidz
243
O autorach
259
oprac. BPK