Facebook - konwersja
Czytaj fragment
Pobierz fragment

Poznajemy Sparka. Błyskawiczna analiza danych - ebook

Data wydania:
1 stycznia 2016
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
Czytaj fragment
Pobierz fragment
Produkt niedostępny.  Może zainteresuje Cię

Poznajemy Sparka. Błyskawiczna analiza danych - ebook

Dzięki tej pracy, napisanej przez deweloperów Sparka, naukowcy zajmujący się danymi i inżynierowie dowiedzą się, jak przedstawiać równoległe zadania za pomocą kilku wierszy kodu oraz jak pisać aplikacje od prostych zdań wsadowych do przetwarzania strumieniowego i systemów uczących się.

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-01-18685-2
Rozmiar pliku: 2,8 MB

FRAGMENT KSIĄŻKI

Słowo wstępne

W krótkim czasie Apache Spark stał się mechanizmem nowej generacji do przetwarzania dużych wolumenów informacji i jest coraz szerzej stosowany w przemyśle. W porównaniu z Hadoop MapReduce, który rozpoczął wielką rewolucję Big Data, Spark wyróżnia się w kilku podstawowych kwestiach: jest znacznie szybszy i łatwiejszy w użytkowaniu dzięki bogatemu interfejsowi (API), który jest bardziej rozbudowany niż aplikacje wsadowe i obsługuje wiele zadań, w tym interakcyjne zapytania, Spark Streaming, systemy uczące się oraz przetwarzanie wykresów.

Miałem zaszczyt być zaangażowany w tworzenie aplikacji Spark od rozpoczęcia projektu do momentu, gdy stał się najbardziej rozwijanym dziś projektem otwartego oprogramowania big data i jednym z najbardziej wspieranych projektów Apache. Dlatego też jest mi bardzo miło, że Matei Zaharia, twórca Sparka, dołączył do innych deweloperów tej platformy, Patricka Wendella, Andy’ego Konwinskiego i Holdena Karau, i razem napisali tę książkę.

Ze względu na gwałtowny wzrost popularności Sparka, największym problemem stał się brak odpowiednich materiałów pomocniczych. Ta książka jest właśnie po to, aby rozwiązać ten problem, dając, przy swoich 11 rozdziałach i dziesiątkach przykładów przeznaczonych dla naukowców zajmujących się danymi, studentów i twórców oprogramowania, dobry punkt rozpoczęcia nauki w tym zakresie. Mam nadzieję, że nawet po upływie długiego czasu Czytelnicy będą wspominać prezentowaną książkę jako tę, dzięki której poznali fascynującą nową dziedzinę.

Ion Stoica

prezes Databricks oraz dyrektor współzarządzający

AMPlab Uniwersytetu Kalifornijskiego w BerkeleyROZDZIAŁ 1 Wprowadzenie do analizy danych w Sparku

W tym rozdziale przedstawiono ogólny opis pakietu Apache Spark. Osoby, które znają to narzędzie i jego komponenty, mogą przejść od razu do rozdziału 2.

Czym jest Apache Spark?

Apache Spark to platforma przetwarzania klastrowego przygotowana jako szybkie narzędzie ogólnego przeznaczenia.

Jeśli idzie o szybkość, to Spark rozwija model MapReduce, efektywnie obsługując więcej rodzajów obliczeń, w tym interakcyjne zapytania i przetwarzanie strumieniowe. Szybkość jest ważna w przetwarzaniu dużych zbiorów danych, gdyż oznacza to możliwość interakcyjnego dostępu do danych zamiast oczekiwania liczonego w minutach lub godzinach. Jedną z podstawowych cech Sparka jest możliwość wykonywania obliczeń w pamięci, a przy tym system jest też bardziej efektywny niż MapReduce w zakresie złożonych aplikacji działających na dysku.

Z punktu widzenia zastosowań ogólnych Spark obejmuje szeroki zakres działań, które wcześniej wymagały oddzielnych systemów rozproszonych, w tym aplikacji wsadowych, algorytmów iteracyjnych, iteracyjnych zapytań oraz strumieniowania. Dzięki obsłudze tych zadań w ramach jednego mechanizmu Spark pozwala na łatwe i tanie powiązanie różnych typów przetwarzania, co jest często niezbędne w strumieniowej analizie danych produkcyjnych. Ponadto zmniejsza on obciążenie związane z utrzymywaniem oddzielnych narzędzi.

Spark jest z założenia łatwo dostępny dzięki API w językach Python, Java, Scala i SQL oraz rozbudowanym wewnętrznym bibliotekom. Integruje się też ściśle z innymi narzędziami Big Data. W szczególności Spark może działać w klastrach Hadoop i zapewnić dostęp do wszelkich źródeł danych Hadoop, w tym do bazy Cassandra.

Ujednolicony stos

Spark jako projekt zawiera wiele ściśle zintegrowanych komponentów. Jego jądrem jest „mechanizm obliczeniowy”, odpowiedzialny za harmonogramowanie, dystrybucję i monitorowanie aplikacji złożonych z wielu zadań obliczeniowych na wielu wykonujących je maszynach, czyli inaczej na klastrze komputerowym. Ponieważ podstawowy mechanizm Sparka jest zarówno szybki, jak i ogólnego zastosowania, obsługuje wiele komponentów wysokiego poziomu dla różnych zadań, jak SQL czy systemy uczące się. Komponenty te są zaprojektowane do ścisłej współpracy, co pozwala nam na łączenie ze sobą bibliotek w projekcie programistycznym. Filozofia ścisłej integracji ma kilka zalet. Po pierwsze wszystkie biblioteki i komponenty wyższego poziomu na stosie korzystają z ulepszeń wprowadzanych na niższych poziomach. Na przykład, gdy podstawowy mechanizm Sparka dodaje automatycznie biblioteki optymalizacji, SQL i systemów uczących się, one także przyśpieszają. Po drugie koszty związane z uruchomieniem stosu są minimalizowane, gdyż zamiast uruchamiania 5–10 niezależnych systemów programowania organizacja musi uruchomić tylko jeden. Koszty obejmują wdrożenie, utrzymanie, testowanie, obsługę i inne elementy związane z oprogramowaniem. Oznacza to także, że przy dodawaniu do stosu Sparka kolejnego komponentu każda organizacja korzystająca ze Sparka będzie mogła natychmiast go wypróbować. Zmienia to koszt testowania nowego rodzaju analizy danych, gdyż zamiast pobierania, wdrażania i uczenia się nowego oprogramowania wystarczy uaktualnić Sparka.

Wreszcie jedną z największych zalet ścisłej integracji jest możliwość budowy aplikacji, które bez przeszkód łączą różne modele przetwarzania. Na przykład w Sparku można napisać jedną aplikację, która wykorzystuje system uczący się do klasyfikacji danych w czasie rzeczywistym, w miarę jak są otrzymywane ze źródeł strumieniowych. Jednocześnie analityk może użyć zapytania w stosunku do danych wynikowych, także w czasie rzeczywistym, przez SQL (np. połączyć dane z plikami dziennika, które nie mają struktury). Ponadto bardziej zaawansowani inżynierowie danych i naukowcy z tej dziedziny mogą mieć dostęp do tych samych danych do analizy ad hoc przez powłokę Pythona. Przy tym wszystkim zespół informatyków musi utrzymywać tylko jeden system.

Teraz w skrócie przybliżymy każdy z komponentów Sparka pokazanych na rysunku 1.1.

Rysunek 1.1. Stos Sparka

Jądro Sparka

Jądro Sparka obejmuje podstawowe funkcje Sparka, w tym komponenty harmonogramowania zadań, zarządzanie pamięcią, odtwarzanie systemu po awarii, interakcje z systemami magazynowania danych i wiele więcej. Mieści się tam także API, które definiuje odporne rozproszone zbiory danych (resilient distributed dataset, RDD), które stanowią podstawowe pojęcie programowania w Sparku. RDD reprezentują kolekcję elementów rozproszonych w wielu węzłach obliczeniowych, którymi można równolegle manipulować. Jądro Sparka zapewnia wiele różnych API do budowy i przetwarzania tych kolekcji.

Spark SQL

Spark SQL to pakiet Sparka przeznaczony do pracy z danymi strukturalnymi. Pozwala na kierowanie zapytań przez SQL, a także przez odmianę SQL, Apache Hive – nazywany Hive Query Language (HQL) – oraz obsługuje wiele źródeł danych, w tym tabele Hive, Parquet i JSON. Poza interfejsem SQL dla Sparka, Spark SQL pozwala deweloperom na mieszanie zapytań SQL z programowym przetwarzaniem danych obsługiwanym przez RDD w Pythonie, Javie i Scali. Wszystko to w jednej aplikacji, co pozwala połączyć SQL ze złożoną analizą danych. Ta ścisła integracja z bogatym środowiskiem programistycznym, jakie zapewnia Spark, sprawia, że Spark SQL jest niepodobny do innych narzędzi hurtowni oprogramowania open source. Spark SQL został dołączony do Sparka w wersji 1.0.

Starszym projektem SQL w Sparku był Shark, przygotowany przez Uniwersytet Kalifornijski w Berkeley, który modyfikował Apache Hive tak, aby ten działał w Sparku. Został on obecnie zastąpiony przez Spark SQL, co zapewnia lepszą integrację z mechanizmem Sparka i językiem API.

Spark Streaming

Spark Streaming to komponent Sparka umożliwiający przetwarzanie aktywnych strumieni danych. Przykładami strumieni danych są pliki dzienników generowane przez produkcyjne serwery sieciowe lub kolejki komunikatów zawierających aktualizacje stanu podane przez użytkowników usług sieciowych. Spark Streaming zapewnia API do manipulowania strumieniami danych, ściśle odpowiadające API dla RDD w jądrze Sparka, sprawiając, że programistom łatwo przychodzą nauka posługiwania się tym narzędziem i poruszanie się między aplikacjami w celu obsługi danych przechowywanych w pamięci, na dyskach lub przesyłanych w czasie rzeczywistym. Poniżej swego API Spark Streaming zostało zaprojektowane tak, aby zapewnić ten sam stopień odporności na błędy, przepustowość oraz stabilność, jaką daje jądro Sparka.

MLlib

Spark dostarczany jest z biblioteką zawierającą podstawowe funkcje systemów uczących się (machine learning, ML) o nazwie MLlib. MLlib zapewnia wiele algorytmów dla systemów uczących się, w tym klasyfikację, regresję, klastrowanie oraz wspólne filtrowanie, a także elementy wspomagające te funkcje, jak model analizy i importu danych. Zapewnia także proste typy zmiennych niskiego poziomu ML, w tym algorytm optymalizacji z malejącym gradientem. Wszystkie te metody są zaprojektowane tak, aby rozwiązywać zadania w całym klastrze.

GraphX

GraphX jest biblioteką obsługi wykresów (np. wykres dla sieci społecznościowych) oraz wykonywania równoległych obliczeń graficznych. Podobnie jak Spark Streaming oraz Spark SQL, GraphX rozszerza RDD API Sparka, pozwalając nam na tworzenie skierowanego wykresu z arbitralnymi właściwościami przypisanymi do każdego wierzchołka i krawędzi. GraphX zapewnia także różne operatory do obsługi wykresów (np. podwykresy i mapy wierzchołków) oraz bibliotekę powszechnie używanych algorytmów graficznych (np. PageRank i zliczanie trójkątów).

Zarządzanie klastrami

U podstaw Spark jest zaprojektowany tak, aby efektywnie obsługiwać zagadnienia w skali od jednego do tysięcy węzłów obliczeniowych. Aby to osiągnąć, przy maksymalnej elastyczności Spark może współpracować z wieloma menedżerami klastrów, w tym z Hadoop YARN, Apache Mesos oraz prostym menedżerem klastrów zawartym w Sparku, który nosi nazwę Standalone Scheduler. Jeśli instalujemy Sparka na pustych maszynach, Standalone Scheduler daje łatwy sposób na rozpoczęcie pracy; jeśli jednak mamy na komputerach klaster Hadoop YARN lub Mesos, obsługa przez Spark tych menedżerów klastrów pozwala naszym aplikacjom na korzystanie z nich. W rozdziale 7 można znaleźć opis różnych opcji oraz zasady wyboru właściwego menedżera klastrów.

Kto i po co korzysta ze Sparka?

Ponieważ Spark to schemat ogólnego zastosowania przeznaczony do przetwarzania klastrowego, wykorzystywany jest do różnego rodzaju aplikacji. We Wprowadzeniu omówiliśmy dwie grupy czytelników, dla których przeznaczona jest ta książka: naukowców zajmujących się danymi oraz inżynierów. Przyjrzyjmy się bliżej każdej z tych grup i temu, jak korzysta ze Sparka. Nie będzie zaskoczeniem, że typowe zastosowania dla obu grup są różne, ale można ująć je w dwie kategorie: nauka o danych oraz wykorzystanie danych.

Oczywiście nie są to precyzyjnie określone dziedziny ani schematy zastosowań, a wielu użytkowników ma umiejętności w obu zakresach, raz odgrywając rolę naukowca analizującego dane, a innym razem pisząc poważne aplikacje przetwarzania danych. Niemniej oddzielne rozpatrzenie tych grup i ich zadań może wiele rozjaśnić.

Zadania z zakresu nauki o danych

Nauka o danych, nowa dyscyplina nauki rozwijająca się w ostatnich latach, koncentruje się na analizie danych. Nie ma wprawdzie standardowej definicji, ale na nasze potrzeby naukowcy zajmujący się danymi to ludzie, których głównym zadaniem są analiza i modelowanie danych. Naukowcy ci mogą znać SQL, statystykę, modelowanie przyszłych zachowań (systemy uczące się) oraz programowanie, przede wszystkim w Pythonie, Matlabie lub R. Naukowcy zajmujący się danymi mają także doświadczenie w stosowaniu technik niezbędnych do przekształcania danych do formatów, które pozwalają na intuicyjną analizę (określaną czasem jako data wrangling).

Naukowcy zajmujący się danymi wykorzystują swoje umiejętności do analizy danych, mając na celu odpowiedzi na pytania lub wgląd w ich istotę. Często ich zakres pracy obejmuje analizę ad hoc, wykorzystują więc interakcyjne powłoki (zamiast budować złożone aplikacje), które pozwalają im możliwie szybko oglądać wyniki zapytań i fragmenty kodu. Proste i szybkie API Sparka wyśmienicie nadają się do tego celu, wbudowane zaś biblioteki oznaczają, że wiele algorytmów dostępnych jest na wyciągnięcie ręki.

Spark obsługuje różne wieloskładnikowe zadania z zakresu wiedzy o danych. Powłoka Sparka ułatwia interakcyjną analizę danych za pomocą języków Python lub Scala. Spark SQL ma oddzielną powłokę SQL, której można używać do eksploracji danych za pomocą SQL. Spark SQL można też wykorzystać jako część zwykłego programu w Sparku lub w powłoce Sparka. Systemy uczące się oraz analiza danych są obsługiwane dzięki bibliotekom MLlib. Ponadto obsługiwane są odwołania do zewnętrznych programów w Matlab lub R. Spark umożliwia naukowcom zajęcie się problemami związanymi ze znacznie większymi zbiorami danych, niż mogli to zrobić za pomocą takich narzędzi jak R lub Pandas.

Czasami, po pierwszej fazie analizy, praca naukowców zajmujących się danymi może wejść w fazę produkcyjną, zostać rozszerzona (np. zyskać odporność na błędy), stając się produkcyjną aplikacją analizy danych jako część aplikacji biznesowej. Na przykład wstępna analiza danych wykonana przez naukowca może prowadzić do utworzenia systemu zalecanego w produkcji, zintegrowanego z aplikacją sieciową i wykorzystywanego do tworzenia zalecenia produktu dla użytkowników. Często inna osoba lub zespół będą prowadzić proces przystosowania pracy naukowca do celów produkcyjnych. Tą osobą jest zwykle inżynier.

Aplikacje przetwarzania danych

Inne przypadki zastosowania Sparka można opisać z punktu widzenia osoby inżyniera. Dla naszych celów potraktujemy inżynierów jako liczną klasę twórców oprogramowania, którzy używają Sparka do budowania produkcyjnych aplikacji przetwarzania danych. Rozumieją oni zwykle zasady inżynierii oprogramowania, takie jak enkapsulacja, projektowanie interfejsów czy programowanie obiektowe. Zwykle mają dyplom z nauk komputerowych. Wykorzystują umiejętności inżynierskie do projektowania i tworzenia systemów programistycznych implementujących przypadki biznesowe.

Inżynierom Spark oferuje prosty sposób zrównoleglenia aplikacji w wielu klastrach dzięki złożoności programowania systemów rozproszonych, komunikacji sieciowej oraz odporności na błędy. System daje im narzędzia do monitorowania, weryfikacji oraz dostrojenia aplikacji, pozwalając jednocześnie na szybką implementację zadań. Modułowa budowa API (oparta na przekazywaniu rozproszonych kolekcji obiektów) ułatwia rozkład pracy na czynniki dzięki zastosowaniu bibliotek i ich lokalnego testowania. Użytkownicy Sparka wybierają go do tworzenia swoich aplikacji przetwarzania danych, gdyż zapewnia on wiele różnych funkcji, jest prosty do nauki i użytkowania oraz dopracowany i niezawodny.

Krótka historia Sparka

Spark to projekt open source zbudowany i utrzymywany przez aktywną i zróżnicowaną społeczność deweloperów. Jeśli wasza organizacja po raz pierwszy próbuje korzystać ze Sparka, może zainteresować Was historia tego projektu. Spark powstał w 2009 r. jako projekt badawczy Uniwersytetu Kalifornijskiego w Berkeley w RAD Lab (przekształconym w AMPLab). Jego twórcy pracowali wcześniej nad Hadoop Map‐Reduce i widzieli, że jest on nieefektywny przy wykonywaniu zadań iteracyjnych i interakcyjnych. Dlatego od początku Spark został zaprojektowany jako narzędzie szybko wykonujące interakcyjne zapytania i algorytmy iteracyjne, wprowadzając obsługę przechowywania danych w pamięci oraz efektywny sposób reagowania na błędy.

Artykuły o Sparku publikowano na konferencjach akademickich i wkrótce po jego powstaniu w 2009 był on w przypadku niektórych zadań już 10–20 razy szybszy niż MapReduce.

Jednymi z pierwszych użytkowników Sparka były inne grupy z uniwersytetu w Berkeley, w tym badacze zajmujący się systemami uczącymi się, jak ci pracujący w projekcie Mobile Millennium, gdzie wykorzystywano Sparka do monitorowania i przewidywania korków w rejonie zatoki San Francisco. Wkrótce Sparka zaczęło używać wiele zewnętrznych organizacji, a dziś ponad 50 z nich podaje, że ich strona jest Spark PoweredBy (obsługiwana przez Sparka), a dziesiątki innych mówią o stosowaniu Sparka na spotkaniach takich społeczności, jak Meetups oraz Spark Summit. Poza uniwersytetem w Berkeley głównymi sponsorami Sparka są Databricks, Yahoo! oraz Intel.

W 2011 r. AMPLab zaczęło rozwijać dla Sparka komponenty wyższego poziomu, takie jak Shark (Hive on Spark) oraz Spark Streaming. Te i inne komponenty nazywane są czasem stosem analitycznym Berkeley (Berkeley Data Analytics Stack, BDAS).

Spark został udostępniony jako open source w marcu 2010, a w czerwcu 2013 r. został przeniesiony do Apache Software Foundation, gdzie jest teraz wysoko cenionym przedsięwzięciem.

Wersje i wydania Sparka

Od czasu powstania Sparkowi i samemu projektowi towarzyszy bardzo aktywna społeczność, z coraz większą liczbą wspierających go podmiotów. Przy Sparku 1.0 pracowało ponad 100 osób. Poziom aktywności gwałtownie wzrósł i aktualizowane wersje Sparka są wydawane regularnie. Spark 1.0 wydano w maju 2014 r. W tej książce podstawę stanowi Spark w wersji 1.1.0 i następnych, z uwzględnieniem aktualizacji dla Sparka 1.3, jednak większość pojęć i przykładów można wykorzystać także przy wersjach wcześniejszych.

Warstwy pamięci w Sparku

Spark może tworzyć rozproszone zbiory danych z dowolnego pliku zapisanego w formacie rozproszonego systemu plików Hadoop (HDFS) lub w innych systemach pamięci obsługiwanych przez API w Hadoop (w tym lokalne systemy plików, Amazon S3, Cassandra, Hive, HBase itp.). Trzeba pamiętać, że Spark nie wymaga Hadoop; po prostu obsługuje systemy pamięci, implementując API Hadoop. Spark obsługuje pliki tekstowe, pliki sekwencyjne (SequenceFiles), Avro, Parquet oraz wszystkie inne formaty wejściowe Hadoop. Interakcja z tymi źródłami danych została omówiona w rozdziale 5.
mniej..

BESTSELLERY

Kategorie: