2015-01-13 2 views
0

Я разработал ключ строки таблицы HBase следующим образом:Как данные временных рядов могут быть равномерно распределены по кластеру?

<clustering-prefix><yyyyMMdd><type><uid> 

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

Я также создал таблицу, используя пункт в SPLITS_FILE со следующей сплит последовательности:

002015010 
012015010 
022015010 
032015010 
042015010 
... 
992015010 
012015011 
022015011 
... 

Это позволяет отправить груз в 100 регионах параллельно с довольно хорошей производительностью, учитывая, что данные Временные ряды.

К сожалению, я заметил, что многие регионы, которые будут заполняться параллельно (часть та же), размещены на том же сервере региона. То есть, к примеру:

002015010 -> region_server_01 * 
012015010 -> region_server_02 
022015010 -> region_server_01 * 
032015010 -> region_server_06 ** 
042015010 -> region_server_03 
052015010 -> region_server_01 * 
062015010 -> region_server_06 ** 

В идеале, если у меня есть 100 серверов области, Я хотел бы назначить регионы таким образом, что участки с различным кластерным префиксом (первые две цифр), размещенные на различных серверах региона как можно больше.

Я попытался изменить порядок разломов в SPLITS_FILE, но поведение не изменилось.

Причина для такого рода строк связана для чтения и записи требования:

  • Написать: События одного дня с различными кластерными префиксами будут записаны одновременно, как они прибывают
  • Читать: после некоторого времени события с тем же префиксом кластеризации, полученные в диапазоне дат, должны обрабатываться в пакетном искровом задании

Вопрос

Есть ли способ настроить HBase (AssignmentManager?) Для назначения различных префиксов кластеризации для разных серверов регионов?

Похоже, что поведение процесса присваивания является случайным по умолчанию.

ответ

0

использовать соль только при установке шпагат:

create 't1', 'f1', {SPLITS => ['01', '02', '03', '04' ... '99']} 

Rowkeys начиная с 00 .... будет присвоенные области 1

Rowkeys начиная с 01 .... будет назначен область 2

Rowkeys начиная с 02 .... будет присвоен регион 3

И так далее ...HBase балансировка нагрузки будет заботиться о распределении регионов по вашему regionservers в зависимости от нагрузки (число регионов, назначенных на каждый сервер)


Кстати, ваши примеры 9 символов, согласно тому, что вы сказали, что они должны быть 10 (2 для соли + 8 для даты).

+0

Да, я стараюсь следовать правилу oh thumb из 100-200 регионов на сервер, и я включил некоторые символы даты в раскол. Я не включил полную дату, так как это создало бы больше регионов, чем необходимо, поэтому я использовал только первые 7 символов (около 10 дней в одном регионе для каждого соляционного префикса). –

+0

Использование только префикса соления в качестве раскола в моем случае несколько ограничено, потому что, когда данные будут прочитаны в пакетном режиме, он будет считываться только из одной области кластера. Мне нужно распространить его и на (часть) даты. –

+0

Соединительный префикс для каждой вставленной строки должен быть рандомизированным номером, чтобы обеспечить равномерное распределение среди регионов (которое будет распределено между серверами), если вам нужно больше регионов, просто создайте более крупный префикс (то есть: от 000 до 999 или даже от 0000 до 9999). Просьба описать, как вы создаете префикс соления при записи данных и каков будет ваш шаблон чтения. –

Смежные вопросы