2014-02-13 4 views
3

У меня есть задание Hadoop MapReduce, выход которого является идентификатором строки с операцией Put/Delete для этого идентификатора строки. Из-за характера проблемы выход довольно большой. Мы пытались несколько метод, чтобы получить эти данные обратно в HBase, и все они не смогли ...Запись большого объема редуктора на HBase

Таблица Reducer

Это способ замедлить, так как кажется, что он должен сделать полную круглую поездку каждый ряд. Из-за того, как ключи сортируются для нашего шага редуктора, идентификатор строки вряд ли находится на том же узле, что и редуктор.

completebulkload

Это, кажется, занимает много времени (никогда не завершается), и нет никакого реального указания почему. И IO, и CPU показывают очень низкое использование.

Я пропустил что-то очевидное?

+2

, по-моему, выяснение причин, почему fullbulkload не работает, было бы правильным решением делать. он должен работать! Кроме того, возможно, у вас может быть больше редукторов. –

ответ

0

CompleteBulkLoad был правильным ответом. Per @DonaldMiner Я углубился и выяснил, что процесс CompleteBulkLoad запущен как «hbase», в результате которого была отказана в разрешении при попытке переместить/переименовать/удалить исходные файлы. Реализация, похоже, повторяет попытку за длиной времени перед выдачей сообщения об ошибке; до 30 минут в нашем случае.

Предоставление пользователю hbase права на запись в файлы разрешает проблему.

1

Я видел из вашего ответа на вопрос, что вы решили свою проблему, но для полноты я бы упомянул, что есть еще один вариант - прямое обращение к hbase. У нас есть настройка, в которой мы передаем данные в HBase, и при правильном разделении ключей и областей мы получаем более 15 000 1 тыс. Записей в секунду на узел

+0

Наш редуктор по своей природе будет иметь ключи от многих регионов на каждый входной раскол. Если вы знаете какой-либо метод разделителя hbase постредуктора, пожалуйста, поделитесь им. –

+0

Как я уже сказал, мы делаем обновления в потоковой установке, а не в пакетной, но принцип все еще удерживает вас, вы можете создать обычное соединение hbase в редукторе и по-прежнему писать hbase эффективно, если вы правильно сконструируете свою базу данных, напишите партиями, настройте ваш hbase и т. д. :) - Если работа с BulkLoad достаточно хороша для вас, то это, вероятно, проще –

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