Database
 sql >> Baza danych >  >> RDS >> Database

Zrozumienie systemu wejściowego i wyjściowego Hadoop

W przeciwieństwie do jakiegokolwiek podsystemu I/O, Hadoop zawiera również zestaw prymitywów. Te prymitywne rozważania, chociaż mają charakter ogólny, oczywiście wiążą się z systemem Hadoop IO, a także mają pewne specjalne konotacje. Hadoop zajmuje się wieloterabajtowymi zestawami danych; szczególna uwaga dotycząca tych prymitywów da wyobrażenie, jak Hadoop obsługuje wprowadzanie i wyprowadzanie danych. W tym artykule szybko przeglądamy te prymitywy, aby dać perspektywę na system wejścia-wyjścia Hadoop.

Integralność danych

Integralność danych oznacza, że ​​dane powinny pozostać dokładne i spójne we wszystkich operacjach przechowywania, przetwarzania i wyszukiwania. Aby zapewnić, że żadne dane nie zostaną utracone ani uszkodzone podczas utrwalania i przetwarzania, Hadoop utrzymuje rygorystyczne ograniczenia integralności danych. Każda operacja odczytu/zapisu odbywa się na dyskach, dlatego sieć jest podatna na błędy. A ilość danych obsługiwanych przez Hadoop tylko pogarsza sytuację. Zwykłym sposobem wykrywania uszkodzonych danych jest użycie sum kontrolnych. suma kontrolna jest obliczana, gdy dane po raz pierwszy wchodzą do systemu i są przesyłane przez kanał podczas procesu pobierania. Pobierający koniec ponownie oblicza sumę kontrolną i dopasowuje się do otrzymanych. Jeśli pasuje dokładnie, to dane uznane za wolne od błędów, w przeciwnym razie zawierają błąd. Ale problem polega na tym – co, jeśli wysłana suma kontrolna jest uszkodzona? Jest to bardzo mało prawdopodobne, ponieważ jest to niewielka ilość danych, ale nie jest to niezaprzeczalna możliwość. Do złagodzenia sytuacji można użyć odpowiedniego sprzętu, takiego jak pamięć ECC.

To tylko wykrywanie. Dlatego w celu naprawienia błędu stosowana jest inna technika, zwana CRC (Cyclic Redundancy Check).

Hadoop idzie dalej i tworzy odrębną sumę kontrolną dla każdych 512 (domyślnych) bajtów danych. Ponieważ CRC-32 ma tylko 4 bajty, obciążenie pamięci masowej nie stanowi problemu. Wszystkie dane, które wchodzą do systemu, są weryfikowane przez węzły danych przed przekazaniem ich do przechowywania lub dalszego przetwarzania. Dane wysyłane do potoku danych są weryfikowane za pomocą sum kontrolnych, a wszelkie wykryte uszkodzenia są natychmiast zgłaszane klientowi za pomocą ChecksumException . Klient odczytany z węzła danych również przechodzi przez to samo ćwiczenie. Węzły danych prowadzą dziennik weryfikacji sumy kontrolnej, aby śledzić zweryfikowany blok. Dziennik jest aktualizowany przez węzeł danych po otrzymaniu od klienta sygnału powodzenia weryfikacji bloku. Ten rodzaj statystyk pomaga w utrzymaniu złych dysków na dystans.

Poza tym okresowa weryfikacja w magazynie blokowym odbywa się za pomocą DataBlockScannera działa wraz z wątkiem datanode w tle. Chroni to dane przed uszkodzeniem na fizycznym nośniku pamięci.

Hadoop przechowuje kopię lub repliki danych. Służy to w szczególności do odzyskiwania danych po ogromnym uszkodzeniu. Gdy klient wykryje błąd podczas odczytywania bloku, natychmiast zgłasza do datanode informację o uszkodzonym bloku z namenode, zanim wyrzuci ChecksumException . Następnie nazwanode oznacza go jako zły blok i planuje dalsze odniesienia do bloku do jego replik. W ten sposób replika jest utrzymywana z innymi replikami, a zaznaczony uszkodzony blok jest usuwany z systemu.

Dla każdego pliku utworzonego w Hadoop LocalFileSystem , ukryty plik o tej samej nazwie w tym samym katalogu z rozszerzeniem ..crc jest tworzone. Ten plik przechowuje sumę kontrolną każdego fragmentu danych (512 bajtów) w pliku. Utrzymanie metadanych pomaga w wykrywaniu błędów odczytu przed wyrzuceniem ChecksumException przez LocalFileSystem .

Kompresja

Mając na uwadze ilość danych, którymi zajmuje się Hadoop, kompresja nie jest luksusem, ale wymogiem. Istnieje wiele oczywistych zalet kompresji plików prawidłowo stosowanej przez Hadoop. Oszczędza wymagania dotyczące pamięci masowej i jest niezbędną funkcją, aby przyspieszyć transmisję danych w sieci i na dyskach. Istnieje wiele narzędzi, technik i algorytmów powszechnie używanych przez Hadoop. Wiele z nich jest dość popularnych i od wieków jest używanych w kompresji plików. Na przykład często używane są gzip, bzip2, LZO, zip i tak dalej.

Serializacja

Proces, który przekształca obiekty strukturalne w strumień bajtów, nazywa się serializacją . Jest to szczególnie wymagane w przypadku transmisji danych w sieci lub utrwalania nieprzetworzonych danych na dyskach. Deserializacja to tylko proces odwrotny, w którym strumień bajtów jest przekształcany w obiekt strukturalny. Jest to szczególnie wymagane przy implementacji obiektów surowych bajtów. Dlatego nie jest zaskakujące, że przetwarzanie rozproszone wykorzystuje to w kilku różnych obszarach:komunikacji między procesami i trwałości danych.

Hadoop używa RPC (Remote Procedure Call) do nawiązywania komunikacji między procesami między węzłami. W związku z tym protokół RPC wykorzystuje proces serializacji i deserializacji do renderowania komunikatu do strumienia bajtów i na odwrót oraz wysyłania go przez sieć. Jednak proces musi być wystarczająco kompaktowy, aby jak najlepiej wykorzystać przepustowość sieci, a także szybki, interoperacyjny i elastyczny, aby dostosować się do aktualizacji protokołów w czasie.

Hadoop ma swój własny, kompaktowy i szybki format serializacji, Zapisywalne , których programy MapReduce używają do generowania kluczy i typów wartości.

Struktura danych plików

Istnieje kilka kontenerów wysokiego poziomu, które opracowują wyspecjalizowaną strukturę danych w Hadoop do przechowywania specjalnych typów danych. Na przykład, aby prowadzić dziennik binarny, SequenceFile kontener zapewnia strukturę danych do utrwalania binarnych par klucz-wartość. Następnie możemy użyć klucza, takiego jak znacznik czasu reprezentowany przez LongWritable i wartość według Do zapisu , który odnosi się do zarejestrowanej ilości.

Istnieje inny kontener, posortowana pochodna SequenceFile , o nazwie MapFile . Zapewnia indeks do wygodnego wyszukiwania według klucza.

Te dwa kontenery są interoperacyjne i można je konwertować do siebie i od siebie.

Wniosek

To tylko krótki przegląd systemu wejścia/wyjścia Hadoop. W kolejnych artykułach zagłębimy się w wiele zawiłych szczegółów. Zrozumienie systemu wejścia/wyjścia Hadoop nie jest trudne, jeśli ma się ogólną wiedzę na temat systemów I/O. Hadoop po prostu dołożył do niego trochę więcej energii, aby nadążać za jego rozproszoną naturą, która działa na ogromną skalę danych. To wszystko.

Odniesienie

Biały, Tom. Hadoop, The Definitive Guide, 2009 . Publikacje O’Reilly.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wymiary wymiarów:spojrzenie na najpopularniejsze typy tabel wymiarowych w hurtowni danych

  2. Co to jest baza danych Greenplum? Wprowadzenie do bazy danych Big Data

  3. NextForm v3:Pięć opcji migracji danych i baz danych

  4. Typowe wyrażenia tabelowe:kiedy i jak ich używać

  5. Niektóre DOWOLNE przekształcenia zbiorcze są uszkodzone