Войти Регистрация
Data base

265. Ради 100 байт читаем 64 КБ

Средняя

HBase · Apache HBase 2.6

В Облаке Данных Сбера из HBase читают профили по ключу: один Get — одно значение около 100 байт. Таблица в 10 раз больше BlockCache, поэтому большая часть запросов идёт на диск. Диски — HDD.

HFile читается блоками, по умолчанию по 64 КБ. Чтобы отдать 100 байт, регион-сервер поднимает с диска весь блок — в 640 раз больше нужного, а с упреждающим чтением HDFS и ОС, по замерам Сбера, около 2600 раз.

В работе: Настройка семейства колонок под точечное чтение по ключу.

Как проверяем Движка HBase в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
BLOCKSIZEBlockCacheслучайное чтениеHFile

Источник: блог Сбера на Хабре: как ускоряли случайное чтение из HBase и HDFS. Условие пересказано своими словами.

Какое изменение схемы сильнее всего сократит объём чтения с диска на один Get?

  • Уменьшить BLOCKSIZE семейства до 8–16 КБ и включить BLOOMFILTER => 'ROW'
  • Увеличить BLOCKSIZE до 256 КБ, чтобы реже ходить на диск
  • Отключить BlockCache, раз таблица в него всё равно не помещается
  • Разбить таблицу на вдвое большее число регионов