Лучше ли отправлять данные на hbase через один поток или через несколько серверов одновременно? - PullRequest
3 голосов
/ 03 октября 2011

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

Я думал о том, что каждый сервер обрабатывает данные, а затем обновляет hbase локально (через thrift). Я не уверен, что это лучший подход, потому что я не до конца понимаю, как главный (именованный) узел будет обрабатывать загрузку / разбиение.

Мне интересно, как лучше всего загружать большие объемы данных (всего я подозреваю, что это будет несколько миллионов строк)? Можно ли отправить его на региональные серверы или все должно пройти через мастер?

1 Ответ

2 голосов
/ 03 октября 2011

С этого сообщения в блоге,

Общий процесс заключается в том, что новый клиент сначала обращается к кворуму Zookeeper (отдельному кластеру узлов Zookeeper), чтобы найти конкретный ключ строки,Это делается путем получения имени сервера (т. Е. Имени хоста), на котором расположен регион -ROOT-, из Zookeeper.С этой информацией он может запросить этот сервер, чтобы получить сервер, на котором размещен .META.Таблица.Обе эти две детали кэшируются и просматриваются только один раз.Наконец он может запросить .META.сервер и получить сервер, на котором находится строка, которую ищет клиент.

Как только ему сообщают, где находится строка, то есть в каком регионе, он также кэширует эту информацию и связывается с HRegionServer, размещающим этот регион напрямую.,Таким образом, со временем у клиента появляется довольно полное представление о том, где можно получить строки без необходимости запрашивать .META.сервер снова.

Я предполагаю, что вы напрямую используете интерфейс Thrift.В этом случае, даже если вы вызываете какую-либо мутацию с определенного сервера региона, этот сервер региона действует только как клиент.Он свяжется с кворумом Zookeeper, затем свяжется с Мастером, чтобы получить регионы, в которые будут записываться данные, и будет действовать так же, как если бы они были записаны с другого сервера регионов.сервера или все должно пройти через мастер?

Оба одинаковы.Нет такой вещи, как запись напрямую в регион-сервер.С мастером необходимо связаться, чтобы определить, в какую область записывать вывод.

Если вы используете задание hadoop map-Reduce и используете Java API для задания mapreduce, то вы можете использовать TableOutputFormat для прямой записи в HFiles без использования HBase API.Это примерно в 10 раз быстрее, чем при использовании API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...