Architektura rozproszonych magazynów danych



Podobne dokumenty
Apache Hadoop. Wolna implementacja GFS, MapReduce oraz Big Table. Michał Jaszczyk

HADOOP Dariusz Ż bik

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

Zaawansowany kurs języka Python

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

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

PLNOG#10 Hadoop w akcji: analiza logów 1

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

Apache Hadoop framework do pisania aplikacji rozproszonych

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAX-RS czyli REST w Javie. Adam Kędziora

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Wprowadzenie do Apache Spark. Jakub Toczek

Hadoop : kompletny przewodnik : analiza i przechowywanie danych / Tom White. Gliwice, cop Spis treści

Map Reduce Wprowadzenie do Apache Hadoop

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Programowanie obiektowe

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

Dokumentacja do API Javy.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Z-ID-608b Bazy danych typu Big Data Big Data Databases. Specjalnościowy Obowiązkowy Polski Semestr VI

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 7: Pakiety i Interfejsy

Hadoop i Spark. Mariusz Rafało

Aplikacje RMI Lab4

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

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

Aplikacje RMI

Programowanie obiektowe

Java. Programowanie Obiektowe Mateusz Cicheński

Java Platform Micro Edition

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Języki i metody programowania Java INF302W Wykład 3 (część 1)

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe zastosowanie języka Java SE

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Strumienie i serializacja

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Google Web Toolkit Michał Węgorek ZPO 2009

Wykład 8: Obsługa Wyjątków

Java: interfejsy i klasy wewnętrzne

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wprowadzenie do Hurtowni Danych

1 Atrybuty i metody klasowe

akademia androida Składowanie danych część VI

Systemy Rozproszone - Ćwiczenie 6

Wywoływanie metod zdalnych

Programowanie obiektowe

Programowanie w języku Java. Kolekcje

Ćwiczenie 1. Przygotowanie środowiska JAVA

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Kurs programowania. Wykład 9. Wojciech Macyna

Zaawansowane aplikacje WWW - laboratorium

Programowanie rozproszone w języku Java

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Tworzenie i wykorzystanie usług sieciowych

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

BigData PILAB S.A./Krystian / Wstęp. / Co to jest BigData? / Co to jest Hadoop?

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie w języku Java. Bazy danych SQLite w Javie

Podstawy i języki programowania

SAS Access to Hadoop, SAS Data Loader for Hadoop Integracja środowisk SAS i Hadoop. Piotr Borowik

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

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

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Aplikacje w środowisku Java

CZĘŚĆ I. WARSTWA PRZETWARZANIA WSADOWEGO

Wykład 4. Klasa List Kolejki Stosy Słowniki

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Projektowanie aplikacji internetowych laboratorium

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

(Apache) CouchDB. Krzysztof Kulewski 2008

Searching for SNPs with cloud computing

CouchDB. Michał Nowikowski

Analityka danych w środowisku Hadoop. Piotr Czarnas, 27 czerwca 2017

Dawid Gierszewski Adam Hanasko

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Transkrypt:

Big data Big data, large data cloud. Rozwiązania nastawione na zastosowanie w wielkoskalowych serwisach, np. webowych. Stosowane przez Google, Facebook, itd.

Architektura rozproszonych magazynów danych Przetwarzanie danych Dane strukturalne Rozproszony magazyn Transport/routing

Architektura rozproszonych magazynów danych Google Apache Hadoop Sector Przetwarzanie danych MapReduce MapReduce Sphere UDF Dane strukturalne BigTable HBase/Hive Space Rozproszony magazyn GFS HDFS SDFS Transport/routing UDT

Apache Hadoop Składniki systemu: Distributed File System rozproszony magazyn, Map/Reduce rozproszone przetwarzanie. Open-source, napisany w języku Java. Cross-platform.

HDFS: cechy Służy do przechowywania dużych plików. Fizycznie pliki przechowywane jako bloki o rozmiarze 64 lub 128 MB. Każdy blok replikowany na wiele węzłow. Automatyczna replikacja, dynamiczna zmiana współczynnika replikacji dla poszczególnych pików.

HDFS: dostęp Przy pomocy interfejsu command-line: bin/hadoop fs -put my-file hdfs://node1:50070/foo/bar API Java lub C: Path p = new Path("hdfs://node1:50070/foo/bar"); FileSystem fs = p.getfilesystem(conf); DataOutputStream file = fs.create(p); file.writeutf("hello\n"); file.close();

Architektura HDFS

MapReduce Framework do łatwego tworzenia programów przetwarzających duże (kilka TB) zbiory danych. Przetwarzanie musi być odporne na usterki pomimo wykorzystywania niepewnych węzłów. Zwiększenie wydajności dzięki: przetwarzaniu strumieniowemu (brak wyszukiwań), tworzeniu potoków (pipelining).

MapReduce Dzieli dane wejściowe na niezależne kawałki, przetwarzane równolegle przez zadania map. Wyjście z zadań map jest sortowane przez framework i podawane na wejście zadań reduce. Framework zajmuje się szeregowaniem zadań, monitorowaniem i ponownym uruchamianiem w przypadku błędu.

MapReduce http://www.gridgain.com/images/mapreduce_small.png

Typowo, dane są przetwarzane na węźle, który je przechowuje zwiększenie przepustowości. Jeden JobTracker na węźle master i po jednym TaskTracker na węzłach slave. W minimalnej konfiguracji, aplikacja dostarcza funkcji map i reduce poprzez implementację odpowiednich interfejsów Java.

MapReduce nie tylko Java Hadoop Streaming pozwala na uruchamianie dowolnych programów (narzędzia lub skrypty shellowe) jako zadań map i reduce. Hadoop Pipes dostarcza API C++ (nie opartego na JNI) do implementacji aplikacji MapReduce.

MapReduce I/O MapReduce przetwarza wyłącznie pary <klucz, wartość>. Klasy klucz i wartość muszą być serializowalne, a więc implemetować interfejs Writable. Klasa klucz musi implementować interfejs WritableComparable (do sortowania). (input) <k1, v1> -> map -> <k2, v2> -> combine -> -> <k2, v2> -> reduce -> <k3, v3> (output)

Map/Reduce: cechy Małe elementarne zadania map i reduce: lepsze równoważenie obciążenia, szybszy powrót po błędzie/porażce. Automatyczne ponowne uruchamianie: niektóre węzły są zawsze powolne lub niestabilne. Standardowy scenariusz: te same maszyny realizują przechowywanie i przetwarzanie. Optymalizacja lokalna: zadania map są w miarę możliwości alokowane do maszyn przechowujących ich dane wejściowe.

MapReduce: interfejsy Mapper przetwarza pary wejściowe <k, v> na pary pośrednie: map(writablecomparable, Writable, OutputCollector, Reporter) Reducer redukuje zbiór wartości pośrednich o tym samym kluczu do mniejszej liczby wartości: reduce(writablecomparable, Iterator, OutputCollector, Reporter)

MapReduce: interfejsy Partitioner wprowadza podział kluczy pośrednich wartości. Domyślnie używana jest funkcja haszująca. Reporter pozwala na raportowanie postępów przez funkcje map i reduce. OutputCollector zbiera wyniki (pośrednie lub końcowe) zadań.

MapReduce: przykład Program zliczający częstotliwość występowania słów w plikach tekstowych. Wejście: katalog z plikami tekstowymi. Wyjście: plik tekstowy w formacie: słowo1 częstotliwość1 słowo2 częstotliwość2...

Zadanie map: podziel kolejne linijki na słowa (przy pomocy StringTokenizer) i wygeneruj pary <słowo, 1>. public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(longwritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.tostring(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasmoretokens()) { word.set(tokenizer.nexttoken()); output.collect(word, one); } } }

Działanie zadania map: Hello World Bye World Hello Hadoop Goodbye Hadoop < Hello, 1> < World, 1> < Bye, 1> < World, 1> < Hello, 1> < Hadoop, 1> < Goodbye, 1> < Hadoop, 1>

Zadanie reduce: sumuje wartości dla identycznych kluczy. public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasnext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }

Całość jest poskładana w funkcji main: public static void main(string[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setjobname("wordcount"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(intwritable.class); conf.setmapperclass(map.class); conf.setcombinerclass(reduce.class); conf.setreducerclass(reduce.class); conf.setinputformat(textinputformat.class); conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); }

Całość jest poskładana w funkcji main: public static void main(string[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setjobname("wordcount"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(intwritable.class); conf.setmapperclass(map.class); } conf.setcombinerclass(reduce.class); conf.setreducerclass(reduce.class); conf.setinputformat(textinputformat.class); conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); Agregacja wyjścia z poszczególnych zadań map.

Ponieważ określiliśmy klasę Reducer jako combiner, wyjście z poszczególnych map będzie wstępnie zagregowane: < Hello, 1> < World, 1> < Bye, 1> < World, 1> < Hello, 1> < Hadoop, 1> < Goodbye, 1> < Hadoop, 1> < Bye, 1> < Hello, 1> < World, 2> < Goodbye, 1> < Hadoop, 2> < Hello, 1>

HBase Baza danych oparta o Hadoop. Use it when you need random, realtime read/write access to your Big Data. Tryby pracy: Standalone w lokalnym systemie plików, Distributed korzysta z HDFS.

Hive Hurtownia danych dla Hadoop. Wykorzysuje MapReduce do przetwarzania, HDFS jako magazyn. Rozwijana przez Facebook.

Architektura rozproszonych magazynów danych Google Apache Hadoop Sector Przetwarzanie danych MapReduce MapReduce Sphere UDF Dane strukturalne BigTable HBase/Hive Space Rozproszony magazyn GFS HDFS SDFS Transport/routing UDT

Sector/Sphere Rozwiązanie podobne do Hadoop pod względem koncepcji. Napisane w C++, a nie w Javie szybsze przetwarzanie. Dodaje własny protokół transportowy UDT (Hadoop tylko TCP).

Sector/Sphere

Sector vs. Hadoop Nieco stronnicze porównanie... Benchmark Sector/Sphere vs. Hadoop Ale: wydajność przetwarzania to nie wszystko, Sporo zależy od profilu użycia.

Sector vs. Hadoop Wsparcie dla Java. Hadoop ma bogatsze API. Jakość dokumentacji. Czasami TCP działa lepiej niż UDT...