2013-06-05 31 views
101

To jest naiwne pytanie, ale jestem nowy w paradygmacie NoSQL i nie wiem zbyt wiele na ten temat. Więc jeśli ktoś może mi pomóc w zrozumieniu różnicy między HBase i Hadoop lub jeśli podam jakieś wskazówki, które mogą mi pomóc zrozumieć różnicę.Różnica między HBase i Hadoop/HDFS

Do tej pory zrobiłem kilka badań i wg. Z mojego punktu widzenia Hadoop zapewnia framework do pracy z surowym kawałkiem danych (plików) w HDFS, a HBase jest silnikiem baz danych nad Hadoop, który zasadniczo działa z danymi strukturalnymi zamiast z surowymi porcjami danych. Hbase zapewnia warstwę logiczną ponad HDFS, tak jak robi to SQL. Czy to jest poprawne?

Pls możesz mnie poprawić.

Dzięki.

+7

Być może tytuł pytania powinien brzmieć "Różnica między HBase a HDFS"? –

+0

Dlaczego tak jest? –

Odpowiedz

208

Hadoop to w zasadzie 2 rzeczy, FS (Hadoop Distributed File System) i framework obliczeniowy (MapReduce). HDFS pozwala przechowywać ogromne ilości danych w rozproszonych (zapewnia szybszy dostęp do odczytu/zapisu) i redundancji (zapewnia lepszą dostępność). A MapReduce pozwala przetwarzać te ogromne dane 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 właśnie pojawia się HBase. Jest to baza danych NoSQL, która działa na szczycie twojego klastra Hadoop i zapewnia ci losowy dostęp do danych w trybie odczytu i zapisu w czasie rzeczywistym.

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

Hadoop

  1. zoptymalizowany dla strumieniowego dostępu do dużych plików.
  2. Powtarza jedną ideologię do przeczytania.
  3. Nie obsługuje losowego odczytu/zapisu. par klucz

HBase

  1. Sklepy/wartość w modzie kolumnowego (kolumny są bił razem jako rodziny kolumn).
  2. Zapewnia niski czas oczekiwania na dostęp do niewielkich ilości danych z dużego zbioru danych.
  3. Zapewnia elastyczny model danych.

Hadoop jest najbardziej odpowiedni do przetwarzania wsadowego w trybie offline, podczas gdy HBase jest używany, gdy masz potrzeby w czasie rzeczywistym.

Porównanie analogiczne między MySQL i Ext4.

+0

co z wykorzystaniem hbase jako danych dla bardzo dużych ilości danych (małe pliki)? czy może zarządzać tak dużą ilością danych, jak hdfs? –

+0

@MehdiTAZI zdecydowanie. HBase działa na HDFS, więc nie musisz się martwić skalowalnością. musisz tylko upewnić się, że używasz HBase, ponieważ powinno być używane w celu uzyskania maksymalnej wydajności – Tariq

+0

co z problemami operacyjnymi? –

1

referencyjny: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop to ogólna nazwa dla kilku podsystemów: 1) HDFS. Rozproszony system plików, który rozpowszechnia dane w klastrze maszyn dbających o nadmiarowość itp. 2) Mapa Zmniejsz. System zarządzania zadaniami na bazie HDFS - do zarządzania zadaniami zmniejszania map (i innych typów) przetwarzania danych przechowywanych na HDFS.

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

HBase z drugiej strony w bazie danych opartej na kolumnach. Wykorzystuje HDFS jako pamięć masową - która zajmuje się backupem \ redundency \ etc, ale jest "sklepem internetowym" - co oznacza, że ​​możesz go zapytać o konkretny wiersz \ wiersze itp. I uzyskać natychmiastową wartość.

4

Hadoop wykorzystuje rozproszony system plików, np. HDFS do przechowywania danych bigdata. Jednak w celu ograniczenia tych ograniczeń istnieją pewne ograniczenia HDFS i Inorder, powstały bazy danych NoSQL, takie jak HBase, Cassandra i Mongodb.

Hadoop może wykonywać tylko przetwarzanie wsadowe, a dane będą dostępne tylko sekwencyjnie. Oznacza to, że trzeba przeszukać cały zestaw danych nawet dla najprostszych zadań. Ogromny zbiór danych po przetworzeniu skutkuje kolejnym ogromnym zbiorem 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 losowy).

Podobnie jak wszystkie inne systemy plików, HDFS zapewnia nam pamięć, ale w sposób odporny na awarie, z wysoką przepustowością i mniejszym ryzykiem utraty danych (z powodu replikacji) .Ale będąc systemem plików, HDFS nie ma losowego dostępu do odczytu i zapisu . Tu właśnie pojawia się HBase. Jest to rozproszony, skalowalny, duży magazyn danych, wzorowany na BigTable Google. Cassandra jest nieco podobna do hbase.

16

Apache Hadoop Projekt obejmuje cztery główne moduły

  1. Hadoop Common: wspólne narzędzia, które wspierają inne moduły Hadoop.
  2. Rozproszony system plików Hadoop (HDFS ™): Rozproszony system plików zapewniający wysokoprzepustowy dostęp do danych aplikacji.
  3. Hadoop YARN: Struktura harmonogramu zadań i zarządzania zasobami w klastrze.
  4. Hadoop MapReduce: A YARN - system oparty na równoległym przetwarzaniu dużych zestawów danych.

HBase to skalowalna, rozproszona baza danych, która obsługuje uporządkowane przechowywanie danych dla dużych tabel. Tak jak Bigtable wykorzystuje rozproszone przechowywanie danych dostarczane przez system plików Google, Apache HBase zapewnia funkcje podobne do Bigtable na urządzeniach Hadoop i HDFS.

Kiedy używać HBase:

  1. Jeśli aplikacja ma zmienną schematu, gdzie każdy wiersz jest nieco inny
  2. Jeśli okaże się, że dane są przechowywane w zbiorach, to wszystko włączył na tej samej wartości
  3. Jeśli potrzebujesz losowego dostępu do danych w czasie rzeczywistym do odczytu/zapisu danych.
  4. Jeśli potrzebujesz klucza dostępu do danych podczas przechowywania lub pobierania.
  5. Jeśli masz ogromne ilości danych z istniejącego klastra Hadoop

Ale HBase ma pewne ograniczenia

  1. To nie może być stosowany do klasycznych aplikacji transakcyjnych, a nawet relacyjnych Analytics.
  2. Nie jest to również kompletny zamiennik HDFS podczas wykonywania dużej partii MapReduce.
  3. Nie mówi SQL, nie ma optymalizatora, obsługuje transakcji lub połączeń krzyżowych.
  4. To nie może być używany z skomplikowanych wzorów dostępowych (takich jak przyłącza)

Podsumowanie:

Rozważmy HBase kiedy ładowanie danych kluczem, szukając danych przy pomocy klucza (lub zakres), udostępniając dane według klucza, wysyłając zapytania do danych przez klucz lub podczas przechowywania danych według wiersza, który nie pasuje do schematu.

Spójrz na Do i nie od HBase z cloudera blog.

+0

co z wykorzystaniem hbase jako danych dla bardzo dużych ilości danych (małe pliki)? czy może zarządzać tak dużą ilością danych, jak hdfs? –

+1

Jeśli tworzysz dużo małych plików, wtedy, w zależności od wzorca dostępu, może być bardziej odpowiedni inny typ pamięci. Baza danych przechowuje dane w MapFiles (indeksowane pliki SequenceFiles) i jest dobrym wyborem, jeśli chcesz zrobić styl MapReduce analizy strumieniowe z okazjonalnym przypadkowym wyszukiwaniem –