Индекс локальности блока Hbase всегда равен 0
У меня есть Hbase (v 0.94.19 с Hadoop 1.2.1) с одной главной машиной и двумя региональными серверами. Каждый сервер региона имеет кучу 16 ГБ (6, 4 ГБ кэш-памяти, 4,0 ГБ в хранилище) и 1,6 ТБ (2 x 800 ГБ) дискового пространства. Существует только одна таблица с одним семейством столбцов, которая предварительно разбита на 128 областей (00 - ff). Ключ представляет собой 32-байтовую шестнадцатеричную строку, длина которой в среднем составляет 800 - 900 байт. Частота обновления составляет около 3–5 тыс. Элементов в секунду, из которых около 20% составляют новые записи. Коэффициент репликации Hadoop установлен равным 2. Остальные конфигурации Hadoop и Hbase по умолчанию.
Я запустил эталон чтения (это не эталон, а мой собственный код) для этой установки, которая считывает случайные (но действительные) записи через интерфейс Java Hbase. Я получаю в среднем 30 - 40 мс за чтение, что, на мой взгляд, необычно. Кроме того, это время чтения увеличивается с увеличением количества файлов хранилища в каждой области и снова уменьшается после того, как я выполняю значительное сжатие. Индекс локальности блока Hbase всегда сообщается как 0 обоими серверами региона даже сразу после крупного уплотнения.
Мои вопросы - Кто-нибудь видит какие-либо очевидные ошибки, которые я здесь делаю? Помогает ли увеличение количества дисков в каждом сервере региона (например, если я переключаюсь на 4 X 400 ГБ) уменьшить задержку чтения? Существуют ли какие-либо оптимизации SSD (например, избыточное обеспечение), которые могут помочь? Наконец, что может привести к тому, что индекс локальности блока всегда будет равен 0?
Пожалуйста, спросите меня, если вам нужно больше информации. Спасибо.