1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-hindex

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Вторичный индекс для HBase

Решение на 100% написано на Java, совместимо с Apache HBase 0.94.8 и имеет открытый исходный код под ASL.

В настоящее время поддерживаются следующие возможности:

  • несколько индексов для таблицы;
  • многостолбцовый индекс;
  • индекс на основе части значения столбца;
  • сканирование с использованием условий «равно» и «диапазон» по индексу;
  • массовая загрузка данных в индексированную таблицу (индексация выполняется при массовой загрузке).

Как это работает

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

Сервер считывает спецификацию индекса, переданную во время создания таблицы, и создаёт таблицу индексов. Для одной пользовательской таблицы будет одна таблица индексов, и вся информация об индексе для этой пользовательской таблицы помещается в одну и ту же таблицу индексов.

Операция Put

Когда строка помещается в таблицу HBase (пользовательскую), сопроцессоры подготавливают и помещают информацию об индексе в соответствующую таблицу индексов. Ключ строки таблицы индексов = ключ начала региона + имя индекса + значение индексированного столбца + ключ строки пользовательской таблицы.

Например: Таблица → tab1, семейство столбцов → cf. Индекс → idx1, cf1:c1 и idx2, cf1:c2. Таблица индексов → tab1_idx (имя пользовательской таблицы с суффиксом «_idx»).

Операция Scan

Для сканирования пользовательской таблицы сопроцессор создаёт сканер в таблице индексов, сканирует данные индекса и ищет точные строки в пользовательской таблице. Эти поиски в HFiles основаны на ключе строки, полученном из данных индекса. Это поможет пропустить блоки, где данные отсутствуют, а иногда можно пропустить и полные HFiles.

Клиентам необходимо передать IndexedHTableDescriptor с именем индекса и столбцами при создании таблицы:

IndexedHTableDescriptor htd = new IndexedHTableDescriptor(usertableName);

IndexSpecification iSpec = new IndexSpecification(indexName);

HColumnDescriptor hcd = new HColumnDescriptor(columnFamily);

iSpec.addIndexColumn(hcd, indexColumnQualifier, ValueType.String, 10);

htd.addFamily(hcd);

htd.addIndex(iSpec);

admin.createTable(htd);

Никаких изменений не требуется для операций Put и Delete на стороне клиента, поскольку операции с индексом для них внутренне обрабатываются сопроцессорами.

Нет изменений в коде сканирования для клиентского приложения.

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

Источник

Этот репозиторий содержит исходный код для поддержки вторичного индекса в Apache HBase 0.94.8.

Сборка из исходного кода и тестирование

Процедура сборки из исходного кода такая же, как и сборка исходного кода HBase, поэтому она требует:

  • Java 1.6 или более поздней версии;
  • Maven 3.X.

Отдельный тестовый источник (secondaryindex\src\test\java) доступен для запуска тестов на вторичных индексах.

Примечание

Настройте следующие конфигурации в файле hbase-site.xml для использования вторичного индекса:

Свойство

  • name — hbase.use.secondary.index;
  • value — true;
  • description — Включите это свойство, когда используете вторичный индекс.

Свойство

  • name — hbase.coprocessor.master.classes;
  • value — org.apache.hadoop.hbase.index.coprocessor.master.IndexMasterObserver;
  • description — Список через запятую классов org.apache.hadoop.hbase.coprocessor.MasterObserver, которые загружаются по умолчанию в активный процесс HMaster. После реализации собственного MasterObserver просто поместите его в путь к классам HBase и добавьте сюда полное имя класса. org.apache.hadoop.hbase.index.coprocesor.master.IndexMasterObserver определяет хуки сопроцессора для поддержки вторичного индекса. Операции над главным процессом.

Свойство

  • namehbase.coprocessor.region.classes
  • valueorg.apache.hadoop.hbase.index.coprocessor.regionserver.IndexRegionObserver
  • descriptionРазделенный запятыми список сопроцессоров, которые загружаются по умолчанию во всех таблицах. Для любого метода сопроцессора переопределения эти классы будут вызываться в порядке следования. После реализации собственного сопроцессора просто поместите его в путь к классам HBase и добавьте сюда полное имя класса. Сопроцессор также можно загрузить по требованию, установив HTableDescriptor.

Сопроцессор org.apache.hadoop.hbase.index.coprocessor.regionserver.IndexRegionObserver определяет перехватчики сопроцессора для поддержки операций вторичного индекса в регионе.

Свойство

  • namehbase.coprocesor.wal.classes
  • valueorg.apache.hadoop.hbase.index.coprocessor.wal.IndexWALObserver
  • descriptionКлассы, определяющие перехватчики сопроцессора для поддержки операций WAL. Класс org.apache.hadoop.hbase.index.coprocessor.wal.IndexWALObserver определяет перехватчики сопроцессора для поддержки операций вторичного индекса WAL.

Будущая работа

  • Динамическое добавление/удаление индекса.
  • Интеграция управления вторичными индексами в оболочку HBase.
  • Оптимизация сценариев сканирования диапазона.
  • Поддержка инструмента HBCK для таблиц вторичного индекса.
  • Оптимизации WAL для записей таблиц вторичного индекса.
  • Обеспечение возможности подключения интеллектуальной системы оценки сканирования.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

hindex — это разработанный компанией Huawei чисто Java-написанный вторичный индекс для HBase, совместимый с Apache HBase 0.94.8. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-hindex.git
git@gitlife.ru:oschina-mirror/mirrors-hindex.git
oschina-mirror
mirrors-hindex
mirrors-hindex
master