Original post information:
"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"
w tym poście na blogu przedstawimy do Apache Spark i jego historii i zbadać niektóre z obszarów, w których jego szczególny zestaw możliwości pokazać najbardziej obiecujące. Omówimy relacje z innymi kluczowymi technologiami i dostarczymy pomocnych wskazówek.
z iskrą 2.,0 i nowsze wersje, duże ulepszenia zostały wprowadzone, aby Spark łatwiej programować i wykonywać szybciej.
czym jest Apache Spark?
Spark jest rozproszonym silnikiem przetwarzania danych ogólnego przeznaczenia, który nadaje się do stosowania w szerokim zakresie okoliczności. Oprócz silnika przetwarzania danych Spark core, istnieją biblioteki do SQL, uczenia maszynowego, obliczeń wykresów i przetwarzania strumieni, które mogą być używane razem w aplikacji. Języki programowania obsługiwane przez Spark to: Java, Python, Scala i R., Programiści aplikacji i analitycy danych włączają Spark do swoich aplikacji, aby szybko wyszukiwać, analizować i przekształcać dane na dużą skalę. Zadania najczęściej związane z Spark obejmują zadania wsadowe ETL i SQL w dużych zestawach danych, przetwarzanie strumieniowych danych z czujników, IoT lub systemów finansowych oraz zadania uczenia maszynowego.
Historia
aby zrozumieć Spark, pomaga zrozumieć jego historię., Przed Spark istniał MapReduce, odporny Framework rozproszonego przetwarzania, który umożliwiał Google indeksowanie eksplodującej ilości treści w Internecie, w dużych klastrach serwerów towarowych.
istniały 3 podstawowe koncepcje strategii Google:
- Dystrybucja danych: gdy plik danych jest przesyłany do klastra, jest on dzielony na kawałki, zwane blokami danych, i rozprowadzany między węzłami danych i replikowany w całym klastrze.,
-
Distribute computation: użytkownicy określają funkcję mapy, która przetwarza parę klucz/wartość w celu wygenerowania zestawu pośrednich par klucz / wartość oraz funkcję reduce, która łączy wszystkie wartości pośrednie powiązane z tym samym kluczem pośrednim. Programy napisane w tym funkcjonalnym stylu są automatycznie równoległe i wykonywane na dużym klastrze maszyn towarowych w następujący sposób:
- proces mapowania przebiega na każdym przypisanym węźle danych, pracując tylko na jego bloku danych z rozproszonego pliku.,
- wyniki procesów mapowania są wysyłane do reduktorów w procesie zwanym „shuffle and sort”: pary klucz / wartość z maperów są sortowane według klucza, podzielone według liczby reduktorów, a następnie wysyłane przez Sieć i zapisywane do sortowanych kluczy „Sequence files” na węzłach reduktorów.
- proces reduktora wykonuje się na przypisanym węźle i działa tylko na jego podzbiorze danych (Jego pliku sekwencyjnym). Wyjście z procesu reduktora jest zapisywane do pliku wyjściowego.,
- tolerować błędy: zarówno dane, jak i obliczenia mogą tolerować błędy, nie przechodząc do innego węzła dla danych lub przetwarzania.
przykład wykonania MapReduce zliczanie słów:
niektóre algorytmy iteracyjne, takie jak PageRank, których Google używał do pozycjonowania stron w wynikach wyszukiwarek, wymagają łączenia wielu zadań MapReduce razem, co powoduje dużo odczytu i zapisu na dysk., Gdy wiele zadań MapReduce jest połączonych ze sobą łańcuchowo, dla każdego zadania MapReduce dane są odczytywane z rozproszonego bloku plików do procesu map, zapisywane i odczytywane z pliku sekwencyjnego pomiędzy nimi, a następnie zapisywane do pliku wyjściowego z procesu reduktora.
Doug Cutting i Mike Cafarella stworzyli Apache Hadoop™.,
Apache Spark™ rozpoczął działalność w 2009 roku jako projekt w ramach AMPLab na Uniwersytecie Kalifornijskim w Berkeley. Spark stał się inkubowanym projektem Apache Software Foundation w 2013 roku i został promowany na początku 2014 roku, aby stać się jednym z projektów na najwyższym poziomie Fundacji. Spark jest obecnie jednym z najbardziej aktywnych projektów zarządzanych przez Fundację, a społeczność, która rozwinęła się wokół projektu, obejmuje zarówno płodnych indywidualnych współpracowników, jak i dobrze finansowanych sponsorów korporacyjnych, takich jak Databricks, IBM i Chiński Huawei.,
celem projektu Spark było zachowanie zalet skalowalnego, rozproszonego, odpornego na błędy frameworka przetwarzania MapReduce, a jednocześnie uczynienie go bardziej wydajnym i łatwiejszym w użyciu. Zalety Spark nad MapReduce to:
- Spark wykonuje znacznie szybciej poprzez buforowanie danych w pamięci podczas wielu równoległych operacji, podczas gdy MapReduce wymaga więcej odczytu i zapisu z dysku.
- Spark uruchamia wielowątkowe zadania wewnątrz procesów JVM, podczas gdy MapReduce działa jako cięższe procesy JVM., Zapewnia To Spark szybsze uruchamianie, lepszą równoległość i lepsze wykorzystanie procesora.
- Spark zapewnia bogatszy model programowania funkcyjnego niż MapReduce.
- Spark jest szczególnie przydatny do równoległego przetwarzania rozproszonych danych za pomocą algorytmów iteracyjnych.
jak aplikacja Spark działa na klastrze
poniższy diagram pokazuje aplikację Spark działającą na klastrze.,
- aplikacja Spark działa jako niezależne procesy, koordynowane przez obiekt SparkSession w programie sterownika.
- Menedżer zasobów lub klastrów przydziela zadania pracownikom, po jednym zadaniu na partycję.
- zadanie stosuje swoją jednostkę pracy do zbioru danych w swojej partycji i wyprowadza nowy zbiór danych partycji. Ponieważ algorytmy iteracyjne wielokrotnie stosują operacje na danych, korzystają one z buforowania zbiorów danych w iteracjach.,
- wyniki są wysyłane z powrotem do aplikacji sterownika lub mogą być zapisane na dysku.,anager dołączony do Spark
- Apache Mesos – ogólny menedżer klastrów, który może również uruchamiać aplikacje Hadoop
- Apache Hadoop YARN – Menedżer zasobów w Hadoop 2
- Kubernetes – system open source do automatyzacji wdrażania, skalowanie i Zarządzanie aplikacjami kontenerowymi
Spark ma również tryb lokalny, w którym sterownik i wykonawcy działają jako wątki na komputerze zamiast klastra, co jest przydatne do tworzenia aplikacji z komputera osobistego.,
Do czego służy Spark?
Spark jest w stanie obsłużyć kilka petabajtów danych na raz, rozproszonych w klastrze tysięcy współpracujących serwerów fizycznych lub wirtualnych. Posiada rozbudowany zestaw bibliotek programistów i interfejsów API i obsługuje języki takie jak Java, Python, R i Scala; jego elastyczność sprawia, że dobrze nadaje się do wielu zastosowań., Spark jest często używany z rozproszonymi magazynami danych, takimi jak HPE EZMERAL Data Fabric, Hadoop HDFS i Amazon S3, z popularnymi bazami danych NoSQL, takimi jak HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra i MongoDB oraz z rozproszonymi magazynami wiadomości, takimi jak HPE Ezmeral Data Fabric i Apache Kafka.
typowe przypadki użycia obejmują:
przetwarzanie strumienia: od plików dziennika po dane czujników twórcy aplikacji coraz częściej muszą radzić sobie ze „strumieniami” danych., Dane te docierają w stałym strumieniu, często z wielu źródeł jednocześnie. Chociaż z pewnością możliwe jest przechowywanie tych strumieni danych na dysku i analizowanie ich retrospektywnie, czasami rozsądne lub ważne jest przetwarzanie i działanie na danych w miarę ich napływania. Na przykład strumienie danych związanych z transakcjami finansowymi mogą być przetwarzane w czasie rzeczywistym w celu identyfikacji– i odmowy-potencjalnie nieuczciwych transakcji.
Uczenie maszynowe: wraz ze wzrostem ilości danych podejścia do uczenia maszynowego stają się bardziej wykonalne i coraz dokładniejsze., Oprogramowanie może być przeszkolone w zakresie identyfikacji i działania na wyzwalacze w dobrze rozumianych zestawach danych przed zastosowaniem tych samych rozwiązań do nowych i nieznanych danych. Zdolność Spark do przechowywania danych w pamięci i szybkiego uruchamiania powtarzających się zapytań sprawia, że jest to dobry wybór do szkolenia algorytmów uczenia maszynowego. Wielokrotne uruchamianie szeroko podobnych zapytań, w dużej skali, znacznie skraca czas potrzebny na przejście przez zestaw możliwych rozwiązań w celu znalezienia najbardziej wydajnych algorytmów.,
analityka Interaktywna: zamiast uruchamiać wstępnie zdefiniowane zapytania w celu tworzenia statycznych pulpitów nawigacyjnych sprzedaży lub wydajności linii produkcyjnych lub cen akcji, analitycy biznesowi i analitycy danych chcą zbadać swoje dane, zadając pytanie, przeglądając wynik, a następnie nieznacznie zmieniając początkowe pytanie lub głębiej analizując wyniki. Ten interaktywny proces zapytań wymaga systemów takich jak Spark, które są w stanie szybko reagować i dostosowywać się.,
integracja danych: dane wytwarzane przez różne systemy w firmie rzadko są wystarczająco czyste lub spójne, aby łatwo i łatwo można je połączyć w celu raportowania lub analizy. Procesy Extract, transform and load (ETL) są często używane do pobierania danych z różnych systemów, ich czyszczenia i standaryzacji, a następnie ładowania ich do osobnego systemu do analizy. Spark (i Hadoop) są coraz częściej stosowane w celu zmniejszenia kosztów i czasu wymaganego dla tego procesu ETL.
kto używa Spark?,
szeroka gama dostawców technologii szybko wspierała Spark, uznając możliwość rozszerzenia swoich istniejących produktów big data na obszary, w których Spark dostarcza prawdziwą wartość, takie jak interaktywne zapytania i uczenie maszynowe. Dobrze znane firmy, takie jak IBM i Huawei, zainwestowały znaczne sumy w tę technologię, a coraz więcej startupów buduje firmy, które w całości lub w części zależą od Spark., Na przykład w 2013 roku zespół Berkeley odpowiedzialny za tworzenie Spark założył Databricks, który zapewnia hostowaną, kompleksową platformę danych zasilaną przez Spark. Firma jest dobrze finansowana, po otrzymaniu 247 milionów dolarów w czterech rundach inwestycji w 2013, 2014, 2016 i 2017 roku, a pracownicy Databricks nadal odgrywają znaczącą rolę w ulepszaniu i rozszerzaniu otwartego kodu źródłowego projektu Apache Spark.,
główni dostawcy Hadoop, w tym MapR, Cloudera i Hortonworks, przenieśli się, aby wspierać Spark oparty na przędzy obok swoich istniejących produktów, a każdy z nich pracuje nad wartością dodaną dla swoich klientów. IBM, Huawei i inne firmy poczyniły znaczne inwestycje w Apache Spark, integrując go z własnymi produktami i wprowadzając ulepszenia i rozszerzenia do projektu Apache., Firmy internetowe, takie jak Chińska wyszukiwarka Baidu, operacja e-commerce Taobao i firma społecznościowa Tencent, prowadzą operacje oparte na iskrach na dużą skalę, a 800 milionów aktywnych użytkowników Tencent generuje ponad 700 TB danych dziennie do przetwarzania w klastrze ponad 8000 węzłów obliczeniowych.
oprócz tych internetowych gigantów firma farmaceutyczna Novartis polega na skracaniu czasu potrzebnego do przekazania danych modelowania badaczom, przy jednoczesnym zapewnieniu zachowania etycznych i umownych zabezpieczeń.,
co wyróżnia Spark?
istnieje wiele powodów, aby wybrać Spark, ale następujące trzy są kluczowe:
prostota: możliwości Spark są dostępne za pośrednictwem zestawu bogatych interfejsów API, wszystkie zaprojektowane specjalnie do szybkiej i łatwej interakcji z danymi w skali. Te interfejsy API są dobrze udokumentowane i skonstruowane w sposób, który ułatwia analitykom danych i programistom aplikacji Szybkie uruchomienie Spark.
Speed: Spark jest zaprojektowany dla szybkości, działa zarówno w pamięci, jak i na dysku., Korzystając z Spark, zespół z Databricks zremisował o pierwsze miejsce z zespołem z Uniwersytetu Kalifornijskiego w San Diego w 2014 Daytona GraySort benchmarking challenge (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). Wyzwanie polega na przetwarzaniu statycznego zestawu danych; Zespół Databricks był w stanie przetworzyć 100 terabajtów danych przechowywanych na dyskach półprzewodnikowych w zaledwie 23 minuty, a poprzedni zwycięzca zajął 72 minuty przy użyciu Hadoop i innej konfiguracji klastra. Spark może działać jeszcze lepiej, gdy obsługuje interaktywne zapytania danych przechowywanych w pamięci., W takich sytuacjach istnieją twierdzenia, że Spark może być 100 razy szybszy niż MapReduce Hadoop.
wsparcie: Spark obsługuje wiele języków programowania, w tym Java, Python, R i Scala. Spark obsługuje ścisłą integrację z wieloma wiodącymi rozwiązaniami pamięci masowej w ekosystemie Hadoop i poza nim, w tym HPE Ezmeral Data Fabric( system plików, baza danych i magazyn zdarzeń), Apache Hadoop (HDFS), Apache HBase i Apache Cassandra. Ponadto społeczność Apache Spark jest duża, aktywna i międzynarodowa., Rosnąca liczba dostawców komercyjnych, w tym Databricks, IBM i wszyscy główni dostawcy Hadoop, zapewniają kompleksowe wsparcie dla rozwiązań opartych na Spark.
moc potoków danych
duża część mocy Spark polega na zdolności łączenia bardzo Różnych technik i procesów w jedną, spójną całość. Poza Spark, dyskretne zadania wybierania danych, przekształcania tych danych na różne sposoby i analizy przekształconych wyników mogą łatwo wymagać szeregu oddzielnych RAM przetwarzania, takich jak Apache Oozie., Z drugiej strony Spark oferuje możliwość łączenia ich ze sobą, przekraczając granice między partiami, strumieniowaniem i interaktywnymi obiegami pracy w sposób, który zwiększa produktywność użytkownika.
Spark jobs wykonuje wiele operacji kolejno, w pamięci i przelewa się na dysk tylko wtedy, gdy jest to wymagane przez ograniczenia pamięci. Spark upraszcza zarządzanie tymi różnymi procesami, oferując zintegrowaną całość-rurociąg danych, który jest łatwiejszy w konfiguracji, obsłudze i utrzymaniu., W przypadkach zastosowania, takich jak ETL, rurociągi te mogą stać się niezwykle bogate i złożone, łącząc dużą liczbę wejść i szeroki zakres etapów przetwarzania w jednolitą całość, która konsekwentnie zapewnia pożądany rezultat.