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