І 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 призначений для пошуку цих дотиків
- По-перше, сканер шукає клітинки Row в кеш-блоці - кеш -читання. Нещодавно прочитані ключові значення тут кешовані, а найменш нещодавно використані вилучаються, коли потрібна пам'ять.
- Далі сканер шукає в MemStore , кеш-пам'яті запису в пам'яті, що містить останні записи.
- Якщо сканер не знайде всіх комірок рядків у MemStore та Bloche Cache, то HBase використовуватиме індекси Bloche Cache та фільтри розквіту для завантаження HFi-файлів у пам'ять, які можуть містити цільові комірки рядків.
джерела та додаткова інформація:
- Модель даних HBase
- HBase architecute