Architektura HBase: model danych HBase i mechanizm odczytu / zapisu HBase



Ten blog o architekturze HBase wyjaśnia model danych HBase i zapewnia wgląd w architekturę HBase. Wyjaśnia również różne mechanizmy HBase.

Architektura HBase

W moim poprzednim blogu pod adresem Samouczek HBase , Wyjaśniłem, czym jest HBase i jakie są jego funkcje. Wspomniałem również o studium przypadku Facebook Messengera, które pomoże Ci lepiej się łączyć. Teraz idź dalej w naszym , Wyjaśnię Ci model danych HBase i HBase Architecture.Zanim przejdziesz dalej, powinieneś również wiedzieć, że HBase jest ważną koncepcją, która stanowi integralną część do certyfikacji Big Data Hadoop.

Ważne tematy, które omówię na tym blogu o architekturze HBase to:





Najpierw zrozumiemy model danych HBase. Pomaga HBase w szybszym odczytywaniu / zapisywaniu i wyszukiwaniu.



Architektura HBase: model danych HBase

Jak wiemy, HBase jest kolumnową bazą danych NoSQL. Chociaż wygląda podobnie do relacyjnej bazy danych, która zawiera wiersze i kolumny, ale nie jest relacyjną bazą danych. Relacyjne bazy danych są zorientowane na wiersz, a baza danych HBase jest zorientowana na kolumny. Więc najpierw zrozummy różnicę między bazami danych zorientowanymi na kolumny i zorientowanymi na wiersz:

Bazy danych zorientowane wierszowo i kolumnowe:

  • Bazy danych zorientowane na wiersz przechowują rekordy tabeli w sekwencji wierszy. Natomiast bazy danych zorientowane na kolumnyprzechowuj rekordy tabeli w sekwencji kolumn, tj. wpisy w kolumnie są przechowywane w ciągłych lokalizacjach na dyskach.

Aby lepiej to zrozumieć, weźmy przykład i rozważmy poniższą tabelę.



Stół - Architektura HBase - Edureka

Jeśli ta tabela jest przechowywana w bazie danych zorientowanej na wiersz. Będzie przechowywać rekordy, jak pokazano poniżej:

jeden,Paul Walker,NAS,231,Dzielny,

2, Vin Diesel,Brazylia,520,Mustang

W bazach danych zorientowanych wierszowo dane są przechowywane na podstawie wierszy lub krotek, jak widać powyżej.

Podczas gdy bazy danych zorientowane na kolumny przechowują te dane jako:

jeden,2, Paul Walker,Vin Diesel, NAS,Brazylia, 231,520, Dzielny,Mustang

W bazach danych zorientowanych na kolumny wszystkie wartości kolumn są przechowywane razem, tak jak wartości pierwszej kolumny będą przechowywane razem, następnie wartości drugiej kolumny będą przechowywane razem, a dane w innych kolumnach są przechowywane w podobny sposób.

  • Gdy ilość danych jest bardzo duża, np. W petabajtach lub eksabajtach, stosujemy podejście kolumnowe, ponieważ dane z pojedynczej kolumny są przechowywane razem i można uzyskać do nich szybszy dostęp.
  • Podczas gdy podejście zorientowane na wiersze stosunkowo wydajnie obsługuje mniejszą liczbę wierszy i kolumn, ponieważ baza danych zorientowana na wiersze przechowuje dane w formacie strukturalnym.
  • Kiedy potrzebujemy przetworzyć i przeanalizować duży zestaw częściowo ustrukturyzowanych lub nieustrukturyzowanych danych, stosujemy podejście zorientowane na kolumny. Takich jak aplikacje zajmujące się Przetwarzanie analityczne online takie jak eksploracja danych, hurtownie danych, aplikacje, w tym analityka itp.
  • Natomiast, Przetwarzanie transakcyjne online takie jak bankowość i finanse, które obsługują ustrukturyzowane dane i wymagają właściwości transakcyjnych (właściwości ACID), stosują podejście zorientowane wierszowo.

Tabele HBase zawierają następujące składniki, które pokazano na poniższym obrazku:

  • Tabele : Dane są przechowywane w formacie tabeli w HBase. Ale tutaj tabele są w formacie kolumnowym.
  • Rząd Klucz : Klawisze wierszy służą do wyszukiwania rekordów, co przyspiesza wyszukiwanie. Byłbyś ciekawy, jak to zrobić? Wyjaśnię to w części poświęconej architekturze na tym blogu.
  • Kolumna Rodziny : Różne kolumny są łączone w rodzinę kolumn. Te rodziny kolumn są przechowywane razem, co przyspiesza proces wyszukiwania, ponieważ dane należące do tej samej rodziny kolumn są dostępne razem w jednym wyszukiwaniu.
  • Kolumna Kwalifikatory : Nazwa każdej kolumny jest nazywana jej kwalifikatorem kolumny.
  • Komórka : Dane są przechowywane w komórkach. Dane są zrzucane do komórek, które są szczegółowo identyfikowane za pomocą kwalifikatorów klucza wiersza i kolumny.
  • Znak czasu : Datownik to połączenie daty i godziny. Ilekroć dane są przechowywane, są one przechowywane wraz ze swoim znacznikiem czasu. Ułatwia to wyszukiwanie określonej wersji danych.

W prostszy i bardziej zrozumiały sposób możemy powiedzieć, że HBase składa się z:

jak przekonwertować double na int
  • Zestaw stołów
  • Każda tabela z rodzinami kolumn i wierszami
  • Klucz wiersza działa jako klucz podstawowy w HBase.
  • Każdy dostęp do tabel HBase używa tego klucza podstawowego
  • Każdy kwalifikator kolumny obecny w HBase oznacza atrybut odpowiadający obiektowi znajdującemu się w komórce.

Teraz, gdy wiesz już o modelu danych HBase, zobaczmy, jak ten model danych jest zgodny z architekturą HBase i sprawia, że ​​nadaje się do dużej pamięci masowej i szybszego przetwarzania.

Architektura HBase: składniki architektury HBase

HBase ma trzy główne składniki, tj. Serwer HMaster , Serwer regionów HBase, regiony i Zookeeper .

Poniższy rysunek wyjaśnia hierarchię Architektury HBase. O każdym z nich porozmawiamy indywidualnie.


Teraz, zanim przejdziemy do HMaster, zrozumiemy Regiony, ponieważ wszystkie te serwery (HMaster, Region Server, Zookeeper) są rozmieszczone w celu koordynowania i zarządzania regionami oraz wykonywania różnych operacji wewnątrz regionów. Byłbyś więc ciekawy, czym są regiony i dlaczego są tak ważne?

Architektura HBase: Region

Region zawiera wszystkie wiersze między klawiszem początkowym i końcowym przypisanym do tego regionu. Tabele HBase można podzielić na kilka regionów w taki sposób, że wszystkie kolumny rodziny kolumn są przechowywane w jednym regionie. Każdy region zawiera wiersze w posortowanej kolejności.

Wiele regionów jest przypisanych do Region Server , który jest odpowiedzialny za obsługę, zarządzanie, wykonywanie operacji odczytu i zapisu w tym zbiorze regionów.

Podsumowując w prostszy sposób:

  • Tabelę można podzielić na kilka regionów. Region to posortowany zakres wierszy przechowujących dane między kluczem początkowym i końcowym.
  • Region ma domyślny rozmiar 256 MB, który można skonfigurować w zależności od potrzeb.
  • Grupa regionów jest obsługiwana klientom przez serwer regionu.
  • Region Server może obsługiwać klienta w około 1000 regionów.

Zaczynając od początku hierarchii, chciałbym najpierw wyjaśnić Ci o HMaster Server, który działa podobnie jak NameNode w HDFS . Następnie, przechodząc w dół w hierarchii, przeprowadzę Cię przez ZooKeeper i Region Server.

Architektura HBase: HMaster

Jak na poniższym obrazku, możesz zobaczyć, że HMaster obsługuje zbiór Region Server, który znajduje się w DataNode. Zrozummy, jak to robi HMaster.

  • HBase HMaster wykonuje operacje DDL (tworzenie i usuwanie tabel) i przypisuje regiony do serwerów Region, jak widać na powyższym obrazku.
  • Koordynuje i zarządza serwerem regionu (podobnie jak NameNode zarządza DataNode w HDFS).
  • Przypisuje regiony do serwerów regionalnych podczas uruchamiania i ponownie przypisuje regiony do serwerów regionalnych podczas odzyskiwania i równoważenia obciążenia.
  • Monitoruje wszystkie instancje Region Server w klastrze (z pomocą Zookeepera) i wykonuje czynności przywracania, gdy którykolwiek Region Server jest wyłączony.
  • Zapewnia interfejs do tworzenia, usuwania i aktualizowania tabel.

HBase ma rozproszone i ogromne środowisko, w którym sam HMaster nie wystarczy do zarządzania wszystkim. Zastanawiasz się więc, co pomaga HMaster w zarządzaniu tym ogromnym środowiskiem? I tu pojawia się ZooKeeper. Po zrozumieniu, jak HMaster zarządza środowiskiem HBase, zrozumiemy, jak Zookeeper pomaga HMaster w zarządzaniu środowiskiem.

jak używać klasy skanera

Architektura HBase: ZooKeeper - The Coordinator

Poniższy obraz wyjaśnia mechanizm koordynacji ZooKeepera.

  • Zookeeper działa jak koordynator w środowisku rozproszonym HBase. Pomaga w utrzymywaniu stanu serwera wewnątrz klastra poprzez komunikację poprzez sesje.
  • Każdy serwer regionalny wraz z serwerem HMaster wysyła ciągłe bicie serca w regularnych odstępach czasu do Zookeepera i sprawdza, który serwer jest aktywny i dostępny, jak wspomniano na powyższym obrazku. Zapewnia również powiadomienia o awariach serwera, dzięki czemu można wykonać środki naprawcze.
  • Nawiązując do powyższego obrazu, widać, że istnieje nieaktywny serwer, który działa jako kopia zapasowa dla aktywnego serwera. Jeśli aktywny serwer ulegnie awarii, przychodzi na ratunek.
  • Aktywny HMaster wysyła bicie serca do Zookeepera, podczas gdy nieaktywny HMaster nasłuchuje powiadomienia wysłanego przez aktywnego HMastera. Jeśli aktywny HMaster nie wyśle ​​pulsu, sesja jest usuwana, a nieaktywny HMaster staje się aktywny.
  • Jeśli serwer regionu nie wyśle ​​pulsu, sesja wygasa i wszyscy nasłuchujący są o tym powiadamiani. Następnie HMaster wykonuje odpowiednie działania naprawcze, które omówimy w dalszej części tego bloga.
  • Zookeeper utrzymuje również ścieżkę do .META Server, która pomaga każdemu klientowi w wyszukiwaniu dowolnego regionu. Klient musi najpierw sprawdzić na serwerze .META, do którego serwera regionu należy dany region i uzyskać ścieżkę do tego serwera regionu.

Kiedy mówiłem o .META Server, pozwól mi najpierw wyjaśnić, czym jest serwer .META? Dzięki temu możesz łatwo powiązać ze sobą pracę ZooKeepera i .META Server. Później, kiedy wyjaśnię ci mechanizm wyszukiwania HBase na tym blogu, wyjaśnię, jak te dwa elementy działają we współpracy.

Architektura HBase: Meta Table

  • Stół META to specjalna tabela katalogowa HBase. Utrzymuje listę wszystkich serwerów regionów w systemie przechowywania HBase, jak widać na powyższym obrazku.
  • Patrząc na figurę, którą widzisz, .META plik zachowuje tabelę w postaci kluczy i wartości. Klucz reprezentuje klucz początkowy regionu i jego identyfikator, podczas gdy wartość zawiera ścieżkę do serwera regionu.

Jak już wspomniałem, Region Server i jego funkcje, gdy wyjaśniałem Ci Regiony, teraz przechodzimy w dół hierarchii i skupię się na komponencie Region Server i jego funkcjach. Później omówię mechanizm wyszukiwania, czytania, pisania i rozumiem, jak wszystkie te komponenty ze sobą współpracują.

Architektura HBase: Składniki serwera regionu

Poniższy rysunek przedstawia komponenty serwera regionu. Teraz omówię je osobno.

Region Server obsługuje różne regiony działające na wierzchu . Składniki serwera regionu to:

  • WAL: Jak można wywnioskować z powyższego obrazu, dziennik zapisu z wyprzedzeniem (WAL) jest plikiem dołączonym do każdego serwera regionu w środowisku rozproszonym. WAL przechowuje nowe dane, które nie zostały utrwalone ani wprowadzone do trwałego przechowywania. Jest używany w przypadku niepowodzenia odtworzenia zbiorów danych.
  • Blokuj pamięć podręczną: Z powyższego obrazu wyraźnie widać, że Block Cache znajduje się w górnej części Region Server. Przechowuje w pamięci często odczytywane dane. Jeśli dane w BlockCache są używane najmniej niedawno, wówczas te dane są usuwane z BlockCache.
  • MemStore: To jest pamięć podręczna zapisu. Przechowuje wszystkie przychodzące dane przed umieszczeniem ich na dysku lub w pamięci stałej. Dla każdej rodziny kolumn w regionie istnieje jeden MemStore. Jak widać na ilustracji, istnieje wiele MemStores dla regionu, ponieważ każdy region zawiera wiele rodzin kolumn. Dane są sortowane w porządku leksykograficznym przed wysłaniem ich na dysk.
  • HFile: Z powyższego rysunku widać, że HFile jest przechowywany na HDFS. W ten sposób przechowuje rzeczywiste komórki na dysku. MemStore zatwierdza dane do HFile, gdy rozmiar MemStore przekracza.

Teraz, gdy znamy główne i pomniejsze komponenty Architektury HBase, wyjaśnię mechanizm i ich wspólny wysiłek w tym zakresie. Niezależnie od tego, czy chodzi o czytanie, czy pisanie, najpierw musimy szukać, skąd czytać lub gdzie zapisać plik. Zrozummy więc ten proces wyszukiwania, ponieważ jest to jeden z mechanizmów, które sprawiają, że HBase jest bardzo popularna.

Architektura HBase: Jak wyszukiwanie jest inicjowane w HBase?

Jak wiesz, Zookeeper przechowuje lokalizację tabeli META. Za każdym razem, gdy klient zbliża się z żądaniem odczytu lub zapisu do bazy danych HBase, występuje następująca operacja:

  1. Klient pobiera lokalizację tabeli META z ZooKeeper.
  2. Następnie klient żąda lokalizacji serwera regionu odpowiedniego klucza wiersza z tabeli META, aby uzyskać do niego dostęp. Klient buforuje te informacje wraz z lokalizacją tabeli META.
  3. Następnie uzyska lokalizację wiersza, wysyłając żądanie z odpowiedniego serwera regionu.

Na potrzeby przyszłych odniesień klient używa swojej pamięci podręcznej, aby pobrać lokalizację tabeli META i poprzednio odczytany serwer regionu klucza wiersza. Wtedy klient nie będzie odwoływał się do tabeli META, dopóki nie wystąpi błąd, ponieważ region zostanie przesunięty lub przeniesiony. Następnie ponownie zwróci się do serwera META i zaktualizuje pamięć podręczną.

Jak za każdym razem, klienci nie tracą czasu na pobieranie lokalizacji Region Server z META Server, dzięki czemu oszczędza to czas i przyspiesza proces wyszukiwania. Teraz powiem ci, jak odbywa się pisanie w HBase. Jakie komponenty są w to zaangażowane i jak są zaangażowane?

Architektura HBase: HBase Write Mechanizm

Poniższy obraz wyjaśnia mechanizm zapisu w HBase.

Mechanizm zapisu przechodzi przez następujący proces sekwencyjnie (patrz powyższy obrazek):

Krok 1: Ilekroć klient ma żądanie zapisu, zapisuje dane do WAL (dziennik zapisu z wyprzedzeniem).

  • Zmiany są następnie dołączane na końcu pliku WAL.
  • Ten plik WAL jest utrzymywany na każdym serwerze regionu, a serwer regionu używa go do odzyskiwania danych, które nie zostały zapisane na dysku.

Krok 2: Po zapisaniu danych w WAL są one kopiowane do MemStore.

Krok 3: Po umieszczeniu danych w MemStore klient otrzymuje potwierdzenie.

Krok 4: Kiedy MemStore osiągnie próg, zrzuca lub zatwierdza dane do HFile.

Przyjrzyjmy się teraz głębiej i zrozummy, w jaki sposób MemStore przyczynia się do procesu pisania i jakie są jego funkcje?

HBase Write Mechanizm- MemStore

  • MemStore zawsze aktualizuje przechowywane w nim dane w porządku leksykograficznym (sekwencyjnie w sposób słownikowy) jako posortowane KeyValues. Istnieje jeden MemStore dla każdej rodziny kolumn, a zatem aktualizacje są przechowywane w sposób posortowany dla każdej rodziny kolumn.
  • Kiedy MemStore osiągnie próg, zrzuca wszystkie dane do nowego HFile w posortowany sposób. Ten plik HFile jest przechowywany w formacie HDFS. HBase zawiera wiele HFiles dla każdej rodziny kolumn.
  • Z biegiem czasu liczba HFile rośnie, gdy MemStore zrzuca dane.
  • MemStore zapisuje również ostatnio zapisany numer sekwencyjny, dzięki czemu zarówno Master Server, jak i MemStore wiedzą, co zostało dotychczas popełnione i od czego zacząć. Gdy region się uruchamia, odczytywany jest ostatni numer kolejny i od tego numeru rozpoczynają się nowe edycje.

Jak mówiłem kilka razy, HFile jest głównym trwałym magazynem w architekturze HBase. W końcu wszystkie dane są przekazywane do HFile, czyli trwałego przechowywania HBase. Dlatego spójrzmy na właściwości HFile, które przyspieszają wyszukiwanie podczas czytania i pisania.

Architektura HBase: HBase Write Mechanizm- HFile

  • Zapisy są umieszczane kolejno na dysku. Dlatego ruch głowicy odczytu i zapisu dysku jest znacznie mniejszy. To sprawia, że ​​mechanizm pisania i wyszukiwania jest bardzo szybki.
  • Indeksy HFile są ładowane do pamięci za każdym razem, gdy otwierany jest HFile. Pomaga to w znalezieniu rekordu w jednym wyszukiwaniu.
  • Trailer jest wskaźnikiem wskazującym na metoblok HFile. Jest zapisywany na końcu zatwierdzonego pliku. Zawiera informacje o filtrach sygnatur czasowych i bloom.
  • Bloom Filter pomaga w wyszukiwaniu par klucz-wartość, pomija plik, który nie zawiera wymaganego klucza wiersza. Znacznik czasu pomaga również w wyszukiwaniu wersji pliku, pomaga w pomijaniu danych.

Po poznaniu mechanizmu zapisu i roli różnych komponentów w przyspieszaniu pisania i wyszukiwania. Wyjaśnię ci, jak działa mechanizm odczytu w architekturze HBase? Następnie przejdziemy do mechanizmów zwiększających wydajność HBase, takich jak zagęszczanie, dzielenie regionów i odzyskiwanie.

Architektura HBase: Przeczytaj mechanizm

Jak omówiono w naszym mechanizmie wyszukiwania, najpierw klient pobiera lokalizację serwera regionu z .META Server, jeśli klient nie ma go w swojej pamięci podręcznej. Następnie przechodzi przez kolejne kroki w następujący sposób:

  • W celu odczytania danych skaner najpierw szuka komórki Row w Block cache. Tutaj przechowywane są wszystkie ostatnio odczytane pary klucz-wartość.
  • Jeśli Scanner nie znajdzie wymaganego wyniku, przenosi się do MemStore, ponieważ wiemy, że jest to pamięć podręczna zapisu. Tam wyszukuje ostatnio napisane pliki, które nie zostały jeszcze zrzucone do HFile.
  • W końcu użyje filtrów bloom i pamięci podręcznej bloków, aby załadować dane z HFile.

Do tej pory omówiłem mechanizm wyszukiwania, odczytu i zapisu HBase. Teraz przyjrzymy się mechanizmowi HBase, który umożliwia szybkie wyszukiwanie, czytanie i pisanie w HBase. Najpierw zrozumiemy Zagęszczanie , który jest jednym z tych mechanizmów.

Architektura HBase: Zagęszczanie

HBase łączy HFiles w celu zmniejszenia ilości miejsca na dane i zmniejszenia liczby poszukiwań dysku potrzebnych do odczytu. Ten proces nazywa się zagęszczenie . Kompresja wybiera kilka HFiles z regionu i łączy je. Jak widać na powyższym obrazku, istnieją dwa rodzaje zagęszczania.

  1. Niewielkie zagęszczenie : HBase automatycznie wybiera mniejsze HFiles i ponownie przypisuje je do większych HFiles, jak pokazano na powyższym obrazku. Nazywa się to drobnym zagęszczeniem. Wykonuje sortowanie przez scalanie w celu przypisania mniejszych plików HFiles do większych plików HFiles. Pomaga to w optymalizacji przestrzeni magazynowej.
  2. Duże zagęszczenie: Jak pokazano na powyższym obrazku, w przypadku dużego zagęszczenia HBase łączy i ponownie przypisuje mniejsze pliki HFile regionu do nowego pliku HFile. W tym procesie te same rodziny kolumn są umieszczane razem w nowym pliku HFile. W tym procesie upuszcza usunięte i wygasłe komórki. Zwiększa wydajność odczytu.

Ale podczas tego procesu dyski wejścia-wyjścia i ruch sieciowy mogą zostać przeciążone. Jest to znane jako napisz wzmocnienie . Tak więc jest zwykle planowany w okresach niskiego obciążenia szczytowego.

Teraz kolejny proces optymalizacji wydajności, który omówię, to Region Split . Jest to bardzo ważne dla równoważenia obciążenia.

Architektura HBase: Region Split

Poniższy rysunek ilustruje mechanizm podziału regionów.

Za każdym razem, gdy region staje się duży, jest dzielony na dwa regiony podrzędne, jak pokazano na powyższym rysunku. Każdy region reprezentuje dokładnie połowę regionu macierzystego. Następnie ten podział jest zgłaszany do HMaster. Jest to obsługiwane przez ten sam serwer regionalny, dopóki HMaster nie przydzieli ich do nowego serwera regionu w celu równoważenia obciążenia.

Idąc dalej w dół, na koniec wyjaśnię, w jaki sposób HBase odzyskuje dane po awarii. Jak wiemy Odzyskiwanie po awarii jest bardzo ważną cechą HBase, dlatego daj nam znać, jak HBase odzyskuje dane po awarii.

Architektura HBase: Awaria HBase i odzyskiwanie danych

  • W przypadku awarii serwera regionu ZooKeeper powiadamia HMaster o awarii.
  • Następnie HMaster rozprowadza i przydziela regiony uszkodzonego Region Server do wielu aktywnych Regionów Server. Aby odzyskać dane z MemStore uszkodzonego serwera regionu, HMaster rozprowadza WAL do wszystkich serwerów regionu.
  • Każdy serwer regionu ponownie wykonuje WAL, aby zbudować MemStore dla rodziny kolumn tego regionu, który uległ awarii.
  • Dane są zapisywane w porządku chronologicznym (w odpowiednim czasie) w WAL. Dlatego ponowne wykonanie tego WAL oznacza dokonanie wszystkich zmian, które zostały wprowadzone i zapisane w pliku MemStore.
  • Tak więc, po wykonaniu WAL przez wszystkie serwery regionu, odzyskiwane są dane MemStore dla całej rodziny kolumn.

Mam nadzieję, że ten blog pomógłby Ci w zrozumieniu modelu danych HBase i architektury HBase. Mam nadzieję, że ci się podobało. Teraz możesz odnieść się do funkcji HBase (które wyjaśniłem w moim poprzednim Samouczek HBase blog) z architekturą HBase i zrozumieć, jak to działa wewnętrznie. Teraz, gdy znasz już teoretyczną część HBase, powinieneś przejść do części praktycznej. Mając to na uwadze, nasz następny blog będzie wyjaśniać próbkę HBase POC .

Teraz, gdy zrozumiałeś architekturę HBase, sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka Big Data Hadoop Certification Training pomaga uczniom stać się ekspertami w dziedzinie HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop, wykorzystując przypadki użycia w czasie rzeczywistym w domenie handlu detalicznego, mediów społecznościowych, lotnictwa, turystyki, finansów.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.

co to jest kurs nauki o danych