Різниця між HBase та Hadoop / HDFS


130

Це наївне питання, але я новачок у парадигмі NoSQL і не знаю багато про це. Тож якщо хтось може допомогти мені чітко зрозуміти різницю між HBase та Hadoop або якщо дати кілька покажчиків, які можуть допомогти мені зрозуміти різницю.

До цього часу я провів деякі дослідження і відповідно. Наскільки я розумію, Hadoop надає основу для роботи з необробленими фрагментами даних (файлів) у HDFS, а HBase - це двигун бази даних над Hadoop, який в основному працює зі структурованими даними замість грубих даних. Hbase забезпечує логічний рівень над HDFS так, як це робить SQL. Це правильно?

Будь ласка, виправте мене.

Дякую.


7
Можливо, заголовок питання повинен бути "Різниця між HBase та HDFS" тоді?
Метт Баль

Відповіді:


248

Hadoop - це в основному 3 речі, FS (розподілена файлова система Hadoop), рамка обчислень (MapReduce) та міст управління (ще один переговорник ресурсів). HDFS дозволяє зберігати величезну кількість даних у розподіленому (забезпечує швидший доступ для читання / запису) та надмірному (забезпечує кращу доступність). І MapReduce дозволяє обробляти ці величезні дані розподіленим та паралельним чином. Але MapReduce не обмежується лише HDFS. Будучи FS, HDFS не має можливості випадкового читання / запису. Це добре для послідовного доступу до даних. І ось тут на світ входить HBase. Це база даних NoSQL, яка працює над вашим кластером Hadoop і надає вам випадковий доступ для читання / запису в реальному часі до ваших даних.

Ви можете зберігати як структуровані, так і неструктуровані дані в Hadoop, а також HBase. Обидва вони надають вам кілька механізмів доступу до даних, як оболонка та інші API. Крім того, HBase зберігає дані як пари ключів / значень стовпцем, тоді як HDFS зберігає дані як плоскі файли. Деякі з особливостей обох систем:

Hadoop

  1. Оптимізовано для потокового доступу до великих файлів.
  2. Дотримується написання - один раз прочитане - багато ідеології.
  3. Не підтримує випадкове читання / запис.

HBase

  1. Зберігає пари ключів / значень стовпчиком (стовпчики з’єднані між собою як сім'ї стовпців).
  2. Забезпечує низький латентний доступ до невеликої кількості даних із великого набору даних.
  3. Забезпечує гнучку модель даних.

Hadoop найбільше підходить для роботи в режимі офлайн-пакетної обробки, тоді як HBase використовується, коли у вас є потреби в режимі реального часу.

Аналогічне порівняння було б між MySQL та Ext4.


як щодо використання hbase як datalake для дуже великої кількості даних (невеликих файлів)? чи може він керувати стільки даних, скільки hdfs?
Мехді ТАЗІ

@MehdiTAZI точно. HBase працює поверх HDFS, тому не потрібно турбуватися про масштабованість. вам просто потрібно переконатися, що ви використовуєте HBase так, як його слід використовувати для отримання максимальної продуктивності
Tariq

як щодо оперативних питань?
Мехді ТАЗІ

Я б не сказав, що HBase - це кошмар команди команди, але в ньому є декілька областей, де ще є певна сфера вдосконалення, і громада працює дуже важко, щоб виправити це. Але це справедливо для будь-якого програмного забезпечення. Інструмент / технологія IMHO не підтверджує проблеми. Якщо він відповідає вашим вимогам, то ви обов'язково спробуйте. Це інструмент для лабіринту для обробки випадкових потреб у читанні / записі у реальному часі.
Тарік,

22

Проект Apache Hadoop включає чотири ключові модулі

  1. Hadoop Common : загальні утиліти, які підтримують інші модулі Hadoop.
  2. Розподілена файлова система Hadoop (HDFS ™) : розподілена файлова система, що забезпечує доступ з високою пропускною здатністю до даних програми.
  3. Hadoop Пряжа : основи для планування робочих місць та управління ресурсами кластера.
  4. Hadoop MapReduce : система, заснована на ПІВНІ для паралельної обробки великих наборів даних.

HBase - це масштабована, розподілена база даних, яка підтримує структуроване зберігання даних для великих таблиць. Так само, як Bigtableвикористовує розподілене зберігання даних, надане файловою системою Google, Apache HBase надає можливості, схожі на Bigtable, на вершині Hadoop та HDFS.

Коли використовувати HBase:

  1. Якщо у вашому додатку є змінна схема, де кожен рядок трохи відрізняється
  2. Якщо ви виявите, що ваші дані зберігаються в колекціях, це все введено в одне значення
  3. Якщо вам потрібен випадковий читання / запис доступу в реальному часі до ваших великих даних.
  4. Якщо під час зберігання чи отримання потрібен доступ до даних на основі ключа.
  5. Якщо у вас є величезна кількість даних із наявним кластером Hadoop

Але HBase має деякі обмеження

  1. Його не можна використовувати для класичних транзакційних програм або навіть реляційної аналітики.
  2. Він також не є повноцінною заміною HDFS при великій партії MapReduce.
  3. Він не розмовляє з SQL, має оптимізатор, підтримує перехресні транзакції або приєднується.
  4. Його не можна використовувати зі складними моделями доступу (наприклад, приєднання)

Підсумок:

Розгляньте HBase, коли ви завантажуєте дані за ключем, шукаєте дані за ключем (або діапазоном), обслуговуєте дані за ключем, запитуєте дані за ключем або під час зберігання даних за рядками, які не відповідають схемі.

Подивіться на Do's and Don't of HBase з блогу cloudera .


як щодо використання hbase як datalake для дуже великої кількості даних (невеликих файлів)? чи може він керувати стільки даних, скільки hdfs?
Мехді ТАЗІ

1
Якщо ви створюєте безліч невеликих файлів, то, залежно від структури доступу, інший тип пам’яті може бути більш підходящим. HBase зберігає дані в MapFiles (індексовані SequenceFiles), і це хороший вибір, якщо вам потрібно зробити потокове передавання стилю MapReduce. аналізи з випадковим випадковим поглядом вгору
Равіндра бабу

4

Hadoop використовує розподілену файлову систему, тобто HDFS, для зберігання великих даних. Але існують певні обмеження HDFS та Inorder для подолання цих обмежень, виникли бази даних NoSQL, такі як HBase, Cassandra та Mongodb.

Hadoop може виконувати лише пакетну обробку, а доступ до даних буде здійснюватися лише послідовно. Це означає, що потрібно шукати весь набір даних навіть для найпростіших завдань. Величезний набір даних при обробці призводить до іншого величезного набору даних, який також слід обробляти послідовно. На даний момент потрібне нове рішення для доступу до будь-якої точки даних за одну одиницю часу (випадковий доступ).

Як і всі інші FileSystems, HDFS надає нам сховище, але у відношенні до помилок з високою пропускною здатністю та меншим ризиком втрати даних (через реплікацію). Ось тут на малюнок входить HBase. Це розподілений, масштабований, великий сховище даних, за зразком BigTable від Google. Кассандра дещо схожа на базу.


4

І HBase, і HDFS в одному знімку

І HBase, і HDFS в одному знімку

Примітка:

Перевірте HDFS-демони ( виділені зеленим кольором), як DataNode (узгоджені сервери регіону) та NameNode в кластері, на яких є як HBase, так і Hadoop HDFS

HDFS - це розподілена файлова система, яка добре підходить для зберігання великих файлів. що не забезпечує швидкого індивідуального пошуку записів у файлах.

HBase , з іншого боку, побудований поверх HDFS і забезпечує швидкий пошук записів (та оновлення) для великих таблиць. Іноді це може бути пунктом концептуальної плутанини. HBase внутрішньо розміщує ваші дані в індексованих "StoreFiles", які існують на HDFS, для високошвидкісного пошуку.

Як це виглядає?

Що ж, на інфраструктурному рівні у кожної залишкової машини в кластері є наступні демони

  • Сервер регіону - HBase
  • Вузол даних - HDFS

Рабська машина

Як швидко пройти пошук?

HBase досягає швидкого пошуку на HDFS (іноді також і в інших розподілених файлових системах) як базовому сховищі, використовуючи наступну модель даних

  • Таблиця

    • Таблиця HBase складається з декількох рядків.
  • Ряд

    • Рядок в HBase складається з ключа рядка і одного або декількох стовпців зі значеннями, пов'язаними з ними. Рядки сортуються в алфавітному порядку за ключем рядка під час їх збереження. З цієї причини дуже важливим є дизайн ключа рядка. Мета полягає в тому, щоб зберігати дані таким чином, щоб відповідні рядки знаходилися поруч один з одним. Поширений зразок ключових рядків - домен веб-сайту. Якщо ключі рядків є доменами, ви, ймовірно, повинні зберігати їх у зворотному порядку (org.apache.www, org.apache.mail, org.apache.jira). Таким чином, усі домени Apache знаходяться поруч один з одним у таблиці, а не розповсюджуються на основі першої літери субдомену.
  • Стовпчик

    • Стовпець у HBase складається з сімейства стовпців та класифікатора стовпців, які розмежовані символом: (двокрапка).
  • Колонна сім'я

    • Сімейства стовпців фізично виділяють набір стовпців та їх значення, часто з міркувань продуктивності. Кожна сім'я стовпців має набір властивостей пам’яті, наприклад, чи слід її значення кешувати в пам’яті, як стискати її дані чи кодувати ключі рядків та інші. Кожен рядок таблиці має однакові сімейства стовпців, хоча даний рядок може нічого не зберігати в даній родині стовпців.
  • Кваліфікатор стовпця

    • Класифікатор стовпців додається до сімейства стовпців для надання індексу для даного фрагмента даних. Враховуючи вміст сім'ї стовпців, класифікатором стовпців може бути вміст: html, а іншим може бути вміст: pdf. Хоча сімейства стовпців зафіксовані під час створення таблиці, класифікатори стовпців можуть змінюватися і можуть сильно відрізнятися між рядками.
  • Осередок

    • Клітина - це комбінація рядків, сімейства стовпців та класифікатора стовпців, містить значення та часову позначку, що представляє версію значення.
  • Відмітка часу

    • Позначення часу записується поряд із кожним значенням і є ідентифікатором для даної версії значення. За замовчуванням часова марка представляє час у регіоніServer, коли дані були записані, але ви можете вказати інше значення часової позначки, коли ви вводите дані в комірку.

Клієнт читає потік запитів:

Клієнт читає потік запитів

Що таке мета-таблиця на наведеному малюнку?

мета-таблиця

Після всієї інформації, потік зчитування HBase призначений для пошуку цих дотиків

  1. По-перше, сканер шукає клітинки Row в кеш-блоці - кеш -читання. Нещодавно прочитані ключові значення тут кешовані, а найменш нещодавно використані вилучаються, коли потрібна пам'ять.
  2. Далі сканер шукає в MemStore , кеш-пам'яті запису в пам'яті, що містить останні записи.
  3. Якщо сканер не знайде всіх комірок рядків у MemStore та Bloche Cache, то HBase використовуватиме індекси Bloche Cache та фільтри розквіту для завантаження HFi-файлів у пам'ять, які можуть містити цільові комірки рядків.

джерела та додаткова інформація:

  1. Модель даних HBase
  2. HBase architecute

1

Довідка: http://www.quora.com/What-is-the-difference-bet between-HBASE-and-HDFS-in- Hadoop

Hadoop - загальна назва для декількох підсистем: 1) HDFS. Розподілена файлова система, яка розподіляє дані по кластеру машин, що дбають про надмірність тощо. 2) Зменшення карти. Система управління завданнями на вершині HDFS - для управління завданнями зменшення карт (та інших типів) обробки даних, що зберігаються на HDFS.

В основному це означає його офлайн-систему - ви зберігаєте дані на HDFS і можете обробляти їх, виконуючи завдання.

З іншого боку, HBase у базі даних на основі стовпців. Він використовує HDFS як сховище - яке піклується про резервне копіювання \ надмірність \ тощо, але його "Інтернет-магазин" - це означає, що ви можете запитувати його для конкретних рядків \ рядків тощо і отримувати негайне значення.


0

HDFS - це розподілена файлова система на базі Java, яка дозволяє зберігати великі дані в декількох вузлах кластеру Hadoop. Тоді як HBase - це база даних NoSQL (подібно до NTFS та MySQL).

Оскільки HDFS та HBase зберігають усі види даних, такі як структуровані, напівструктуровані та неструктуровані в розподіленому середовищі.

Відмінності між HDFS та HBase

  • HBase забезпечує низький латентний доступ до невеликих обсягів даних у великих наборах даних, тоді як HDFS забезпечує операції з високою затримкою.
  • HBase підтримує випадкове читання і запис, тоді як HDFS підтримує WORM (Пишіть один раз, прочитавши багато або кілька разів).
  • Доступ до HDFS в основному або в першу чергу здійснюється через завдання MapReduce, тоді як доступ до HBase здійснюється через команди оболонки, Java API, REST, Avro або Thrift API.

HDFS зберігає великі набори даних у розподіленому середовищі та використовує пакетну обробку цих даних.

Хоча HBase зберігає дані орієнтованим на стовпчик, де кожен стовпець зберігається разом, так що читання стає швидшим, використовуючи обробку в режимі реального часу.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.