Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector...
Transcript of Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector...
![Page 1: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/1.jpg)
Big data
• Big data, large data cloud.
• Rozwiązania nastawione na zastosowanie w wielkoskalowych serwisach, np. webowych.
• Stosowane przez Google, Facebook, itd.
![Page 2: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/2.jpg)
Architektura rozproszonych magazynów danych
Przetwarzanie danych
Dane strukturalne
Rozproszony magazyn
Transport/routing
![Page 3: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/3.jpg)
Architektura rozproszonych magazynów danych
Dane strukturalne
Rozproszony magazyn
Transport/routing
Google Apache Hadoop Sector
MapReduce MapReduce Sphere UDF
BigTable HBase/Hive Space
GFS HDFS SDFS
— — UDT
Przetwarzanie danych
![Page 4: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/4.jpg)
Apache Hadoop
• Składniki systemu:
• Distributed File System – rozproszony magazyn,
• Map/Reduce – rozproszone przetwarzanie.
• Open-source, napisany w języku Java.
• Cross-platform.
![Page 5: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/5.jpg)
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.
![Page 6: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/6.jpg)
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();
![Page 7: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/7.jpg)
Architektura HDFS
![Page 8: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/8.jpg)
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).
![Page 9: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/9.jpg)
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.
![Page 10: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/10.jpg)
MapReduce
http://www.gridgain.com/images/mapreduce_small.png
![Page 11: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/11.jpg)
• 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.
![Page 12: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/12.jpg)
• 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 – nie tylko Java
![Page 13: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/13.jpg)
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)
![Page 14: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/14.jpg)
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.
![Page 15: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/15.jpg)
• 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
![Page 16: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/16.jpg)
• 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: interfejsy
![Page 17: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/17.jpg)
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 ...
![Page 18: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/18.jpg)
• 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); } } }
![Page 19: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/19.jpg)
• Działanie zadania map:
Hello World Bye World
< Hello, 1> < World, 1> < Bye, 1> < World, 1>
Hello Hadoop Goodbye Hadoop
< Hello, 1> < Hadoop, 1> < Goodbye, 1> < Hadoop, 1>
![Page 20: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/20.jpg)
• 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)); } }
![Page 21: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/21.jpg)
• 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); }
![Page 22: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/22.jpg)
• 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.
![Page 23: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/23.jpg)
• 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>
![Page 24: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/24.jpg)
• 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.
HBase
![Page 25: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/25.jpg)
Hive
• Hurtownia danych dla Hadoop.
• Wykorzysuje MapReduce do przetwarzania, HDFS jako magazyn.
• Rozwijana przez Facebook.
![Page 26: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/26.jpg)
Architektura rozproszonych magazynów danych
Dane strukturalne
Rozproszony magazyn
Transport/routing
Google Apache Hadoop Sector
MapReduce MapReduce Sphere UDF
BigTable HBase/Hive Space
GFS HDFS SDFS
— — UDT
Przetwarzanie danych
![Page 27: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/27.jpg)
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).
![Page 28: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/28.jpg)
Sector/Sphere
![Page 29: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/29.jpg)
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.
![Page 30: Big datahome.agh.edu.pl/~wojnicki/wiki/_media/pl:ztb:ztb-hadoop.pdf · 2013-11-08 · Hadoop Sector MapReduce MapReduce Sphere UDF BigTable HBase/Hive Space GFS HDFS SDFS — —](https://reader033.fdocuments.net/reader033/viewer/2022060514/5f85a6abf0f156798d60bf2f/html5/thumbnails/30.jpg)
Sector vs. Hadoop
• Wsparcie dla Java.
• Hadoop ma bogatsze API.
• Jakość dokumentacji.
• Czasami TCP działa lepiej niż UDT...