2013-11-28 4 views
0

Я пытаюсь импортировать некоторые данные HDFS в уже существующую таблицу HBase. Таблица, которую я создал, была создана с двумя семействами столбцов и со всеми настройками по умолчанию, которые HBase использует при создании новой таблицы. Стол уже заполнен большим объемом данных, и он имеет 98 онлайн-регионов. Тип ключей строки, которые он имеет, находится в форме (упрощенная версия): 2-CHARS_ID + 6-DIGIT-NUMBER + 3 X 32-CHAR-MD5-HASH.Использование массовой загрузки HBase

Пример ключа: IP281113ec46d86301568200d510f47095d6c99db18630b0a23ea873988b0fb12597e05cc6b30c479dfb9e9d627ccfc4c5dd5fef.

Данные, которые я хочу импортировать, находятся на HDFS, и я использую процесс Map-Reduce для его чтения. Я испускаю Помещать объекты из моего картографа, которые соответствуют каждой строке, считанной из файлов HDFS. Существующие данные имеют ключи, которые будут начинаться с «XX181113». Работа сконфигурирована с:

HFileOutputFormat.configureIncrementalLoad(job, hTable) 

Как только я начинаю процесс, я вижу, что сконфигурировано с 98 переходниками (равных онлайн регионы таблицы), но проблема в том, что 4 редукторов получили 100% от данные разделились между ними, а остальные ничего не сделали. В результате я вижу только 4 выхода папок, которые имеют очень большой размер. Являются ли эти файлы соответствующими 4 новым regions, которые я могу импортировать в таблицу? И если да, то почему только 4, в то время как 98 редукторов создаются? Чтение Hbase документы

In order to function efficiently, HFileOutputFormat must be configured such that each output HFile fits within a single region. In order to do this, jobs whose output will be bulk loaded into HBase use Hadoop's TotalOrderPartitioner class to partition the map output into disjoint ranges of the key space, corresponding to the key ranges of the regions in the table. 

смутило меня еще больше, почему я получаю это поведение.

Спасибо!

ответ

0

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

+0

Спасибо, действительно, предварительное расщепление сделало трюк. –