Как настроить шарды в Веспе?
Мы хотим настроить кластер из 4 узлов для размещения данных. И в кластере размещается только один индекс, поэтому у всех 4 узлов одинаковый тип данных.
Наша цель - защитить данные на узлах. Скажем, два осколка и две реплики. (всего 4 узла для размещения этих 4 разделов данных)
Режим документа - "индекс", а глобальный - "истина".
<redundancy>2</redundancy>
<nodes>
<node hostalias="node1" distribution-key="0"/>
<node hostalias="node2" distribution-key="1"/>
<node hostalias="node3" distribution-key="2"/>
<node hostalias="node4" distribution-key="3"/>
</nodes>
<engine>
<proton>
<searchable-copies>2</searchable-copies>
<flush-on-shutdown>true</flush-on-shutdown>
</proton>
</engine>
Указанный выше конфиг в services.xml не допускается. он запрашивает избыточность, по крайней мере, такое же число, что и узлы, и нам нужно настроить,
<redundancy>4</redundancy>
а также
<searchable-copies>4</searchable-copies>
чтобы он принял действительный конфиг.
И это настраивает все 4 узла, чтобы иметь все данные, и каждый будет содержать копию данных. Согласно http://docs.vespa.ai/documentation/content/data-placement.html - нам нужно global=true. И заметил:
Примечание. Функция глобальных документов находится в стадии разработки. В настоящее время он доступен только для установок, где все документы уже присутствуют на всех узлах, то есть N групп, каждая из которых содержит один узел.
Как распространять данные в шардах? Можем ли мы сделать, чтобы узлы 1 и 2 имели распределенные данные, а узлы 3 и 4 могут иметь их копию с избыточностью 2?
1 ответ
Спасибо за вопрос - я вижу, что документация global=true немного сбивает с толку.
В вашем случае вы хотите разделить, то есть распределить 2 копии каждого документа по 4 узлам (поправьте меня, если я ошибаюсь).
global обычно используется для родительских документов, как в http://docs.vespa.ai/documentation/search-definitions.html - в вашем случае у вас есть только тип документа (я полагаю), следовательно, нет родителей, поэтому не использовать глобальный
Глобальная функция будет распределять 4 реплики по 4 узлам (если это то, что вы хотите, пожалуйста, установите избыточность =4). но нет необходимости использовать глобальный здесь тоже.