Hadoop - platforma do eksploracji Big Data

Klaster HDFS ma architekturę master-slave z wieloma namenodes (master), dla obejścia uszkodzenia, i pewną liczbą datanodes (slave). Namenode zarządza drzewem systemu plików (namespace) i metadanymi dla wszystkich plików i katalogów. Są one utrzymywane na lokalnym dysku jako dwa pliki: namespace image i edit log. Namenode śledzi wszystkie datanodes, na których zlokalizowane są wszystkie bloki danego pliku.

Datanodes przechowują i udostępniają bloki zgodnie z poleceniami klienta i powiadamiają namenode o przechowywanych/zapamiętywanych blokach. Z punktu widzenia niezawodności namenode ma cechę SPOF (single point of failure) - czyli jest krytycznym komponentem systemu, którego uszkodzenie unieruchamia cały system - i dlatego, w celu zniwelowania tej cechy, namenodes zapisują swój stan w wielu systemach plików.

Zobacz również:

  • IDC CIO Summit – potencjał drzemiący w algorytmach
  • Kwanty od OVHCloud dla edukacji

MapReduce

MapReduce jest modelem programowania przetwarzania równoległego. Dzieli przetwarzanie na dwie fazy: map i reduce. W fazie map zadania rozdzielane są między różne węzły w rozproszonym klastrze. W fazie reduce, wyniki przetwarzania zestawiane są w pojedynczą formę wyjściową oryginalnego, dużego problemu. Fazy mają odpowiednie funkcje map i reduce zdefiniowane przez programistę.

Zadanie MapReduce jest jednostką składającą się z danych wejściowych, programu MapReduce i danych konfiguracyjnych. Hadoop wykonuje takie zadanie dzieląc je na dwa: map task i reduce task. Map task wywołuje zdefiniowane przez użytkownika funkcje map, które zajmują się przetwarzaniem wartości kluczowych. Kiedy wymagania co do przetwarzania stają się bardziej złożone, najlepszą strategią jest dodawanie większej liczby zadań MapReduce, zamiast komplikowania funkcji map i reduce.

W tworzeniu programów MapReduce pierwszym zadaniem programisty jest ustawienie i skonfigurowanie środowiska programistycznego Hadoop, po czym programista może utworzyć dwie oddzielne funkcje map i reduce. Następnie tworzony jest program sterujący do uruchamiania zadania na podzbiorze danych ze środowiska programistycznego, gdzie debugger może zidentyfikować potencjalne problemy. Z chwilą, kiedy zadanie MapReduce działa jak oczekiwano, można je uruchomić na klastrze, ujawniającym ewentualne inne problemy do usunięcia.

Hadoop - platforma do eksploracji Big Data

Przykładowy klaster Hadoop

Procesem wykonania zadania MapReduce sterują dwa typy węzłów: węzeł jobtracker i węzły tasktracker. Jobtracker koordynuje wszystkie ścieżki zadania przygotowując plan wykonania zadań dla tasktracker. Ten z kolei dostarcza zwrotnie do jobtracker raporty o postępie zadania. Jeżeli zadanie nie wykona się poprawnie, jobtracker zaplanuje je dla innego tasktracker.

Hadoop dzieli dane wejściowe na segmenty o nazwie splits. Dla każdego split tworzone jest jedno map task, a Hadoop uruchamia funkcje map dla każdego rekordu w split. Zazwyczaj optymalny rozmiar split pokrywa się z rozmiarem bloku HDFS (domyślnie 64 MB), ponieważ jest to największy rozmiar, jaki jest gwarantowany do zapamiętania na pojedynczym węźle. Większa liczba bloków może spowalniać proces, ponieważ niektóre split będą musiały być transmitowane przez sieć do węzła realizującego map task.

Wyjście map task jest krokiem pośrednim, zapisywanym na dysku lokalnym. Reduce task przejmuje dane wyjściowe map task, w celu utworzenia finalnych danych wyjściowych MapReduce i zapamiętania go w FDFS. Jeżeli map task zakończy się niepowodzeniem przed wydaniem danych wyjściowych do reduce task, Hadoop może ponownie uruchomić go na innym węźle.

Bezpieczeństwo danych

Agregacja danych w zunifikowanym środowisku Hadoop zwiększa ryzyko ich narażenia. Konwencjonalny sposób zapewnienia bezpieczeństwa danych to stosowanie szyfrowania i kontroli dostępu.

Z perspektywy tradycyjnych baz danych, szyfrowanie dysków na poziomie systemu operacyjnego jest zazwyczaj wystarczające. HDFS zapewnia pełne szyfrowanie dysków, zapobiegające niektórym problemom bezpieczeństwa.


TOP 200