Как установить hbase на windows 10

Обновлено: 04.07.2024

Поскольку сейчас в Linux разрабатывается больше приложений, чем когда-либо прежде, компания Microsoft осознала, что ей необходимо предоставить разработчикам простой способ создания, тестирования и запуска приложений Linux, не покидая рабочего стола Windows. Подсистема Windows для Linux (WSL) изначально была разработана для предоставления интегрированной терминальной среды Linux в Windows без необходимости настройки и управления виртуальной машины. Но что, если вы хотите запустить редактор графического интерфейса Linux или другое приложение с графическим интерфейсом, используя WSL?

Microsoft объявила 21 апреля что WSL, начиная с Windows 10 Insider Preview Build 21364, теперь поддерживает запуск графических приложений Linux. Таким образом, используя сборку 21364 и выше, разработчики могут запускать свои предпочтительные редакторы графического интерфейса и инструменты для тестирования и создания приложений Linux без необходимости в установке дополнительных программ и установки X-сервера. В этой статье мы опишем, как обновить WSL для поддержки приложений с графическим интерфейсом, как установить приложение с графическим интерфейсом в Ubuntu и, наконец, посмотреть, как приложения Linux с графическим интерфейсом интегрируются с пользовательским интерфейсом Windows 10.


Windows 10, версия 21H2 и поддержка графического интерфейса Linux приложений

Windows 10, версия 21H2 появится не раньше второй половины 2021 года, но Microsoft занята разработкой предварительных версий для инсайдеров. До недавнего времени WSL официально поддерживал только терминальные приложения Linux. Но компания Microsoft недавно выполнила обещание, данное в прошлом году, по обеспечению поддержки приложений с графическим интерфейсом для подсистемы Windows для Linux (WSL). Если вы не знаете, WSL 2 – это функция в Windows 10, которая позволяет разработчикам добавлять ядро Linux в Windows, а затем загружать поддержку терминала для нескольких дистрибутивов Linux, включая Ubuntu и SUSE.

Для чего нужна поддержка графического интерфейса Linux приложений в WSL?

Основным вариантом использования поддержки приложений Linux с графическим интерфейсом является запуск IDE (интегрированная среда разработки), которые поддерживаются только в Linux. Хотя многие разработчики используют Visual Studio Code в Windows для подключения к своим экземплярам Linux в WSL, некоторые разработчики предпочитают использовать такие инструменты Linux, как gedit, JetBrains и gvim.

Есть и другие приложения, которые работают только в Linux. WSL теперь позволяет разработчикам запускать эти приложения без необходимости в виртуальной машине Linux. Поддержка нового приложения с графическим интерфейсом пользователя в WSL, иногда называемого WSLg, также позволяет разработчикам тестировать кроссплатформенные приложения с графическим интерфейсом. Присутствует даже поддержка звука и микрофона.

Для ресурсоемких графических приложений WSLg поддерживает 3D-ускорение через OpenGL. Аппаратное ускорение GPU может принести пользу разработчикам, запускающим сложные приложения, использующие преимущества виртуального GPU WSL. Microsoft заявляет, что если вы хотите поэкспериментировать с 3D-ускоренной графикой в WSL, вам необходимо вручную загрузить драйвер WDDMv3.0 для графических процессоров AMD, Intel и NVIDIA соответственно. В конечном итоге эти драйвера будут автоматически развернуты с помощью Центра обновления Windows.

Как обеспечивается поддержка графических приложений в WSL?

Когда вы запускаете приложение Linux с графическим интерфейсом, Windows автоматически запускает сопутствующий дистрибутив Linux, который включает XWayland, звуковой сервер PulseAudio и всё необходимое для работы приложений с графическим интерфейсом Linux в Windows. Linux приложения с графическим интерфейсом интегрированы с пользовательским интерфейсом Windows, и когда вы завершаете приложение, сеанс сопутствующего дистрибутива Linux также завершается, чтобы уменьшить использование системных ресурсов.


WSLg поддерживает графические приложения в Wayland и X11. Microsoft разработала WSLg как приложение с открытым исходным кодом. WSLg изолирован от пользовательского дистрибутива Linux, поэтому WSLg можно использовать независимо. Дистрибутив-компаньон WSLg использует CBL-Mariner, легкий и настраиваемый дистрибутив Linux, поддерживаемый Microsoft Linux System Group. CBL-Mariner изначально был разработан для автономных контейнерных рабочих нагрузок, выполняемых в Azure и других сервисах Microsoft.

Как обновить WSL для поддержки приложений Linux с графическим интерфейсом

Если у вас уже установлен WSL в Windows и вы используете инсайдерскую сборку Windows 10 не ниже версии 21364 Insider Preview, то вам необходимо так же обновить существующую установку WSL для поддержки WSLg.

Обновление установленного WSL

Есть два простых шага для обновления WSL. Сначала выключите все запущенные дистрибутивы, а затем обновите WSL с помощью инструмента командной строки wsl.exe.

  • Откройте командную строку (cmd.exe) от имени Администратора.
  • В окне командной строки выполните следующие команды:


WSLg поддерживает только WSL 2, поэтому вам необходимо убедиться, что все существующие и будущие дистрибутивы Linux настроены для работы в WSL 2. Вы можете настроить существующие дистрибутивы на использование WSL 2, используя переключатель –set -version и заменив имя Ubuntu на название дистрибутива Linux, установленного на вашем ПК. Используйте wsl –list -v, чтобы отобразить список дистрибутивов Linux, установленных в системе.

Затем перезапустите WSL, чтобы завершить процесс:

Установка WSL с поддержкой приложений Linux с графическим интерфейсом

Если вы хотите установить WSL в первый раз в Windows 10 Build 21364 или выше, вам просто нужно установить WSL с помощью командной строки. Поддержка WSLg встроена. Приведенная ниже команда устанавливает WSL, а затем устанавливает дистрибутив Ubuntu. Вам будет предложено перезагрузить компьютер.

Для установки WSL с поддержкой графического интерфейса Linux приложений выполните следующую команду в командной строке (cmd.exe) от имени Администратора:


После перезагрузки системы вас встретит открытое окно командной строки WSL, в котором нужно будет создать имя пользователя и задать пароль root.


Установка Linux приложений с графическим интерфейсом в Ubuntu WSL

Теперь запустите свой дистрибутив Linux из меню «Пуск» Windows. В этом примере я использую Ubuntu, поэтому я найду значок Ubuntu в списке приложений в меню «Пуск». Щелчок по значку Ubuntu запускает окно терминала Ubuntu. Теперь установите приложения Linux с графическим интерфейсом так же, как и в любом другом дистрибутиве Ubuntu.

Например, поскольку Ubuntu основан на Debian, используйте команду apt для установки приложений. Вам нужно будет выполнить команду sudo, чтобы запустить ее с повышенными привилегиями в Linux. Первый шаг – обновить все существующие пакеты в Ubuntu:

Здесь я использую apt для установки Nautilus, файлового менеджера с графическим интерфейсом для Linux:


Другой пример – установка предварительной версии Microsoft Edge для Linux. Здесь мне нужно загрузить пакет с веб-сайта Microsoft, а затем установить его с помощью apt.

sudo apt install /tmp/edge.deb -y

Запуск приложений Linux с графическим интерфейсом и интеграция с пользовательским интерфейсом Windows 10

После того, как выбранные вами приложения будут установлены, вы найдете их в списке приложений в меню «Пуск» Windows. Запускайте приложения с графическим интерфейсом для Linux, как любое приложение для Windows.


Кроме того, вы можете запускать приложения с графическим интерфейсом из окна терминала Linux. Например, чтобы запустить Nautilus из терминала, я бы просто набрал nautilus и нажал ENTER. Или microsoft-edge и нажмите ENTER, чтобы запустить Microsoft Edge.


Браузер Edge даже идентифицируется как отличная от версии, установленной в Windows, по пингвину в правом нижнем углу значка приложения.


Приложения Linux с графическим интерфейсом в Windows 10

WSLg все еще находится в стадии разработки, но, похоже, на этом этапе они далеко продвинулись. Microsoft будет настраивать его в следующих сборках Insider до того, как Windows 10 21H2 выйдет позже в 2021 году. За время тестирования, WSLg, похоже, работал так, как ожидалось. Я не устанавливал графические драйверы виртуального графического процессора, как рекомендовали Microsoft. Но и без них вроде все нормально работало.

Если вам не терпится получить официальную поддержку графических приложений Linux GUI в WSL, вы можете переключиться на канал предварительной оценки. Имейте ввиду, эти обновления для WSL в настоящее время доступны только инсайдерам на канале Dev, который считается наиболее нестабильным. Итак, вы можете подождать либо до официального релиза 21H2, либо, по крайней мере, до тех пор, пока WSLg не перейдет на бета-версию или канал Release Preview.

Эта глава объясняет, как HBase установлен и изначально настроен. Java и Hadoop необходимы для продолжения работы с HBase, поэтому вам необходимо загрузить и установить java и Hadoop в вашей системе.

Настройка перед установкой

Перед установкой Hadoop в среду Linux нам нужно настроить Linux с помощью ssh (Secure Shell). Следуйте приведенным ниже инструкциям для настройки среды Linux.

Создание пользователя

Прежде всего, рекомендуется создать отдельного пользователя для Hadoop, чтобы изолировать файловую систему Hadoop от файловой системы Unix. Следуйте инструкциям ниже, чтобы создать пользователя.

  • Откройте корень с помощью команды «su».
  • Создайте пользователя из учетной записи root с помощью команды «useradd username».
  • Теперь вы можете открыть существующую учетную запись пользователя с помощью команды «su username».

Откройте терминал Linux и введите следующие команды, чтобы создать пользователя.

Настройка SSH и генерация ключей

Настройка SSH требуется для выполнения различных операций в кластере, таких как запуск, остановка и операции распределенной оболочки демона. Для аутентификации разных пользователей Hadoop требуется предоставить пару открытого / закрытого ключа для пользователя Hadoop и поделиться ею с разными пользователями.

Следующие команды используются для генерации пары ключ-значение с использованием SSH. Скопируйте открытые ключи из формы id_rsa.pub в author_keys и предоставьте владелец, права на чтение и запись в файл authorized_keys соответственно.

Проверьте SSH

Установка Java

Java является основной предпосылкой для Hadoop и HBase. Прежде всего, вы должны проверить существование java в вашей системе, используя «java -version». Синтаксис команды версии Java приведен ниже.

Если все работает нормально, вы получите следующий вывод.

Если java не установлен в вашей системе, следуйте приведенным ниже инструкциям для установки java.

Шаг 1

Затем jdk-7u71-linux-x64.tar.gz будет загружен в вашу систему.

Шаг 2

Обычно вы найдете загруженный файл Java в папке Downloads. Проверьте его и извлеките файл jdk-7u71-linux-x64.gz, используя следующие команды.

Шаг 3

Чтобы сделать Java доступным для всех пользователей, вы должны переместить его в папку «/ usr / local /». Откройте root и введите следующие команды.

Шаг 4

Для настройки переменных PATH и JAVA_HOME добавьте следующие команды в файл

Теперь примените все изменения в текущей работающей системе.

Шаг 5

Используйте следующие команды для настройки альтернатив Java:

Теперь проверьте команду java -version из терминала, как описано выше.

Загрузка Hadoop

После установки Java вы должны установить Hadoop. Прежде всего, проверьте наличие Hadoop с помощью команды «Hadoop version», как показано ниже.

Если все работает нормально, вы получите следующий вывод.

Если ваша система не может найти Hadoop, загрузите Hadoop в свою систему. Следуйте приведенным ниже командам, чтобы сделать это.

Загрузите и извлеките hadoop-2.6.0 из Apache Software Foundation, используя следующие команды.

Установка Hadoop

Установите Hadoop в любом необходимом режиме. Здесь мы демонстрируем функциональность HBase в псевдораспределенном режиме, поэтому установите Hadoop в псевдораспределенном режиме.

Следующие шаги используются для установки Hadoop 2.4.1 .

Вы можете установить переменные среды Hadoop, добавив следующие команды в файл

Теперь примените все изменения в текущей работающей системе.

Вы можете найти все файлы конфигурации Hadoop в папке «$ HADOOP_HOME / etc / hadoop». Вам необходимо внести изменения в эти файлы конфигурации в соответствии с вашей инфраструктурой Hadoop.

Чтобы разрабатывать программы Hadoop на языке java, необходимо сбросить переменную среды java в файле hadoop-env.sh , заменив значение JAVA_HOME местоположением java в вашей системе.

Вам нужно будет отредактировать следующие файлы для настройки Hadoop.

ядро-site.xml

Файл core-site.xml содержит такую ​​информацию, как номер порта, используемый для экземпляра Hadoop, память, выделенная для файловой системы, лимит памяти для хранения данных и размер буферов чтения / записи.

Откройте core-site.xml и добавьте следующие свойства между тегами <configuration> и </ configuration>.

HDFS-site.xml

Файл hdfs-site.xml содержит такую ​​информацию, как значение данных репликации, путь namenode и путь datanode ваших локальных файловых систем, где вы хотите хранить инфраструктуру Hadoop.

Допустим, следующие данные.

Откройте этот файл и добавьте следующие свойства между тегами <configuration>, </ configuration>.

Примечание. В приведенном выше файле все значения свойств определяются пользователем, и вы можете вносить изменения в соответствии с инфраструктурой Hadoop.

В этом учебнике описано, как создавать кластеры Apache HBase в HDInsight, создавать таблицы HBase и запрашивать таблицы с помощью Apache Hive. Общие сведения об HBase см. в статье What is Apache HBase in Azure HDInsight (Что такое Apache HBase в HDInsight).

В этом руководстве описано следующее:

  • Создание кластера Apache HBase
  • Создание таблиц HBase и вставка данных
  • Использование Apache Hive для создания запросов к Apache HBase
  • Использование API REST для HBase
  • Проверка состояния кластера

Предварительные требования

Клиент SSH. Дополнительные сведения см. в руководстве по подключению к HDInsight (Apache Hadoop) с помощью SSH.

Bash. В примерах, приведенных в этой статье, для команд curl используется оболочка Bash в Windows 10. Шаги установки см. в статье Windows Subsystem for Linux Installation Guide for Windows 10 (Подсистема Windows для Linux в Windows 10). Другие оболочки Unix также будут работать. Примеры curl с некоторыми небольшими изменениями могут работать в командной строке Windows. Либо можете использовать командлет Windows PowerShell Invoke-RestMethod.

Создание кластера Apache HBase

В следующей процедуре используется шаблон Azure Resource Manager для создания кластера HBase. Шаблон также позволяет создать зависимую учетную запись службы хранилища Azure по умолчанию. Описание параметров, используемых в процедуре, и других методов создания кластеров см. в статье Создание кластеров Hadoop под управлением Linux в HDInsight.

Выберите следующее изображение, чтобы открыть шаблон на портале Azure. Шаблон находится на странице Шаблоны быстрого запуска Azure.

Deploy to Azure button for new cluster

В диалоговом окне Настраиваемое развертывание укажите следующие значения:

Все остальные параметры являются необязательными.

У каждого кластера есть зависимость учетной записи хранения для службы хранилища Azure. После удаления кластера данные остаются в учетной записи хранения. Имя учетной записи хранения в кластере — это имя кластера, к которому добавлено слово store. Это прописано в разделе переменных в коде шаблона.

Установите флажок Я принимаю указанные выше условия и выберите Приобрести. Процесс создания кластера занимает около 20 минут.

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

Создание таблиц и вставка данных

Для подключения к кластерам HBase можно использовать протокол SSH, а для создания таблиц HBase, вставки данных и создания запросов к данным — Apache HBase Shell.

Для большинства пользователей данные отображаются в табличном формате:

Табличные данные HDInsight Apache HBase

В HBase (реализация Cloud BigTable) те же данные выглядят следующим образом:

Данные BigTable в HDInsight Apache HBase

Использование оболочки HBase

С помощью команды ssh подключитесь к кластеру HBase. Измените приведенную ниже команду, заменив CLUSTERNAME именем своего кластера, а затем введите команду:

С помощью команды hbase shell запустите интерактивную оболочку HBase. В строку SSH-подключения введите следующую команду:

С помощью команды create создайте таблицу HBase с двумя семействами столбцов. В именах таблиц и столбцов учитывается регистр. Введите следующую команду:

С помощью команды list выведите список всех таблиц HBase. Введите следующую команду:

С помощью команды put вставьте значения в указанный столбец строки в определенной таблице. Введите следующие команды:

С помощью команды scan выполните сканирование данных таблицы Contacts и верните их. Введите следующую команду:

Оболочка HDInsight Apache Hadoop HBase

С помощью команды get получите содержимое строки. Введите следующую команду:

Вы увидите те же результаты, что и при использовании команды scan , так как в таблице есть только одна строка.

Дополнительные сведения о схеме таблицы HBase см. в этой статье. Дополнительные команды HBase см. в справочнике по Apache HBase.

С помощью команды exit остановите интерактивную оболочку HBase. Введите следующую команду:

Для массовой загрузки данных в таблицу контактов HBase

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

8396 Calvin Raji 230-555-0191 230-555-0191 5415 San Gabriel Dr.

16600 Karen Wu 646-555-0113 230-555-0192 9265 La Paz

16891 Jonn Jackson 674-555-0110 230-555-0194 40 Ellis St.

3273 Miguel Miller 397-555-0155 230-555-0195 6696 Anchor Drive

3588 Osa Agbonile 592-555-0152 230-555-0196 1873 Lion Circle

10272 Julia Lee 870-555-0110 230-555-0197 3148 Rose Street

4868 Jose Hayes 599-555-0171 230-555-0198 793 Crawford Street

4761 Caleb Alexander 670-555-0141 230-555-0199 4775 Kentucky Dr.

Эта процедура использует таблицу Contacts HBase, созданную в последней процедуре.

В открытом сеансе SSH-подключения выполните следующую команду, чтобы преобразовать файл данных в StoreFiles и сохранить по относительному пути, указанному в Dimporttsv.bulk.output .

Для передачи данных из /example/data/storeDataFileOutput в таблицу HBase выполните следующую команду:

Откройте оболочку HBase и выполните команду scan для получения списка содержимого таблицы.

Использование Apache Hive для создания запросов к Apache HBase

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

В открытом сеансе SSH-подключения используйте следующую команду, чтобы запустить Beeline.

Выполните приведенный ниже скрипт HiveQL, чтобы создать таблицу Hive, сопоставляемую с таблицей HBase. Перед выполнением этой инструкции убедитесь, что вы создали упомянутый в этой статье пример таблицы с помощью оболочки HBase.

Запустите приведенный ниже скрипт HiveQL, чтобы запросить данные в таблице HBase.

Чтобы выйти из Beeline, используйте инструкцию !exit .

Чтобы выйти из сеанса SSH-подключения, используйте exit .

Разделение кластеров Hive и HBase

Запрос Hive для доступа к данным HBase не следует выполнять из кластера HBase. Для запроса данных HBase можно использовать любой кластер, поставляемый с Hive (включая Spark, Hadoop, HBase или Interactive Query), при условии что выполнены следующие шаги:

  1. Оба кластера должны быть подключены к одной виртуальной сети и подсети.
  2. Скопируйте /usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml из головных узлов кластера HBase в головные и рабочие узлы кластера Hive.

Безопасные кластеры

Данные HBase можно также запрашивать из Hive с помощью HBase с поддержкой протокола ESP:

  1. При использовании шаблона с несколькими кластерами оба кластера должны включать протокол ESP.
  2. Чтобы разрешить Hive запрашивать данные HBase, убедитесь, что пользователю hive предоставлены разрешения на доступ к данным HBase через подключаемый модуль HBase Apache Ranger.
  3. При использовании отдельных кластеров с поддержкой протокола ESP содержимое /etc/hosts из головных узлов кластера HBase нужно добавить в /etc/hosts головных и рабочих узлов кластера Hive.

После масштабирования кластеров необходимо повторно добавить /etc/hosts .

Использование REST API HBase с Curl

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

Задайте переменную среды для простоты использования. Измените команды ниже, заменив MYPASSWORD паролем для входа в кластер. Замените MYCLUSTERNAME именем кластера HBase. Затем введите указанные ниже команды.

Для получения списка имеющихся таблиц HBase используйте следующую команду:

Для создания новой таблицы HBase с двумя семействами столбцов используйте следующую команду:

Схема предоставляется в формате JSON.

Чтобы вставить какие-либо данные, используйте следующую команду:

Для кодировки значений в параметре -d используется Base64. Ознакомьтесь со следующим примером:

UGVyc29uYWw6TmFtZQ==: Personal: Имя

Sm9obiBEb2xl: John Dole

false-row-key позволяет вставить несколько (пакетных) значений.

Для получения строки используйте следующую команду:

Thrift не поддерживается HBase в HDInsight.

При использовании Curl или любых других средств связи REST с WebHCat нужно выполнять аутентификацию запросов с помощью пароля и имени пользователя администратора кластера HDInsight. Имя кластера необходимо также использовать в составе универсального кода ресурса (URI), используемого для отправки запросов на сервер.

Вы должны получить ответ, аналогичный приведенному ниже.

Проверка состояния кластера

HBase на HDInsight поставляется с веб-интерфейсом для наблюдения за кластерами. С помощью веб-интерфейса вы можете запросить статистику или сведения о регионах.

Доступ к основному интерфейсу HBase

В меню слева выберите HBase.

В верхней части страницы выберите Быстрые ссылки, выберите ссылку на активный узел Zookeeper, а затем щелкните HBase Master UI (Основной интерфейс HBase). Интерфейс откроется в новой вкладке браузера.

Пользовательский интерфейс HDInsight Apache HBase HMaster

Основной интерфейс HBase состоит из таких разделов:

  • региональные серверы;
  • главные узлы резервного копирования;
  • таблицы
  • задачи
  • атрибуты ПО.

Воссоздание кластера

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

Вы можете использовать команду HBase disable 'Contacts' .

Очистка ресурсов

Если вы не собираетесь использовать это приложение в дальнейшем, удалите созданный кластер HBase, сделав следующее:

Дальнейшие действия


Кто и зачем придумал Hbase

Как обычно — начнём с истории вопроса. Как и многие другие проекты из области BigData, Hbase зародилась из концепции которая была разработана в компании Google. Принципы лежащие в основе Hbase, были описаны в статье «Bigtable: A Distributed Storage System for Structured Data».

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

С другой стороны информацию хранящуюся в файлах довольно неудобно обновлять; Файлы также лишены возможности произвольного доступа. Для быстрой и удобной работы с произвольным доступом есть класс nosql-систем типа key-value storage, таких как Aerospike, Redis, Couchbase, Memcached. Однако в обычно в этих системах очень неудобна пакетная обработка данных. Hbase представляет из себя попытку объединения удобства пакетной обработки и удобства обновления и произвольного доступа.


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

Hbase — это распределенная, колоночно-ориентированная, мультиверсионная база типа «ключ-значение».
Данные организованы в таблицы , проиндексированные первичным ключом, который в Hbase называется RowKey .
Для каждого RowKey ключа может храниться неограниченны набор атрибутов (или колонок) .

Колонки организованны в группы колонок , называемые Column Family . Как правило в одну Column Family объединяют колонки, для которых одинаковы паттерн использования и хранения.

Для каждого аттрибута может храниться несколько различных версий . Разные версии имеют разный timestamp .

Записи физически хранятся в отсортированном по RowKey порядке. При этом данные соответствующие разным Column Family хранятся отдельно, что позволяет при необходимости читать данные только из нужного семейства колонок.

При удалении определённого атрибута физически он сразу не удаляется, а лишь маркируется специальным флажком tombstone . Физическое удаление данных произойдет позже, при выполнении операции Major Compaction.

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

Список и названия групп колонок фиксирован и имеет четкую схему. На уровне группы колонок задаются такие параметры как time to live (TTL) и максимальное количество хранимых версий . Если разница между timestamp для определенно версии и текущим временем больше TTL — запись помечается к удалению . Если количество версий для определённого атрибута превысило максимальное количество версий — запись также помечается к удалению .


Модель данных Hbase можно запомнить как соответствие ключ значение:

< table , RowKey , Column Family , Column , timestamp > -> Value

Поддерживаемые операции

Список поддерживаемых операций в hbase весьма прост. Поддерживаются 4 основные операции:

— Put: добавить новую запись в hbase. Timestamp этой записи может быть задан руками, в противном случае он будет установлен автоматически как текущее время.

— Get: получить данные по определенному RowKey. Можно указать Column Family, из которой будем брать данные и количество версий которые хотим прочитать.

— Scan: читать записи по очереди. Можно указать запись с которой начинаем читать, запись до которой читать, количество записей которые необходимо считать, Column Family из которой будет производиться чтение и максимальное количество версий для каждой записи.

— Delete: пометить определенную версию к удалению. Физического удаления при этом не произойдет, оно будет отложено до следующего Major Compaction (см. ниже).

Архитектура


Hbase является распределенной базой данных, которая может работать на десятках и сотнях физических серверов, обеспечивая бесперебойную работу даже при выходе из строя некоторых из них. Поэтому архитектура hbase довольна сложна по сравнению с классическими реляционными базами данных.

Hbase для своей работы использует два основных процесса:

1. Region Server — обслуживает один или несколько регионов. Регион — это диапазон записей соответствующих определенному диапазону подряд идущих RowKey. Каждый регион содержит:

    Persistent Storage — основное хранилище данных в Hbase. Данные физически хранятся на HDFS, в специальном формате HFile. Данные в HFile хранятся в отсортированном по RowKey порядке. Одной паре (регион, column family) соответствует как минимум один HFIle.

Для координации действий между сервисами Hbase использует Apache ZooKeeper, специальный сервис предназначенный для управления конфигурациями и синхронизацией сервисов.

При увеличении количества данных в регионе и достижении им определенного размера Hbase запускает split, операцию разбивающую регион на 2. Для того чтобы избежать постоянных делений регионов — можно заранее задать границы регионов и увеличить их максимальный размер.

Так как данные по одному региону могут храниться в нескольких HFile, для ускорения работы Hbase периодически их сливает воедино. Эта операция в Hbase называется compaction. Compaction’ы бывают двух видов:

    Minor Compaction. Запускается автоматически, выполняется в фоновом режиме. Имеет низкий приоритет по сравнению с другими операциями Hbase.

Способы работы с Hbase

Hbase Shell

Самый простой способ начать работу с Hbase — воспользоваться утилитой hbase shell. Она доступна сразу после установки hbase на любой ноде кластера hbase.


Hbase shell представляет из себя jruby-консоль c встроенной поддержкой всех основных операций по работе с Hbase. Ниже приведён пример создания таблицы users с двумя column family, выполнения некоторых манипуляций с ней и удаление таблицы в конце на языке hbase shell:

Native Api

Как и большинство других hadoop-related проектов hbase реализован на языке java, поэтому и нативный api доступен для языке java. Native API довольно неплохо задокументирован на официальном сайте. Вот пример использования Hbase API взятый оттуда же:

Thrift, REST и поддержка других языков программирования.

Для работы из других языков программирования Hbase предоставляет Thrift API и Rest API. На базе них построены клиенты для всех основных языков программирования: python, PHP, Java Script и тд.

Некоторые особенности работы с HBase

1. Hbase «из коробки» интегрируется с MapReduce, и может быть использована в качестве входных и выходных данных с помощью специальных TableInputFormat и TableOutputFormat.

2. Очень важно правильно выбрать RowKey. RowKey должен обеспечивать хорошее равномерное распределение по регионам, в противном случае есть риск возникновения так называемых «горячих регионов» — регионов которые используются гораздо чаще остальных, что приводит к неэффективному использованию ресурсов системы.

3. Если данные заливаются не единично, а сразу большими пачками — Hbase поддерживает специальный механизм BulkLoad, который позволяет заливать данные намного быстрее чем используя единичные Put’ы. BulkLoad по сути представляет из себя двухшаговую операцию:

— Формирование HFile без участия put’ов при помощи специального MapReduce job’a

— Подкладывание этих файликов напрямую в Hbase.

4. Hbase поддерживает вывод своих метрик в сервер мониторинга Ganglia. Это может быть очень полезно при администрировании Hbase для понимания сути происходящих с hbase проблем.

Пример

В качестве примера можем рассмотреть основную таблицу с данными, которая у нас в Data-Centric Aliance используется для хранения информации о поведении пользователей в интернете.

RowKey

В качестве RowKey используется идентификатор пользователя, в качестве которого используется GUUID, строчка специально генерируемая таким образом, чтобы быть уникальной во всем мире. GUUID’ы распределены равномерно, что дает хорошее распределение данных по серверам.

Column Family

В нашем хранилище используются две column family:

— Data. В этой группе колонок хранятся данные, которые теряют свою актуальность для рекламных целей, такие как факты посещения пользователем определенных URL. TTL на эту Column Family установлен в размере 2 месяца, ограничение по количеству версий — 2000.

— LongData. В этой группе колонок хранятся данные, которые не теряют свою актуальность в течение долгого времени, такие как пол, дата рождения и другие «вечные» характеристики пользователя

Колонки

Каждый тип фактов о пользователе хранится в отдельной колонке. Например в колонке Data:_v хранятся URL, посещенные пользователем, а в колонке LongData:gender — пол пользователя.

В качестве timestamp хранится время регистрации этого факта. Например в колонке Data:_v — в качестве timestamp используется время захода пользователем на определенный URL.

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

Альтернативы

Hbase довольно сложна в администрировании и использовании, поэтому прежде чем использовать hbase есть смысл обратить внимание на альтернативы:

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

Checklist по использованию Hbase

Использование Hbase оправдано когда:

— Данных много и они не влезают на один компьютер
— Данные часто обновляются и удаляются
— В данных присутствует явный «ключ» по к которому удобно привязывать все остальное
— Нужна пакетная обработка данных
— Нужен произвольный доступ к данным по определенным ключам

Заключение

В данной статье мы рассмотрели Hbase — мощное средство для хранения и обновления данных в экосистеме hadoop, показали модель данных Hbase, её архитектуру и особенности работы с ней.

В следующих статьях речь пойдет о средствах, упрощающих работу с MapReduce, таких как Apache Hive и Apache Pig.

От JDBC-подключения до SQL-запросов: пара примеров по Apache Hive, HBase и Spark

Автор Анна Вичугова Категория Hive, Статьи

CREATE EXTERNAL TABLE hiveHbaseTableUsers(key INT, id INT, username STRING, password STRING, email STRING) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,id:id,name:username,name:password,email:email”) TBLPROPERTIES(“hbase.table.name” = “hbasetable”);

Еще материалы по теме

Один на всех: реализация единого API для унифицированной аналитики больших данных c Apache Flink и Kafka в Pinterest

Один на всех: реализация единого API для унифицированной аналитики больших…

PXF, Greenplum и оптимизация SQL-запросов к разным источникам данных

PXF, Greenplum и оптимизация SQL-запросов к разным источникам данных

AVRO и JSON В Apache Kafka: краткий ликбез по реестру схем

AVRO и JSON В Apache Kafka: краткий ликбез по реестру…

Напиши отзыв и выиграй

Новое на сайте
Отзывы на Google

BigDataSchool

Курсы от инженеров и для инженеров. Всё чётко, по делу. Тренеры глубоко знают продукты, о которых читают лекции. read more

Принимал участие в обучении по курсу "KAFKA: Администрирование кластера Kafka". В целом понравилось, но хотелось бы более качественной организации работы с лабгайдами. Когда лектор выполняет лабораторную работу, не совсем удобно выполнять её параллельно - где-то отстаешь, где-то убегаешь вперед. Может будет лучше разделить на более мелкие модули. read more

Прошел Курс Администрирование кластера Hadoop. Подача материала хорошая, размеренная. Преподаватель отвечает на все вопросы, и пытается как можно прозрачней приподнести материал. read more

Обучался на программе HADM. Подача материала доступная. Порадовало соотношение теории и практики 50/50. Отзывчивый преподаватель. Однозначно рекомендую. read more

Заканчиваю прохождения курса "ADH: Администрирование кластера Arenadata Hadoop". Хочу сказать, что выстроен грамотный план обучения, где отслеживается отличное соотношение практики и теории. Преподаватель, Комисаренко Николай, обладает отличным чувством юмора, что позволило не скучать на серьезных темах, и обладает отличным навыком объяснять сложные вещи простыми словами. На курс приходил с большим числом вопросов, на все из которых получил грамотные ответы, после чего все разложилось по полочкам. read more

В декабре 2020 прошел курс "Администрирование кластера Kafka". Курс проводился удаленно. В части организации обучения придраться не к чему. Необходимую информацию прислали заранее, лабораторный стенд и портал обучения работали стабильно. Немного разочаровали лабораторные работы. На месте BigDataSchool я бы их переделал. В документах с лабами нужно сделать нормальное форматирование и нумерацию пунктов. Все пункты, необходимые для выполнения, нужно сделать в виде текста. В лабах много работ по созданию «обвязки» kafka (создание самоподписных сертификатов, развертывание MIT и т.п), которые можно сделать заранее. Это позволит студентам уделять больше времени изучению самой kafka. BigDataSchool идет навстречу и позволяет пользоваться лабораторным стендом гораздо дольше установленных часов обучения. Это очень к стати, если в течении дня Вы вынуждены отвлекаться от обучения. В целом, курс дает хорошую базу по kafka. Преподаватель хорошо подает материал, делает акценты в нужных местах, подробно отвечает на вопросы. read more

С 30 ноября по 4 декабря прошел курс "Администрирование кластера Hadoop". Учитывая, что я обладал довольно поверхностной информацией в данной теме (я CIO) - ушел с курсов просветленным. Многое стало понятным, в процессе обучения наложил знания на существующую инфраструктуру компании, в которой работаю. Рекомендую коллегам руководителям в ИТ - прокачаться на данном курсе, вы поймете куда двигаться в ближайшие 2-3 года. Админам, работающим или стремящимся в BigData- обязательно! Рекомендация - настойчиво, для тех кто "думает, что знает": перед курсом уделите время работе с командной строкой Linux! Total recall - обязательное условие. Много практической работы, и если есть затык в Linux - будете безнадежно отставать при выполнении лабораторных работ. read more

В октябре прошел курс Анализ данных с Apache Spark, это был второй раз, когда я обучался в этом месте. В целом, все хорошо, думаю что не последний. Не могу не подчеркнуть профессионализм преподавателя Королева Михаила, отвечал на поставленные вопросы, делился своим опытом. В общем, рекомендую! read more

Прошел тут курс "NIFI: Кластер Apache NiFi", вёл Комисаренко Николай. Живое и понятное обучение. Преподаватель отвечал на все вопросы от самых глупых, до самых умных и это было приятно. Так же порадовало, что преподаватель не идёт по заранее проложенным рельсам, а проходит весь путь вместе с вами, стараясь привнести, что-то новое. read more

Спасибо за обучение!

Очень крутое место, много практики, понятное объяснение заданной темы. Еще вернусь :) read more

Обучался на курсе HADM администрирование кластера Arenadata Hadoop. Интересный курс, хорошая подача. read more

Обучался на курсе по администрированию Apache Kafka. Хорошая подача материала, интересные практические задачи. Возникающие вопросы доходчиво и ясно объясняют. Остался очень доволен. read more

Был на курсе "Администрирование кластера Hadoop". Отличная подача материала. Очень много практики и технических подробностей. Подробный обзор стека технологий, платформы и инструментов. Рекомендую! read more

Учился на курсе Администрирование Hadoop. Курс вёл Николай Комиссаренко. Отлично подготовленная, продуманная, системная программа курса. Практические занятия организованы так, что у студентов есть возможность познакомиться с реальными особенностями изучаемого продукта. Отключил голову и прощёлкал лабы по книжке - здесь не работает. Преподаватель легко и развёрнуто отвечает на возникающие вопросы не только по теме предмета, но и по смежным. read more

Прошёл курс по администрированию Apache Kafka. Очень понравилась как подача материала, так и структура курса. Только вот времени маловато оказалось. не всё успел доделать, но это уже не к курсу претензии :). Практики было довольно много, и это хорошо read more

Прошёл курс "Hadoop для инженеров данных" у Николая Комиссаренко. Информация очень актуальна и полезна, заставляет задуматься о текущих методах работы с большими данными в нашей компании и, возможно, что-то поменять. Занятия с большим количеством практики, поэтому материал хорошо усваивается. Отдельное спасибо Николаю за то, что некоторые вещи объяснял простым языком, понятным даже для "чайников" в области Hadoop. read more

I did not find any disadvantages in the course. Pluses: + A lot of practice (50% of the time). + The teacher can explain difficult topics easy way. + Announced topics were considered. Besides additional materials were studied. read more

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. Update Дополнительно прошел обучения по Airflow и NiFi. Курсы двух дневные упор на занятиях делался на использовании продуктов, администрированию уделялось меньше времени. Т.к. курсы короткие, то перед занятиями желательно почитать обзорные статьи по продуктам, чтобы не терять время на базовое погружение и задавать более предметные вопросы. Перед началом занятий желательно связаться с школой и запросить что больше интересуется на обучении. Может быть предложить свои кейсы, чтобы на лабораторных отработать не только общий функционал. read more

Был на основах хадупа, все материалы описаны доступным языком. В частности хочу отметить преподавателя Николая Комисаренко, как очень квалифицированного преподавателя и специалиста. read more

Отличные курсы по "Администрированию Hadoop" и отличная организация проведения занятий, все по делу и понятно. Очень понравилось, знания получены основательные. Материал подаётся основательно. Постараюсь ещё попасть на другие курсы. read more

Курс по Isilon у Николая Комиссаренко мне тоже понравился. Грамотный и отзывчивый. Возникали вопросы по курсу он отвечал на все вопросы. Спасибо. Успехов ему read more

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. read more

Эффективный практический курс. Прошел курс Администрирование Hadoop в октябре 2018. Хорошо наполненный материал, оптимальная длительность курса и все делалось своими руками. Местами было непросто, но преодолимо. Оправдал все ожидания, после курса появилось целостное понимание создания и работы кластера. Николай, большое спасибо read more

Прошёл курс по администрированию Hadoop Cloudera. Отличная "живая" подача материала на "простом" языке. Как плюс работа с кластером построена на платформе AWS. На курсах не скучно, рекомендую! read more

Я узнал много нового посетив курс уважаемого Николая Комиссаренко по айзелону. Очень грамотный специалист обучение было очень полезным и грамотным. Спасибо вам большое read more

Читайте также: