Różnica między HBase i Hadoop / HDFS

134

To trochę naiwne pytanie, ale jestem nowy w paradygmacie NoSQL i niewiele o nim wiem. Więc jeśli ktoś może mi pomóc jasno zrozumieć różnicę między HBase i Hadoop lub jeśli podasz kilka wskazówek, które mogą pomóc mi zrozumieć różnicę.

Do tej pory zrobiłem kilka badań i zgodnie z. według mojego rozumienia Hadoop zapewnia ramy do pracy z surowymi fragmentami danych (plikami) w HDFS, a HBase to silnik bazy danych powyżej Hadoop, który zasadniczo działa z danymi strukturalnymi zamiast surowych fragmentów danych. Hbase zapewnia warstwę logiczną w HDFS, podobnie jak SQL. Czy to jest poprawne?

Prosimy o poprawienie mnie.

Dzięki.

Dhaval Shah
źródło
7
Może w takim razie tytuł pytania powinien brzmieć „Różnica między HBase i HDFS”?
Matt Ball,

Odpowiedzi:

253

Hadoop to w zasadzie 3 rzeczy: FS (Hadoop Distributed File System), struktura obliczeniowa (MapReduce) i most zarządzania (Yet Another Resource Negotiator). HDFS umożliwia przechowywanie ogromnych ilości danych w sposób rozproszony (zapewnia szybszy dostęp do odczytu / zapisu) i nadmiarowy (zapewnia lepszą dostępność). MapReduce umożliwia przetwarzanie tych ogromnych danych w sposób rozproszony i równoległy. Ale MapReduce nie ogranicza się tylko do HDFS. Będąc FS, HDFS nie ma możliwości losowego odczytu / zapisu. Jest dobry do sekwencyjnego dostępu do danych. I tu pojawia się HBase. Jest to baza danych NoSQL, która działa na klastrze Hadoop i zapewnia losowy dostęp do odczytu / zapisu w czasie rzeczywistym do danych.

Na platformie Hadoop i HBase można przechowywać zarówno dane strukturalne, jak i nieustrukturyzowane. Oba zapewniają wiele mechanizmów dostępu do danych, takich jak powłoka i inne interfejsy API. Ponadto HBase przechowuje dane jako pary klucz / wartość w sposób kolumnowy, podczas gdy HDFS przechowuje dane jako płaskie pliki. Niektóre z najważniejszych cech obu systemów to:

Hadoop

  1. Zoptymalizowany do strumieniowego dostępu do dużych plików.
  2. Podąża za ideologią jednokrotnego przeczytania wielu.
  3. Nie obsługuje losowego odczytu / zapisu.

HBase

  1. Przechowuje pary klucz / wartość w sposób kolumnowy (kolumny są łączone razem jako rodziny kolumn).
  2. Zapewnia dostęp do małych ilości danych z dużego zestawu danych o małych opóźnieniach.
  3. Zapewnia elastyczny model danych.

Hadoop najlepiej nadaje się do przetwarzania wsadowego offline, podczas gdy HBase jest używany, gdy masz potrzeby w czasie rzeczywistym.

Analogiczne porównanie byłoby między MySQL i Ext4.

Tariq
źródło
A co z używaniem hbase jako pobierania danych dla bardzo dużych ilości danych (małych plików)? czy może zarządzać tak dużą ilością danych, jak hdfs?
Mehdi TAZI
@MehdiTAZI zdecydowanie. HBase działa na HDFS, więc nie musisz się martwić o skalowalność. musisz tylko upewnić się, że używasz HBase tak, jak powinno być używane, aby uzyskać maksymalną wydajność
Tariq
co z kwestiami operacyjnymi?
Mehdi TAZI
Nie powiedziałbym, że HBase jest koszmarem zespołu ops, ale ma kilka obszarów, w których nadal istnieje pewien zakres ulepszeń, a społeczność bardzo ciężko pracuje, aby to naprawić. Ale dotyczy to każdego oprogramowania. Nie ma narzędzia / technologii odpornej na problemy IMHO. Jeśli pasuje do Twoich wymagań, zdecydowanie powinieneś spróbować. Jest to narzędzie do tworzenia labiryntów, które obsługuje Twoje potrzeby w zakresie odczytu / zapisu w czasie rzeczywistym.
Tariq
22

Projekt Apache Hadoop zawiera cztery kluczowe moduły

  1. Hadoop Common : Typowe narzędzia obsługujące inne moduły Hadoop.
  2. Rozproszony system plików Hadoop (HDFS ™) : rozproszony system plików zapewniający dostęp do danych aplikacji o wysokiej przepustowości.
  3. Hadoop YARN : struktura do planowania zadań i zarządzania zasobami klastra.
  4. Hadoop MapReduce : system oparty na YARN do równoległego przetwarzania dużych zestawów danych.

HBase to skalowalna, rozproszona baza danych obsługująca uporządkowane przechowywanie danych dla dużych tabel. Podobnie jak Bigtablewykorzystuje rozproszony magazyn danych zapewniany przez system plików Google, Apache HBase zapewnia funkcje podobne do Bigtable oprócz Hadoop i HDFS.

Kiedy używać HBase:

  1. Jeśli Twoja aplikacja ma zmienny schemat, w którym każdy wiersz jest nieco inny
  2. Jeśli stwierdzisz, że Twoje dane są przechowywane w kolekcjach, wszystkie mają tę samą wartość
  3. Jeśli potrzebujesz losowego dostępu w czasie rzeczywistym do odczytu / zapisu do swoich Big Data.
  4. Jeśli potrzebujesz dostępu do danych w oparciu o klucz podczas przechowywania lub pobierania.
  5. Jeśli masz ogromną ilość danych w istniejącym klastrze Hadoop

Ale HBase ma pewne ograniczenia

  1. Nie można go używać do klasycznych aplikacji transakcyjnych ani nawet do analizy relacyjnej.
  2. Nie zastępuje również systemu plików HDFS podczas wykonywania dużych partii MapReduce.
  3. Nie mówi SQL, nie ma optymalizatora, obsługuje transakcje krzyżowe lub łączenia.
  4. Nie można go używać ze skomplikowanymi wzorcami dostępu (takimi jak łączenia)

Podsumowanie:

Rozważ HBase podczas ładowania danych według klucza, wyszukiwania danych według klucza (lub zakresu), udostępniania danych według klucza, wykonywania zapytań dotyczących danych według klucza lub podczas przechowywania danych według wiersza, które nie są dobrze zgodne ze schematem.

Zapoznaj się z zaleceniami i zakazami HBase na blogu Cloudera .

Ravindra babu
źródło
A co z używaniem hbase jako pobierania danych dla bardzo dużych ilości danych (małych plików)? czy może zarządzać tak dużą ilością danych, jak hdfs?
Mehdi TAZI
1
Jeśli produkujesz wiele małych plików, w zależności od wzorca dostępu, inny typ pamięci może być bardziej odpowiedni.HBase przechowuje dane w MapFiles (indeksowane pliki SequenceFiles) i jest dobrym wyborem, jeśli potrzebujesz strumieniować w stylu MapReduce analizy z okazjonalnym losowym wyszukiwaniem
Ravindra babu
4

Hadoop używa rozproszonego systemu plików, tj. HDFS do przechowywania danych bigdata. Ale istnieją pewne ograniczenia HDFS i Inorder, aby przezwyciężyć te ograniczenia, powstały bazy danych NoSQL, takie jak HBase, Cassandra i Mongodb.

Hadoop może wykonywać tylko przetwarzanie wsadowe, a dostęp do danych będzie możliwy tylko w sposób sekwencyjny. Oznacza to, że trzeba przeszukiwać cały zbiór danych, nawet w celu znalezienia najprostszych zadań. Ogromny zbiór danych po przetworzeniu daje kolejny ogromny zestaw danych, który również powinien być przetwarzany sekwencyjnie. W tym momencie potrzebne jest nowe rozwiązanie, aby uzyskać dostęp do dowolnego punktu danych w jednej jednostce czasu (dostęp swobodny).

Podobnie jak wszystkie inne systemy plików, HDFS zapewnia nam pamięć masową, ale w sposób odporny na błędy z wysoką przepustowością i mniejszym ryzykiem utraty danych (z powodu replikacji), ale HDFS jako system plików nie ma swobodnego dostępu do odczytu i zapisu. W tym miejscu pojawia się HBase. To rozproszony, skalowalny magazyn dużych zbiorów danych, wzorowany na BigTable firmy Google. Cassandra jest nieco podobna do hbase.

Praveen Mulchandani
źródło
4

Zarówno HBase, jak i HDFS na jednym zdjęciu

Zarówno HBase, jak i HDFS na jednym zdjęciu

Uwaga:

Sprawdź demony HDFS (podświetlone na zielono), takie jak DataNode (kolokowane serwery regionu) i NameNode w klastrze, mając zarówno HBase, jak i Hadoop HDFS

HDFS to rozproszony system plików, który dobrze nadaje się do przechowywania dużych plików. który nie zapewnia szybkiego wyszukiwania pojedynczych rekordów w plikach.

Z drugiej strony HBase jest zbudowany na bazie HDFS i zapewnia szybkie wyszukiwanie rekordów (i aktualizacje) dla dużych tabel. Czasami może to być przyczyną pomieszania pojęć. HBase wewnętrznie umieszcza dane w zindeksowanych plikach „StoreFiles”, które istnieją w systemie plików HDFS w celu szybkiego wyszukiwania.

Jak to wygląda?

Cóż, na poziomie infrastruktury każda maszyna salve w klastrze ma następujące demony

  • Region Server - HBase
  • Węzeł danych - HDFS

Maszyna niewolnicza

Jak to jest szybko z wyszukiwaniem?

HBase umożliwia szybkie wyszukiwanie w HDFS (czasami również w innych rozproszonych systemach plików) jako bazowej pamięci masowej, przy użyciu następującego modelu danych

  • Stół

    • Tabela HBase składa się z wielu wierszy.
  • Rząd

    • Wiersz w HBase składa się z klucza wiersza i co najmniej jednej kolumny z skojarzonymi z nimi wartościami. Wiersze są sortowane alfabetycznie według klucza wiersza, gdy są przechowywane. Z tego powodu projekt klucza rzędu jest bardzo ważny. Celem jest przechowywanie danych w taki sposób, aby powiązane wiersze były blisko siebie. Typowym wzorcem klucza wiersza jest domena witryny. Jeśli klucze wierszy są domenami, prawdopodobnie powinieneś przechowywać je w odwrotnej kolejności (org.apache.www, org.apache.mail, org.apache.jira). W ten sposób wszystkie domeny Apache znajdują się blisko siebie w tabeli, a nie są rozłożone na podstawie pierwszej litery subdomeny.
  • Kolumna

    • Kolumna w HBase składa się z rodziny kolumn i kwalifikatora kolumny, które są rozdzielone znakiem: (dwukropek).
  • Rodzina kolumn

    • Rodziny kolumn fizycznie współdzielą zestaw kolumn i ich wartości, często ze względu na wydajność. Każda rodzina kolumn ma zestaw właściwości magazynu, takich jak to, czy jej wartości powinny być przechowywane w pamięci podręcznej, sposób kompresji danych lub kodowanie kluczy wierszy i inne. Każdy wiersz w tabeli ma te same rodziny kolumn, chociaż dany wiersz może nie przechowywać niczego w danej rodzinie kolumn.
  • Kwalifikator kolumny

    • Kwalifikator kolumny jest dodawany do rodziny kolumn w celu zapewnienia indeksu dla danego fragmentu danych. Biorąc pod uwagę zawartość rodziny kolumn, kwalifikatorem kolumny może być treść: html, a innym kwalifikatorem może być treść: pdf. Chociaż rodziny kolumn są ustalane podczas tworzenia tabeli, kwalifikatory kolumn są zmienne i mogą się znacznie różnić między wierszami.
  • Komórka

    • Komórka jest połączeniem wiersza, rodziny kolumn i kwalifikatora kolumny i zawiera wartość oraz sygnaturę czasową, która reprezentuje wersję wartości.
  • Znak czasu

    • Obok każdej wartości jest zapisywany znacznik czasu, który jest identyfikatorem danej wersji wartości. Domyślnie sygnatura czasowa reprezentuje czas na RegionServer, kiedy dane zostały zapisane, ale można określić inną wartość znacznika czasu podczas umieszczania danych w komórce.

Przepływ żądania odczytu klienta:

Przepływ żądań odczytu klienta

Jaka jest metatabela na powyższym obrazku?

tabela meta

Po wszystkich informacjach przepływ odczytu HBase służy do wyszukiwania i dotyka tych jednostek

  1. Najpierw skaner szuka komórek Row w Block cache - read-cache. Ostatnio odczytane wartości kluczowe są tutaj buforowane, a wartości najmniejszych ostatnio używanych są eksmitowane, gdy potrzebna jest pamięć.
  2. Następnie skaner szuka w MemStore , pamięci podręcznej zapisu w pamięci zawierającej najnowsze zapisy.
  3. Jeśli skaner nie znajdzie wszystkich komórek wierszy w MemStore i Block Cache, HBase użyje indeksów Block Cache i filtrów bloom, aby załadować HFiles do pamięci, która może zawierać docelowe komórki wiersza.

źródła i więcej informacji:

  1. Model danych HBase
  2. Architektura HBase
mrsrinivas
źródło
1

Źródła: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop to ogólna nazwa kilku podsystemów: 1) HDFS. Rozproszony system plików, który dystrybuuje dane w klastrze komputerów, dbając o nadmiarowość itp. 2) Map Reduce. System zarządzania zadaniami oparty na HDFS - do zarządzania zadaniami redukcji map (i innymi typami) przetwarzającymi dane przechowywane w HDFS.

Zasadniczo oznacza to, że jest to system offline - przechowujesz dane na HDFS i możesz je przetwarzać, uruchamiając zadania.

Z drugiej strony HBase w bazie danych opartej na kolumnach. Używa HDFS jako pamięci masowej - która zajmuje się tworzeniem kopii zapasowych \ redundancją \ itp., Ale jest to „sklep internetowy” - co oznacza, że ​​można zapytać o określony wiersz \ wiersze itp. I uzyskać natychmiastową wartość.

Jiaji Li
źródło
0

HDFS to rozproszony system plików oparty na języku Java, który umożliwia przechowywanie dużych danych w wielu węzłach w klastrze Hadoop. Natomiast HBase jest bazą danych NoSQL (podobnie jak NTFS i MySQL).

Ponieważ zarówno HDFS, jak i HBase przechowują wszelkiego rodzaju dane, takie jak ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane w środowisku rozproszonym.

Różnice między HDFS i HBase

  • HBase zapewnia dostęp do małych ilości danych w dużych zestawach danych o małych opóźnieniach, podczas gdy HDFS zapewnia operacje o dużych opóźnieniach.
  • HBase obsługuje losowe odczyty i zapisy, podczas gdy HDFS obsługuje WORM (zapis raz Odczyt wiele lub wiele razy).
  • Dostęp do HDFS jest zasadniczo lub głównie możliwy za pośrednictwem zadań MapReduce, podczas gdy HBase jest dostępny za pośrednictwem poleceń powłoki, Java API, REST, Avro lub Thrift API.

HDFS przechowuje duże zestawy danych w środowisku rozproszonym i wykorzystuje przetwarzanie wsadowe tych danych.

Podczas gdy HBase przechowuje dane w sposób zorientowany na kolumny, gdzie każda kolumna jest przechowywana razem, dzięki czemu odczyt staje się szybszy, wykorzystując przetwarzanie w czasie rzeczywistym.

wprowadź opis obrazu tutaj

Ghulam Dastgeer
źródło