Jak krok po kroku zrozumieć kod źródłowy Apache Spark


Najlepsza odpowiedź

Proponuję przeczytać starsze wersje kodu Sparka.

Rozważ wersję 0.5 wydany w 2012 roku apache / spark Do tego czasu Spark miał tylko około 70 plików z kodem źródłowym i wszystkie te pliki były małe. Spójrz na kod źródłowy RDD tutaj: apache / spark Wszystko jest takie proste i zwięzłe.

Zwróć też uwagę, że architektura Sparka nie ma t zmieniło się dramatycznie od tego czasu. Programiści właśnie dodali wiele funkcji obsługi błędów, optymalizacji i integracji z zewnętrznymi technologiami, takimi jak Yarn czy Kafka.

Gdy zrozumiesz, jak działał Spark w 2012 roku, nie byłoby problemu ze zrozumieniem, jak działa dziś Spark.

Dodatkowo sugeruję przeczytanie tych uwag: JerryLead / SparkInternals . Zapewniają przegląd architektury wewnętrznej Sparka.

Odpowiedź

Aby skorzystać z odpowiedzi Noama Ben-Ami – JEŚLI jesteś użytkownikiem end-to-end Spark może być dość wyczerpujący i trudne do nauczenia.

Nawet jeśli znasz Bash, Python i SQL, to tylko wierzchołek góry lodowej korzystania ze Sparka. Jeśli idziesz „od końca do końca” Spark vs analityk skryptów Python / SQL, zawiera on wiele komponentów, które same w sobie są ważnymi tematami do nauczenia się.

Jasne, możesz używać Spark lokalnie (Twój laptop) i bez Hadoop, ale w „prawdziwym świecie” nie będziesz używać w ten sposób Sparka. Miło jest nauczyć się części składni, ale nie popełnij błędu, nikt nie zatrudni cię do wykonywania „Spark” w tym kontekście (* gra słów zamierzona).

Cały powód używania Sparka to wydajność i siedzisz na rozproszonym systemie plików znanym jako „Big Data”. Oznacza to, że pisząc kod dla swoich zadań Spark, rozumiesz takie rzeczy, jak partycje, węzły, serializacja, JVM, vcores, moduły wykonawcze, pamięć, pamięć i dysk, tasowanie, skompresowane pliki, formaty kolumnowe (parkiet) i tym podobne. sposób przenoszenia danych z, powiedzmy, S3 przez RDD, DataFrames, DataSets (tylko Java / Scala) i Spark SQL do końcowego zestawu danych.

Dla mnie jest to bardzo podobne do sytuacji, gdy ktoś powie, że wie „ Excel ”, a następnie zapytałeś ich, czy mogliby napisać podstawowe makro od zera i dostaliby tego jelenia w wyglądzie reflektorów.

Możliwe przedsięwzięcie w Sparku obejmowałoby:

  1. Tworzenie klastra Hadoop (węzły, pamięć, instancje EC2 itp.)
  2. Konfiguracja YARN (węzły, rdzenie, instancje, moduły wykonawcze, zarządzanie pamięcią, sterowniki, pamięć narzutowa, rozgłaszanie, w pamięci i włączone zarządzanie dyskami itp.) – każdy z nich może zawiesić / zabić Twoje zadania i nie dostaniesz ani kroku dalej, nawet przy niewielkich ilościach danych, jeśli którykolwiek z nich nie działa. uzupełnij swoje dane.
  3. Dokumentacja Spark RDDs
  4. Dokumentacja Spark DataFrames
  5. Dokumentacja Spark SQL
  6. Nieuchronnie będziesz pisać kod w # 3–5, które ujawnią problemy z numerem 2.
  7. W tym momencie prawdopodobnie będziesz debugować co najmniej kod Java, a jeśli używasz Python, błędy bramy py4J na problemy z typem danych z Pythonem i obiektami danych strumieniowych.

Wiele osób może napisać funkcje / metody w stosunku do RDD, DataFrames i Spark SQL w zaledwie kilka minut, a jeśli mają jakieś doświadczenie z Pythonem i SQL – być może nawet pochłonąć RDD, DataFrames i dokumentację SQL w ciągu kilku dni – ale gdy Twoje zadanie Spark zostanie zabite z powodu transmisji, modułu wykonawczego, zadania lub błędu pamięci – nic z tego nie będzie miało znaczenia. Zakładasz kombinezon Spark i zanurzysz się głęboko w brzuch Sparka [Java].

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *