MapReduce. Janina Mincer-Daszkiewicz Systemy rozproszone. MSUI, II rok

Podobne dokumenty
ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Architektura rozproszonych magazynów danych

Apache Hadoop framework do pisania aplikacji rozproszonych

Bigtable Rozproszony system pamięci

Wprowadzenie do optymalnego wykorzystania MapReduce

Seminarium Bazy Danych I. BigTable. Piotr Świgoń Uniwersytet Warszawski

Wprowadzenie do Apache Spark. Jakub Toczek

Hadoop i Spark. Mariusz Rafało

sprowadza się od razu kilka stron!

Tabela wewnętrzna - definicja

WPROWADZENIE DO BAZ DANYCH

Tadeusz Pankowski

Wprowadzenie do Hurtowni Danych

Searching for SNPs with cloud computing

System plików przykłady. implementacji

System plików przykłady implementacji

LEKCJA TEMAT: Zasada działania komputera.

CZĘŚĆ I. WARSTWA PRZETWARZANIA WSADOWEGO

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Projektowanie bezpieczeństwa sieci i serwerów

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Haszowanie (adresowanie rozpraszające, mieszające)

Memeo Instant Backup Podręcznik Szybkiego Startu

Serwer druku w Windows Server

Indeksowanie w bazach danych

Distributed Hash Tables i ich zastosowania

Zaawansowany kurs języka Python

Big Data i 5V Nowe wyzwania w świecie danych Krzysztof Goczyła

HADOOP Dariusz Ż bik

w sieciach szerokopasmowych CATV i ISP - Model OSI

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003

Hurtownie danych wykład 5

Baza danych. Baza danych to:

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Letnia Akademia SUSE. Implementacja nowych rozwiązań open source wszystko, co musisz wiedzieć!

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

Administracja i programowanie pod Microsoft SQL Server 2000

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

DHL CAS ORACLE Wymagania oraz instalacja

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Tworzenie partycji i dysków logicznych

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Klient-Serwer Komunikacja przy pomocy gniazd

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej

Działanie komputera i sieci komputerowej.

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK

Big Data to skalowalność i prostota obsługi wielkich ilości danych!

Zapewnienie wysokiej dostępności baz danych. Marcin Szeliga MVP SQL Server MCT

16MB - 2GB 2MB - 128MB

Metody Kompilacji Wykład 1 Wstęp

Systemy zarządzania produkcją - MES

Lab 9 Podstawy Programowania

76.Struktura oprogramowania rozproszonego.

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

Projektowanie logiki aplikacji

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

Podstawy Informatyki. Metody dostępu do danych

Analiza ilościowa w przetwarzaniu równoległym

Program Rejestr zużytych materiałów. Instrukcja obsługi

System plików ReiserFs

Zarządzanie projektem informatycznym

Sortowanie zewnętrzne

Specyfikacja API Runtime BAS 3.0

Przesyłania danych przez protokół TCP/IP

Systemy operacyjne. Paweł Pełczyński

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Wprowadzenie. Dariusz Wawrzyniak 1

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Przewodnik korzystania z Biblioteki kursów na platformach e-learningowych RON

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Wzorce projektowe. dr inż. Marcin Pietroo

System operacyjny MACH

High Performance Computers in Cyfronet. Andrzej Oziębło Zakopane, marzec 2009

Task Parallel Library

Middleware wprowadzenie października 2010

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

java.util.* :Kolekcje Tomasz Borzyszkowski

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Wypożyczalnia VIDEO. Technologie obiektowe

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

ZASADY PROGRAMOWANIA KOMPUTERÓW

Transkrypt:

MapReduce Janina Mincer-Daszkiewicz Systemy rozproszone MSUI, II rok

Materiały i rysunki zaczerpnięto z następujących źródeł 1. Jeffrey Dean,Sanjay Ghemawat, MapReduce: Simplified Data Processing on Large Clusters, firma Google, OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December, 2004 http://students.mimuw.edu.pl/sr-msui/03-mapreduce/mapreduceosdi04.pdf 2. Google Code University,Distributed Systems http://code.google.com/edu/parallel/index.html 3. Christophe Bisciglia, Aaron Kimball, & Sierra Michels-Slettvet, MapReduce Theory and Implementation, Distributed Computing Seminar, Google, 2007 2

MapReduce z lotu ptaka... Produkt firmy Google TM Model programowania i implementująca go biblioteka w C++ do przetwarzania dużych zbiorów danych Programy napisane zgodnie z tym modelem są automatycznie zrównoleglane i wykonywane na klastrze zbudowanym ze standardowych komputerów Zdejmuje z programisty konieczność zajmowania się szczegółami wykonania programu w środowisku rozproszonym Wiele aplikacji wykonywanych rutynowo w Google wykorzystuje ten model 3

Cele projektowe W Google rośnie liczba obliczeń przetwarzających olbrzymie ilości danych (odwiedzane strony webowe, logi serwerów WWW itp.) Większość tych obliczeń jest prosta koncepcyjnie Ze względów wydajnościowych powinno się je wykonywać w środowisku rozproszonym, ale to znacząco komplikuje kod: jak zrównoleglić wykonanie na wiele komputerów jak rozproszyć dane wejściowe jak radzić sobie z awariami maszyn jak zebrać i przekazać użytkownikowi wyniki obliczeń jak optymalnie wykorzystać przepustowość sieci 4

Cele projektowe cd Inspiracją dla nowego modelu programowania były obecne w językach funkcyjnych operacje map i reduce Na każdym logicznym rekordzie danych wykonuje się map, otrzymuje się pośrednie wyniki w postaci par (klucz, wartość), następnie wykonuje się reduce na wszystkich wartościach o tym samym kluczu Programista pisze program w kategoriach operacji map i reduce, wykonaniem programu w środowisku rozproszonym zarządza dołączana do niego biblioteka Biblioteka zapewnia także odporność na błędy, ponawiając wykonanie obliczeń w przypadku awarii itp. 5

Paradygmat programowania funkcyjnego Operatory funkcyjne nigdy nie modyfikują oryginalnych struktur danych, zawsze tworzą nowe Oryginalne dane pozostają w niezmienionej postaci Porządek operacji nie wpływa na końcowy wynik Kod programu nie determinuje jawnie przepływu danych Jeśli porządek aplikowania funkcji f do elementów listy jest przemienny, to można dowolnie zmieniać kolejność lub zrównoleglać wykonanie 6

map dostarcza ją programista Model programowania pobiera rekord z wejścia i produkuje pośrednie wyniki w postaci par (klucz, wartość) biblioteka grupuje wszystkie wartości pośrednie z tym samym kluczem i przekazuje do funkcji reduce reduce dostarcza ją programista pobiera zbiór wartości dla tego samego klucza i łączy je tworząc mniejszy zbiór wartości pośrednie są dostarczane przez iterator 7

Przykład Zliczanie liczby wystąpień każdego słowa w dużym zbiorze dokumentów map (String key, String value): // key: nazwa dokumentu // value: zawartość dokumentu for each word w in value: EmitIntermediate(w, 1 ); map emituje każde słowo z licznikiem częstości 8

Przykład reduce (String key, Iterator values): // key: słowo // values: lista liczników for each v in values: result += ParseInt(v); Emit (AsString(result)); reducesumuje liczniki dla konkretnego słowa Dodatkowo programista pisze kod, który wypełnia specification object nazwami plików wejściowych i wyjściowych oraz dodatkowymi parametrami Wywołuje funkcję MapReduce przekazując jej ten obiekt 9

Więcej przykładów Rozproszony grep: map emituje wiersz, jeśli pasuje on do wzorca, reduce jest funkcją identycznościową Licznik częstości odwołań do danego URL: map przetwarza logi z odwołaniami do stron webowych i emituje (URL, 1), reduce dodaje wartości dla tego samego URL i emituje (URL, licznik) Graf odwrotnych odsyłaczy: map emituje pary (target, source) dla każdego odnośnika do URL target znalezionego w stronie source, reduce konkatenuje listy i emituje (target, lista(source)) Odwrotny indeks: map parsuje każdy dokument i emituje ciąg (słowo, id dokumentu), reduce akceptuje wszystkie pary dla danego słowa i emituje (słowo, lista(id dokumentu)) 10

Implementacja Implementacja zależy od środowiska Tutaj opisano implementację dla środowiska używanego w Google: duże klastry standardowych PC połączonych Ethernetem: maszyny to zwykle dwuprocesorowe x86 z Linuksem 2-4 GB RAM sieć zwykle 100 Mb/s lub 1 Gb/s klaster zawiera setki lub tysiące maszyn, częste awarie dyski IDE, rozproszony system plików Google FS użytkownicy dostarczają zadania planiście, każde obejmuje wiele zadań, planista wybiera maszynę 11

Wykonanie Wywołania map są rozproszone między wieloma maszynami, dane wejściowe są dzielone automatycznie na M podzbiorów, każdy może być przetwarzany równolegle przez różne maszyny Wywołania reduce są rozproszone przez podział przestrzeni kluczy pośrednich na R części przy użyciu funkcji podziału, np. hash(key) mod R Liczba podziałów i funkcja podziału są dostarczane przez użytkownika 12

Implementacja cd 13

Implementacja wywołanie MapReduce MapReduce dzieli pliki wejściowe na M części po 16-64 MB. Następnie uruchamia wiele kopii programu na klastrze Jedna kopia jest wyróżniona to zarządca. Pozostałe to pracownicy, którzy dostają zadania od zarządcy. Jest M zadań map i R zadań reduce. Zarządca wybiera bezczynnych pracowników i przydziela każdemu zadanie map lub reduce. Pracownik wykonujący map czyta zawartość opowiadającej mu części, parsuje pary (klucz, wartość) i przekazuje je do funkcji map 14

Implementacja cd Pośrednie pary (klucz, wartość) produkowane przez funkcję map są buforowane w pamięci. Cyklicznie są zapisywane na lokalny dysk, w podziale na R części. Położenie tych par na lokalnym dysku jest przekazywane do zarządcy, które przekazuje je dalej do pracowników wykonujących reduce Pracownik wykonujący reduce używa RPC do czytania danych, sortuje je, grupując razem wystąpienia tego samego klucza, iteruje po posortowanych danych i dla każdej unikatowej wartości klucza przekazuje ją i zbiór odpowiadających jej wartości do funkcji reduce 15

Implementacja cd Wynik funkcji reduce jest dołączany na koniec odpowiedniego pliku wyjściowego Gdy wszystkie zadania map i reduce zakończą pracę, zarządca budzi proces użytkownika. W tym momencie następuje powrót z wywołania MapReduce Wynik jest dostępny w R plikach wyjściowych 16

Wykonanie 17

Wykonanie 18

Wykonanie 19

Wykonanie - cd Input key*value pairs Input key*value pairs... Data store 1 map Data store n map (key 1, values...) (key 2, values...) (key 3, values...) (key 1, values...) (key 2, values...) (key 3, values...) == Barrier == : Aggregates intermediate values by output key key 1, intermediate values key 2, intermediate values key 3, intermediate values reduce reduce reduce final key 1 values final key 2 values final key 3 values 20

Równoległość Funkcje map wykonują się równolegle, tworząc różne wartości pośrednie z różnych wejściowych zbiorów danych Funkcje reduce także wykonują się równolegle, każda przetwarza różny klucz Wszystkie wartości są przetwarzane niezależnie Wąskie gardło: faza reduce nie może się zacząć nim nie zakończy się faza map 21

Struktury danych zarządcy Dla każdego zadania map i reduce zarządca przechowuje stan (idle, in-progress, completed) i tożsamość maszyny wykonującej zadanie Dla każdego zakończonego zadania map zarządca przechowuje położenie i rozmiary R wytworzonych plików pośrednich. Przekazuje tę informację dalej do pracowników wykonujących zadania reduce 22

Odporność na błędy Ponieważ zadania wykonują się na tysiącach standardowych komputerów, biblioteka musi zapewnić odporność na błędy Zarządca cyklicznie wysyła ping do pracowników Zakończone zadania map w sytuacji błędu są wyznaczane do ponownego wykonania, gdyż ich wynik jest zapisany na lokalnych dyskach, czyli jest niedostępny Zakończone zadania reduce nie muszą być wykonywane ponownie, gdyż ich wynik jest zapisany w globalnym systemie plików 23

Odporność na błędy zarządca Zarządca cyklicznie mógłby zapisywać punkty kontrolne swoich struktur danych W przypadku awarii zarządcy można by wystartować nową kopię od ostatniego punktu kontrolnego W obecnej implementacji przerywa się wykonanie MapReduce Klient w razie potrzeby wznawia wykonanie MapReduce 24

Szerokość pasma sieci Szerokość pasma sieci jest kluczowym zasobem Dane wejściowe są przechowywane na lokalnych dyskach w systemie plików Google FS, który dzieli każdy plik na kawałki po 64 MB i każdy blok zapisuje w kilku kopiach na różnych maszynach Zarządca próbuje uruchomić zadanie map na maszynie zawierającej kopię danych wejściowych (lub przynajmniej w pobliżu) Dzięki temu większość danych wejściowych jest czytana z lokalnych plików i nie obciąża sieci 25

Dodatkowe zadania O całkowitym czasie wykonania operacji MapReduce w znacznym stopniu decyduje maruder maszyna, która wykonuje nienaturalnie długo jedno z ostatnich zadań map lub reduce Maruderem może być maszyna ze złym dyskiem, obciążona maszyna lub maszyna niesprawna Kiedy wykonanie MapReduce zbliża się do końca, zarządca zleca dodatkowe wykonanie pozostałych, jeszcze nie zakończonych zadań. Zadanie oznacza się jako zakończone, gdy zakończy się wykonanie jednego ze zleconych wykonań 26

Udoskonalenia Funkcja podziału. Domyślna funkcja podziału ma postać hash(key) mod R. Czasami zasadne jest użycie innej funkcji, np. gdy chcemy, żeby kluczami były URL-e i chcemy, żeby wszystkie wyniki dla jednej maszyny trafiły do tego samego pliku wyjściowego. Dlatego użytkownik może dostarczyć własną funkcję podziału, np. hash(hostname(urlkey)) mod R. Funkcja łącząca. Użytkownik może dostarczyć funkcję łączącą, która połączy wyniki (np. <the, 1>) przed przesłaniem ich siecią (combiner == mini-reducer) Pomijanie błędnych rekordów. Opcjonalnie MapReduce może pomijać rekordy, które powodują deterministyczne awarie. 27

Wydajność Wydajność zmierzono dla dwóch obliczeń: szukanie wzorca w dużym zbiorze (10 10 100- bajtowych rekordów, czyli terabajty danych) sortowanie dużego zbioru (tyle samo danych) Konfiguracja klastra 1800 maszyn, 2 GHz Intel Xeon, 4 GB RAM, dwa dyski IDE po 160 GB, 1 Gb Ethernet programy wykonywane w weekend, gdy maszyny były w większości bezczynne 28

Grep tempo transmisji w czasie Tempo przeglądania danych wejściowych rośnie wraz z dodawaniem kolejnych maszyn do wykonania MapReduce Max tempo to ok. 30 GB/s dla 1764 przydzielonych pracowników Całość zajmuje ok. 150 s (z czego ponad 1 minutę zajmuje narzut propagacja programu na maszyny pracowników i opóźnienia związane z otwarciem przez GFS 1000 plików wejściowych) 29

Sortowanie (a) normalne wykonanie (b) bez dodatkowych zadań (c) zabito 200 z 1764 zadań 30

Sortowanie cd. Dodatkowe zadania znacznie przyspieszają wykonanie obliczenia System dobrze daje sobie radę z awariami 31

Zastosowanie modelu Liczba aplikacji w Google korzystających z modelu rośnie znacząco 32

Hadoop jest projektem typu open source rozwijanym w ramach Apache Software Foundation Hadoop implementuje MapReduce, przy użyciu Hadoop Distributed File System (HDFS) Hadoop Hadoop był używany na klastrach złożonych z 2000 węzłów Odnośniki: http://hadoop.apache.org/core 33

MapReduce jest wygodną abstrakcją programowania równoległego Istotnie uprościło obliczenia dużej skali wykonywane w Google u, na klastrze standardowych maszyn z systemem plików Google FS Podsumowanie Pozwala skoncentrować się na problemie, pozostawiając bibliotece techniczne szczegóły implementacji 34