Углубленное понимание архитектуры HBase: от теории к практике
Углубленное понимание архитектуры HBase: от теории к практике

HBase — это распределенная база данных NoSQL с колоночным хранилищем, разработанная на основе Google Bigtable и используемая для обработки огромных объемов структурированных данных. Уникальность архитектуры HBase делает ее широко используемой в сфере больших данных. В этой статье будет подробно представлен архитектурный проект HBase, от теоретических концепций до практического развертывания, и проанализирован его на конкретных примерах.

HBase изначально был разработан разработчиками Apache Hadoop для решения проблем хранения и извлечения больших объемов данных в распределенной файловой системе Hadoop (HDFS). Традиционные реляционные базы данных неэффективны при обработке крупномасштабных данных и их трудно расширять. Будучи базой данных NoSQL, HBase обеспечивает эффективные операции чтения и записи больших объемов данных и обладает высокой масштабируемостью.

Требование проекта состоит в том, чтобы построить крупномасштабную систему хранения данных, способную обрабатывать миллиарды записей. Система должна иметь возможность выполнять высококонкурентные запросы на чтение и запись, и в то же время производительность системы не будет значительно снижаться при выходе из строя. объем данных резко возрастает. HBase разработан специально для такого рода потребностей.


Обзор архитектуры HBase

Архитектура HBase разделена на несколько ключевых компонентов:

компоненты

описывать

HMaster

HMaster является главным узлом кластера HBase и отвечает за координацию операций кластера, таких как создание, удаление таблиц, управление разделами и т. д. HMaster также отвечает за выделение и мониторинг серверов RegionServers для обеспечения стабильной работы кластера.

RegionServer

RegionServer — это узел, отвечающий за хранение и управление данными. Каждый региональный сервер может управлять несколькими регионами, и каждый регион представляет собой подмножество данных. RegionServer обрабатывает клиентские запросы на чтение и запись, обеспечивая согласованность и надежность данных.

Zookeeper

Zookeeper — это служба координации кластера HBase. Она отвечает за управление информацией о конфигурации и метаданными кластера, а также за мониторинг состояния HMaster и RegionServer. Zookeeper обеспечивает высокую доступность кластера и автоматически восстанавливает вышедшие из строя узлы с помощью механизма выборов.

HFile и MemStore

HFile — это физический файл хранения данных HBase, который хранится в модулях семейства столбцов. MemStore — это структура данных HBase в памяти, используемая для кэширования операций записи. Когда MemStore достигнет определенного размера, данные будут сброшены в HFile.

Write-Ahead Log (WAL)

WAL — это журнал упреждающей записи HBase, который используется для записи операций записи данных, чтобы гарантировать, что данные не будут потеряны в случае сбоя системы. Существование WAL повышает надежность данных HBase.


Модель данных и операции HBase

модель данных

HBase измодель данные отличаются от традиционной реляционной базы данных, усыновленной разреженной моделью многомерного отображения. Он относится к базовой единице хранения: таблица (Table). Таблица состоит из строки (Row) и семейства столбцов (Column). Семейный) состав. Каждое семейство столбцов может содержать несколько столбцов (Column), а версия данных столбца определяется по метке времени (Timestamp).

Таблицы в HBase ориентированы на строки, и каждая строка имеет уникальный ключ строки. Ключ строки — это уникальный идентификатор данных в таблице, а доступ к столбцам в семействе столбцов осуществляется через ключ столбца (ключ столбца). Значение данных каждой ячейки может иметь несколько версий, управляемых с помощью меток времени.

Пример отображения:

Row Key

Column Family:Column

Value

Timestamp

row1

cf1:col1

value1

1627871234000

row1

cf1:col2

value2

1627871235000

row2

cf1:col1

value3

1627871236000

Основные операции

HBase Обеспечивает богатый API Выполнять операции с данными, в том числе PutGetDelete и ScanPut для записи данных,Get для чтения данных,Delete используется для Удалить данные,Scan Используется для пакетного чтения данных.

  • Put:Записать данные в таблицусередина.
  • Get:Чтение данных на основе ключа строки。
  • Delete:Удалить указанную строку или столбецизданные。
  • Scan:Пройти через столизданные。

Хранение и извлечение данных HBase

HBase Усыновленный LSM (Log-Structured Merge) древовидная структура, комбинация WAL и MemStore Повышена эффективность записи данных.

Процесс записи

Когда клиент отправляет запрос на запись в HBase, данные сначала записываются в WAL, а затем сохраняются в MemStore. WAL гарантирует, что данные не будут потеряны в случае сбоя RegionServer. MemStore сохранит данные в HFile на диске после достижения определенного порога.

Процесс чтения

Когда клиент инициирует запрос на чтение, RegionServer сначала будет внутри MemStore Искать данные в, если не нашли, то из HFile Найдите в . путем спаривания MemStore и HFile Используется совместно с HBase. Способен обеспечить высокую производительность чтения данных.


Масштабируемость HBase и высокая доступность

HBase из Архитектурный дизайн обеспечивает хорошую из Маштабируемостьи Высокая доступность。

характеристика

описывать

Масштабируемость

HBase может обеспечить горизонтальное расширение путем добавления узлов RegionServer. Когда объем данных увеличивается, HMaster может разделить регион на более мелкие регионы и распределить их по новым серверам региона.

Высокая доступность

Контролируя каждый узел кластера через Zookeeper, HBase реализует механизм автоматического восстановления после сбоев. В случае сбоя RegionServer HMaster перераспределит регионы, которыми он управляет, другим работоспособным RegionServer.


Практический бой: установка и развертывание HBase

Экологическая подготовка

  • Операционная система: Ubuntu 20.04
  • Java: JDK 1.8+
  • Hadoop: 3.2.2
  • HBase: 2.4.8
  • Zookeeper: 3.7.1

Этапы установки

(i) Установить Java

Язык кода:bash
копировать
sudo apt update
sudo apt install openjdk-8-jdk
java -version

(ii) Развертывание Hadoop

Язык кода:bash
копировать
wget https://downloads.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
tar -xzvf hadoop-3.2.2.tar.gz
sudo mv hadoop-3.2.2 /usr/local/hadoop

Настройте переменные среды Hadoop:

Язык кода:bash
копировать
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

(iii) Установите Zookeeper

Язык кода:bash
копировать
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -xzvf apache-zookeeper-3.7.1-bin.tar.gz
sudo mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper

Настройте Zookeeper:

Язык кода:bash
копировать
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

(iv) Установите HBase

Язык кода:bash
копировать
wget https://downloads.apache.org/hbase/2.4.8/hbase-2.4.8-bin.tar.gz
tar -xzvf hbase-2.4.8-bin.tar.gz
sudo mv hbase-2.4.8 /usr/local/hbase

Настройте переменные среды HBase:

Язык кода:bash
копировать
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin

Конфигурация hbase-site.xml:

Язык кода:xml
копировать
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
  </property>
</configuration>

(v) Запустить HBase

Язык кода:bash
копировать
start-hbase.sh

путем доступа http://localhost:16010 подтверждать HBase Стартовал успешно.


Практический бой: операции с данными HBase

  1. Создать таблицу

Создайте простую таблицу в HBase.

Язык кода:shell
копировать
hbase shell
Язык кода:shell
копировать
create 'test', 'cf'
  1. Вставить данные

Вставьте некоторые данные в таблицу.

Язык кода:shell
копировать
put 'my_table', 'row1', 'cf1:col1', 'value1'
put 'my_table', 'row2', 'cf1:col2', 'value2'
  1. Данные запроса

Прочитайте вставленные данные.

Язык кода:shell
копировать
get 'my_table', 'row1'
  1. данные сканирования

Чтение данных в пакетном режиме.

Язык кода:shell
копировать
scan 'my_table'
  1. Удалить данные

Удалить указанную строку или столбец.

Язык кода:shell
копировать
delete 'my_table', 'row1', 'cf1:col1'
  1. Удалить таблицу

Удалить всю таблицу.

Язык кода:shell
копировать
disable 'my_table'
drop 'my_table'

Оптимизация и настройка HBase

Стратегия оптимизации

описывать

Настройка памяти

HBase из Производительность сильно зависит от памяти из Конфигурация. Можно регулировать путем hbase.regionserver.global.memstore.lowerLimit и hbase.regionserver.global.memstore.upperLimit параметры для оптимизации использования памяти.

Оптимизация диска

HBase из I/O Производительность напрямую влияет на эффективность чтения и записи. Можно регулировать с помощью HDFS из Размер блока HBase Метод сжатия файлов для повышения эффективности использования диска.

Оптимизация сети

существовать в распределенной среде,Задержка и пропускная способность сети оказывают большое влияние на производительность HBase. проводитьконфигурацию нескольких сетевых интерфейсов, оптимизацию стека сетевых протоколов и другие методы.,Может уменьшить узкие места в сети.


HBase как Мощный из Распределенного NoSQL База данных с хорошей из Маштабируемостьюи Высокая доступность。проходить Глубокое понимание HBase Архитектура и принцип ее работы в сочетании с реальными потребностями в разумной оптимизации конфигурации могут дать полную свободу HBase существуют из Преимущества в обработке больших данных.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose