HBase Architecture: przypadki użycia, komponenty i model danych

⚡ Inteligentne podsumowanie

Architektura HBase składa się z czterech skoordynowanych komponentów — HMaster, serwerów regionów, ZooKeeper i HDFS — które przechowują dane w modelu zorientowanym kolumnowo, dzielą je na regiony i obsługują losowe odczyty i zapisy o niskim opóźnieniu.

  • 🧭 HMaster: Przypisuje regiony do serwerów regionalnych, obsługuje równoważenie obciążenia i przełączanie awaryjne oraz zarządza zmianami schematu i metadanych.
  • 🗄️ Serwery regionalne: Automatycznie obsługuj żądania odczytu i zapisu klienta, hostuj regiony i dziel regiony w miarę wzrostu ilości danych.
  • 🧱 Regiony i sklepy: Każdy region przechowuje jeden magazyn na rodzinę kolumn, zbudowany z MemStore w pamięci i plików HFiles na dysku.
  • 🔗 Opiekun ogrodu zoologicznego: Koordynuje klaster, tracawarie serwera ks i przechowuje konfigurację kworum, której używają klienci do łączenia się.
  • 🧮 Model danych: Tabele grupują rodziny kolumn i wiersze, a klucz wiersza pełni funkcję klucza podstawowego przy każdym dostępie.
  • HBase kontra HDFS: HBase dodaje funkcje losowego odczytu i zapisu o niskim opóźnieniu do pamięci masowej wsadowej HDFS.

Architektura HBase z jej komponentami, modelem danych oraz przepływem odczytu i zapisu danych

Apache HBase to rozproszona, zorientowana kolumnowo baza danych NoSQL działająca na bazie Hadoop oraz rozproszony system plików Hadoop (HDFS). Jego architektura łączy koordynujący serwer główny, serwery regionalne i ZooKeepera, aby przechowywać bardzo duże tabele i obsługiwać szybkie, losowe odczyty i zapisy.

HBase Architecture i jej ważne elementy

Architektura HBase składa się z następujących głównych komponentów:

  • Mistrz
  • Serwer HRegion
  • HRRegiony
  • Opiekun zoo
  • HDFS

Poniżej znajduje się szczegółowa architektura HBase i jej komponenty, jak pokazano na schemacie.

Diagram architektury HBase przedstawiający HMaster, serwery regionów, ZooKeeper i HDFS

Mistrz

HMaster w HBase to implementacja serwera głównego w architekturze HBase. Działa on jako agent monitorujący wszystkie instancje serwera regionu obecne w klastrze i pełni funkcję interfejsu dla wszystkich zmian metadanych. W rozproszonym środowisku klastra serwer główny działa na węźle NameNode. Serwer główny uruchamia kilka wątków w tle.

Poniżej przedstawiono ważne role pełnione przez HMaster w HBase:

  • Odgrywa kluczową rolę w zakresie wydajności i utrzymania węzłów w klastrze.
  • HMaster zapewnia wydajność administracyjną i dystrybuuje usługi do serwerów w różnych regionach.
  • HMaster przypisuje regiony do serwerów regionów.
  • HMaster kontroluje równoważenie obciążenia i przełączanie awaryjne, aby poradzić sobie z obciążeniem węzłów obecnych w klastrze.
  • Gdy klient chce zmienić dowolny schemat lub operację na metadanych, HMaster bierze na siebie odpowiedzialność za te operacje.

Niektóre z metod udostępnianych przez interfejs HMaster to przede wszystkim metody zorientowane na metadane:

  • Tabela (utwórz tabelę, usuń tabelę, włącz, wyłącz)
  • ColumnFamily (dodaj kolumnę, zmodyfikuj kolumnę)
  • Region (przenieś, przypisz)

Klient komunikuje się dwukierunkowo zarówno z HMaster, jak i ZooKeeperem. W przypadku operacji odczytu i zapisu, kontaktuje się bezpośrednio z serwerami HRegion. HMaster przypisuje regiony do serwerów regionalnych i z kolei sprawdza stan ich serwerów.

W całej architekturze mamy wiele serwerów regionalnych. Na serwerach regionalnych znajduje się HLog, który przechowuje wszystkie pliki dziennika.

Serwery regionu HBase

Gdy serwer regionu HBase otrzymuje od klienta żądania zapisu i odczytu, przypisuje je do określonego regionu, w którym znajduje się dana rodzina kolumn. Klient może bezpośrednio kontaktować się z serwerami HRegion; nie ma potrzeby posiadania obowiązkowego uprawnienia HMaster, aby klient mógł komunikować się z serwerami HRegion. Klient potrzebuje pomocy HMaster tylko wtedy, gdy wymagane są operacje związane ze zmianami metadanych i schematu.

HRegionServer to implementacja serwera regionów. Odpowiada za obsługę i zarządzanie regionami, czyli danymi obecnymi w klastrze rozproszonym. Serwery regionów działają na węzłach danych obecnych w klastrze Hadoop.

HMaster może nawiązać kontakt z wieloma serwerami HRegion i wykonywać następujące funkcje:

  • Hostowanie i zarządzanie regionami
  • Automatyczne dzielenie regionów
  • Obsługa żądań odczytu i zapisu
  • Bezpośrednia komunikacja z klientem

Regiony HBase

Regiony HR to podstawowe elementy składowe klastra HBase. Składają się z rozkładu tabel i rodzin kolumn. Region zawiera wiele magazynów, po jednym dla każdej rodziny kolumn. Składa się głównie z dwóch komponentów: MemStore i HFile.

Opiekun zoo

HBase Opiekun zoo to scentralizowany serwer monitorujący, który przechowuje informacje o konfiguracji i zapewnia rozproszoną synchronizację. Rozproszona synchronizacja koordynuje rozproszone aplikacje działające w klastrze, zapewniając usługi koordynacyjne między węzłami. Aby klient mógł komunikować się z regionami, musi najpierw skontaktować się z ZooKeeperem.

Jest to projekt typu open source, który udostępnia wiele ważnych usług.

Usługi świadczone przez ZooKeeper:

  • Przechowuje informacje o konfiguracji
  • Zapewnia rozproszoną synchronizację
  • Nawiązuje komunikację klienta z serwerami regionalnymi
  • Zapewnia efemeryczne węzły reprezentujące różne serwery regionalne
  • Umożliwia serwerowi głównemu używanie tych węzłów tymczasowych do wykrywania dostępnych serwerów w klastrze
  • Tracawaria serwera ks i partycje sieciowe

Węzły Master i HBase Slave (serwery regionalne) rejestrują się w ZooKeeper. Klient potrzebuje dostępu do konfiguracji kworum ZooKeeper (ZK), aby połączyć się z serwerami Master i regionalnymi.

W przypadku awarii węzłów znajdujących się w klastrze HBase kworum ZooKeeper generuje komunikaty o błędach i rozpoczyna naprawę uszkodzonych węzłów.

HDFS

HDFS to rozproszony system Hadoop System plikówJak sama nazwa wskazuje, zapewnia rozproszone środowisko pamięci masowej i jest systemem plików zaprojektowanym do działania na sprzęcie powszechnego użytku. Przechowuje każdy plik w wielu blokach, a aby zachować odporność na błędy, bloki te są replikowane w klastrze Hadoop.

HDFS zapewnia wysoki stopień odporności na błędy i działa na tanim sprzęcie powszechnego użytku. Dodanie węzłów do klastra oraz przetwarzanie i przechowywanie danych przy użyciu taniego, powszechnego użytku sprzętu zapewnia klientowi lepsze rezultaty w porównaniu z obecną konfiguracją.

Tutaj dane przechowywane w każdym bloku są replikowane na 3 węzłach, więc jeśli któryś z węzłów ulegnie awarii, nie nastąpi utrata danych; istnieje odpowiedni mechanizm tworzenia kopii zapasowej i odzyskiwania.

HDFS nawiązuje kontakt z komponentami HBase i rozproszenie przechowuje dużą ilość danych.

Model danych HBase

Model danych HBase to zestaw komponentów składający się z tabel, wierszy, rodzin kolumn, komórek, kolumn i wersji. Tabele HBase zawierają rodziny kolumn i wiersze, których elementy są zdefiniowane jako klucze podstawowe. Kolumna w tabeli modelu danych HBase reprezentuje atrybut obiektu.

Model danych HBase składa się z następujących elementów:

  • Zestaw tabel
  • Każda tabela z rodzinami kolumn i wierszami
  • Każda tabela musi mieć element zdefiniowany jako klucz podstawowy.
  • Klucz wiersza pełni funkcję klucza podstawowego w HBase.
  • Każdy dostęp do tabel HBase odbywa się za pomocą tego klucza podstawowego.
  • Każda kolumna w HBase oznacza atrybut odpowiadający obiektowi.

Przypadki użycia HBase

Poniżej znajdują się przykłady przypadków użycia HBase wraz ze szczegółowym opisem rozwiązań, jakie HBase zapewnia w przypadku różnych problemów technicznych.

Problem Statement Rozwiązanie
Branża telekomunikacyjna mierzy się z następującymi wyzwaniami technicznymi: przechowywaniem miliardów rekordów dziennika CDR (Call Detail Record) generowanych przez sektor telekomunikacyjny; zapewnieniem dostępu w czasie rzeczywistym do dzienników CDR i informacji rozliczeniowych klientów; a także dostarczeniem opłacalnego rozwiązania w porównaniu z tradycyjnymi systemami baz danych. HBase służy do przechowywania miliardów wierszy szczegółowych rekordów połączeń. Jeśli do istniejącej bazy danych RDBMS dodawane jest 20 TB danych miesięcznie, wydajność ulegnie pogorszeniu. Aby obsłużyć dużą ilość danych w tym przypadku użycia, HBase jest najlepszym rozwiązaniem. HBase wykonuje szybkie zapytania i wyświetla rekordy.
Sektor bankowy generuje miliony rekordów każdego dnia. Ponadto, sektor bankowy potrzebuje również rozwiązania analitycznego, które będzie w stanie wykrywać oszustwa w transakcjach pieniężnych. Do przechowywania, przetwarzania i aktualizowania dużych ilości danych oraz do przeprowadzania analiz idealnym rozwiązaniem jest HBase zintegrowany z kilkoma komponentami ekosystemu Hadoop.

Poza tym HBase można używać:

  • Zawsze, gdy zachodzi potrzeba użycia aplikacji intensywnie przetwarzających dane.
  • Do przeprowadzania analiz dzienników online i generowania raportów zgodności.

Mechanizm przechowywania w HBase

HBase to baza danych zorientowana kolumnowo, a dane są przechowywane w tabelach. Tabele są sortowane według RowId. Jak pokazano poniżej, HBase ma RowId, który jest zbiorem kilku rodzin kolumn obecnych w tabeli.

Rodziny kolumn obecne w schemacie to pary klucz-wartość. Jeśli przyjrzymy się im szczegółowo, każda rodzina kolumn ma wiele kolumn. Wartości kolumn są przechowywane w pamięci dyskowej. Każda komórka tabeli ma własne metadane, takie jak znacznik czasu i inne informacje.

Poniżej pokazano układ pamięci masowej zorientowany kolumnowo z kluczami wierszy, rodzinami kolumn i komórkami.

Mechanizm przechowywania HBase pokazujący klucz wiersza, rodziny kolumn, kolumny i komórki

Poniżej przedstawiono kluczowe terminy reprezentujące schemat tabeli HBase:

  • Tabela: Zbiór obecnych wierszy.
  • Wiersz: Zbiór rodzin kolumn.
  • Rodzina kolumn: Zbiór kolumn.
  • Kolumna: Zbiór par klucz-wartość.
  • Przestrzeń nazw: Grupa logicznaping tabel.
  • Komórka: Krotka {wiersz, kolumna, wersja} dokładnie określająca definicję komórki w HBase.

Magazyny zorientowane kolumnowo i rzędowo

Pamięci kolumnowe i wierszowe różnią się mechanizmem przechowywania. Jak wiadomo, tradycyjne modele relacyjne przechowują dane w formacie wierszowym, w odniesieniu do wierszy danych. Pamięci kolumnowe przechowują tabele danych w odniesieniu do kolumn i rodzin kolumn.

Poniższa tabela przedstawia najważniejsze różnice pomiędzy tymi dwoma magazynami.

Baza danych zorientowana kolumnowo Baza danych zorientowana na wiersze
Używane, gdy sytuacja wiąże się z przetwarzaniem i analizą, np. w przypadku przetwarzania analitycznego online i jego zastosowań. Podejście to jest wykorzystywane w przetwarzaniu transakcji online, np. w bankowości i finansach.
Ilość danych, jaką można zapisać w tym modelu, jest bardzo duża i wynosi petabajtów. Jest przeznaczony dla małej liczby wierszy i kolumn.

Wyjaśnienie odczytu i zapisu danych HBase

Operacje odczytu i zapisu danych od klienta do pliku HFile pokazano na poniższym diagramie.

Przepływ danych odczytu i zapisu HBase pomiędzy klientem, serwerem regionalnym, MemStore i HFile

Krok 1) Klient chce zapisać dane, dlatego najpierw komunikuje się z serwerem regionów, a następnie z regionami.

Krok 2) Region nawiązuje kontakt z MemStore w celu zapisania danych powiązanych z rodziną kolumn.

Krok 3) Najpierw dane są przechowywane w pamięci MemStore, gdzie są sortowane, a następnie przesyłane do pliku HFile. Głównym powodem korzystania z pamięci MemStore jest przechowywanie danych w rozproszonym systemie plików opartym na kluczu wiersza. Pamięć MemStore jest umieszczana w pamięci głównej serwera Region Server, natomiast pliki HFile są zapisywane w systemie plików HDFS.

Krok 4) Klient chce odczytać dane z regionów.

Krok 5) Następnie klient może uzyskać bezpośredni dostęp do MemStore i zażądać danych.

Krok 6) Klient łączy się z HFiles, aby pobrać dane. Dane są pobierane i odzyskiwane przez klienta.

Magazyn MemStore przechowuje modyfikacje w pamięci. Hierarchia obiektów w regionach HBase, od góry do dołu, jest przedstawiona w poniższej tabeli.

Stół Tabela HBase obecna w klastrze HBase
Region HRegiony dla prezentowanych tabel
Sklep Przechowuje po jednym na rodzinę kolumn dla każdego regionu dla tabeli
Sklep Mem MemStore dla każdego magazynu i każdego regionu tabeli. Sortuje dane przed ich przekazaniem do plików HFiles. Wydajność zapisu i odczytu wzrasta dzięki sortowaniu.
Plik sklepu StoreFiles dla każdego sklepu dla każdego regionu dla tabeli
Blokować Bloki obecne w StoreFiles

HBase kontra HDFS

HBase działa na bazie HDFS i Hadoop. Kluczowe różnice między HDFS a HBase dotyczą operacji na danych i ich przetwarzania.

HBase HDFS
Operacje o niskim opóźnieniu Operacje o dużym opóźnieniu
Losowo czyta i pisze Napisz raz, przeczytaj wiele razy
Dostęp przez polecenia powłoki, API klienta w Java, REST, Avro lub Thrift Dostęp możliwy głównie poprzez MapReduce (MR) prace
Można wykonywać zarówno przechowywanie, jak i przetwarzanie Tylko do pomieszczeń magazynowych

Niektóre typowe aplikacje IT w przemyśle wykorzystują operacje HBase wraz z Hadoop. Aplikacje obejmują operacje na danych giełdowych i bankowości internetowej, gdzie HBase jest najlepszym rozwiązaniem. Gdy klaster będzie gotowy, możesz… odczytywanie i zapisywanie danych w HBase or zainstaluj HBase na świeżym węźle.

FAQ

Tak. HBase to rozproszona, zorientowana kolumnowo baza danych NoSQL oparta na Google Bigtable, zbudowany na bazie HDFS. Przechowuje rozproszone dane w tabelach rodzin kolumn i nie korzysta ze stałych schematów ani łączeń SQL, jak relacyjna baza danych.

Plik WAL, zwany również HLog, rejestruje każdy zapis na serwerze regionu, zanim trafi on do MemStore. Jest on przechowywany w systemie plików HDFS, więc jeśli serwer regionu ulegnie awarii przed opróżnieniem, HBase odtwarza plik WAL, aby odzyskać niezapisane zmiany.

Kompaktowanie łączy pliki HF, aby przyspieszyć odczyt. Kompaktowanie drobne łączy kilka małych, sąsiadujących plików HF w jeden. Kompaktowanie główne zapisuje wszystkie pliki HF z rodziny kolumn w jednym pliku i fizycznie usuwa usunięte i wygasłe komórki.

Oba są bazami danych NoSQL inspirowanymi Bigtable, ale HBase działa na HDFS z jednym aktywnym HMaster i silną spójnością, podczas gdy Cassandra nie ma mastera, a replikacja jest dostrajalna i ostatecznie spójna. HBase jest kompatybilny z analityką Hadoop; Cassandra pasuje do zapisu zawsze włączonego.

Zaprojektuj klucze wierszy tak, aby odczyty i zapisy były równomiernie rozłożone w regionach. Unikaj monotonicznego zwiększania wartości kluczy, co tworzy punkty aktywne na jednym serwerze regionu. Używaj soli, haszowania lub odwracania pól i dbaj o to, aby klucze były krótkie, ponieważ powtarzają się w każdej komórce.

Region dzieli się automatycznie, gdy jego rozmiar przekroczy skonfigurowany próg. Serwer regionów dzieli go na dwa regiony podrzędne w kluczu środkowego wiersza, a HMaster może przypisać jeden z nich do innego serwera, aby zrównoważyć obciążenie.

Narzędzia sztucznej inteligencji i uczenia maszynowego analizują wzorce zapytań i dostępu, aby sugerować projekty oparte na kluczach wierszy i rodzinach kolumn, które pozwalają uniknąć punktów aktywnych. Skanują również metryki i logi serwera regionów, aby wcześnie sygnalizować anomalie, takie jak przekoszone regiony lub awarie węzłów.

Tak. Drugi pilot GitHub szkice HBase Java kod klienta, polecenia powłoki i filtry skanowania na podstawie krótkiego komentarza. RevPrzed uruchomieniem programu w prawdziwym klastrze sprawdź jego wyniki pod kątem poprawnych nazw tabel, rodzin kolumn i klas API, takich jak Połączenie i Tabela.

Podsumuj ten post następująco: