2011-12-24 5 views
1

Только что начался на Solandra и пытался понять второй уровень детализации оштукатуривания Solandra.Solandra Sharding: Insider Thoughts

AFAIK Soalndra создает количество осколков, сконфигурированных (как свойства «solandra.shards.at.once»), где каждый осколок составляет до размера «solandra.maximum.docs.per.shard».

На следующем уровне он начинает создание слотов внутри каждого осколка, которые определяются «solandra.maximum.docs.per.shard»/«solandra.index.id.reserve.size».

То, что я понял из DataModel из SchemaInfo CF, что внутри частности осколка есть слоты, принадлежащие различными физические узлы и это гонка происходит между узлами, чтобы получить эти слоты.

Мои вопросы:

  1. Означает ли это, если я прошу писать на конкретном узле SOLR например. ....solandra/abc/dataimport?command=full-import делает этот запрос распространяется на все возможные узлы и т. Д. Разве это распределенная запись? Потому что до тех пор, пока это не произойдет, как другие узлы будут конкурировать за слотов внутри определенного осколка. Действительно, код для записи документа или набор документов будет выполняться на одной физической JVM.

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

  3. Можем ли мы изучить настройки этих чисел -? "solandra.maximum.docs.per.shard", "solandra.index.id.reserve.size","solandra.shards.at.once".

  4. Если у меня есть только один осколок и фактор репликации как 5 в установки 6 узлов одного DC, я увидел, что концы этого осколка содержат 5 конечных точек в соответствии с репликацией Factor.But, что происходит с 6 один. Я видел через nodetool, что левый 6-й узел действительно не получает любых данных. Если я увеличу коэффициент репликации до 6 при сохранении кластера , это устранит проблему и выполнит ремонт и т. Д., Или будет лучше, чем .

ответ

0

В целом параметр shards.at.once используется для управления параллелизмом индексации. чем выше этот номер, тем больше фрагментов записывается сразу. Если вы установите его на один, вы всегда будете писать только один осколок. Обычно это должно быть установлено на 20%> количество узлов в кластере. поэтому для кластера из четырех узлов установите его в пять.

Чем выше размер резерва, тем меньше требуется координация между узлами. поэтому, если вы знаете, что у вас есть много документов для написания, тогда поднимите это.

Чем выше значение docs.per.shard, тем медленнее будут возникать запросы для заданного осколка. В общем, это должно быть 1-5M макс.

Чтобы ответить на ваши вопросы:

  1. Это будет импортировать только из одного узла. но он будет индексировать по многим в зависимости от осколков сразу.

  2. Я думаю, что вопрос заключается в том, следует ли писать все узлы? Да.

  3. Да см. Выше.

  4. Если увеличить shards.at.once это будет заполняться быстро

+0

Спасибо Джейк. К настоящему моменту я довольно в Solnadra также у меня есть еще один для вас: http://stackoverflow.com/questions/8962953/heap-size-of-a-node-in-solandra-cluster – Robby

+0

Джейк В текущей установке у меня есть 300K docs и shard сразу как 1 с максимальными документами снова по умолчанию ~ 1 м. У меня есть 7 узлов кластера с RF: 7, так что теперь, если мне нужно распространять данные в кластере cassandra, мне нужно уменьшить RF до 3, мне также нужно будет уменьшить размер max_doc, так как идеально, если общие документы Robby