MarkLogic - настройка производительности Ingest и Harmonize - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть совокупный XML-файл объемом 500 МБ, который занимает 30 секунд для загрузки mlcp (около 80 000 документов) и около 6 минут для согласования (каждый документ XML преобразуется в JSON перед загрузкой в ​​FINAL DB).

Задание согласования следует обычному шаблону концентратора данных (сборщик, контент, средство записи и т. Д.)

У меня есть 50 таких файлов для обработки и поиска способов оптимизации времени выполнения.

1) Есть ли способ, с помощью которого я могу начать загрузку mlcp и выполнить параллельное согласование для нескольких файлов (в одном и том же задании)?

2) В задании согласования я попытался использовать -PbatchSizeи -PthreadCount параметры, но они не влияют за пределы 500 для размера пакета и количества потоков 6.Как я могу улучшить производительность, увеличив эти два значения?Требуются ли какие-либо настройки уровня сервера?Есть ли другие параметры, которые могут помочь улучшить производительность?

3) Есть ли другие альтернативы для улучшения производительности шага гармонизации?

Заранее спасибо!

1 Ответ

0 голосов
/ 23 февраля 2019

Относительно 1)

Вы можете указать MLCP для потока ввода на каталог, а не на один файл, и он должен обработать все файлы в поддереве за один прогон.После завершения входного потока вы можете запустить гармонизацию, и сборщик гармонизации должен выбрать все доступные файлы.

Однако, если вы хотите распараллелить загрузку, возможно, вам не следует загружать всеза один заход.Настройте ваш MLCP, чтобы добавить дополнительную коллекцию с указанием некоторого номера импорта или просто имени файла агрегатного файла.Настройте свой сборщик, чтобы принять (необязательный?) Дополнительный аргумент, который обрезается до этого номера импорта или совокупного имени файла.Затем вы запускаете импорт одного агрегата и запускаете для него гармонизацию после его завершения.Не дожидаясь завершения, вы делаете то же самое для второго агрегата.Дито для остальных один за другим.

Относительно 2)

Увеличение чисел не гарантирует увеличение скорости.Если гармонизация является относительно тяжелой, вам может быть лучше с меньшим размером партии и меньшим количеством нитей.Посмотрите на память и загрузку процессора.Увеличивайте только если они ниже 90%.Увеличение дальше не поможет, как только вы попадаете на крышу.Горизонтальное масштабирование (добавление дополнительных узлов в ваш кластер) будет единственным решением в этом случае.

Также учитывайте скорость ввода-вывода.MarkLogic может записывать на диск только настолько быстро, насколько позволяет хранилище.В этом может помочь большее количество лесов и больше узлов в кластере, в котором хранятся леса.

Относительно 3)

Подумайте о профилировании вашего кода гармонизации.Импорт звучит довольно быстро.80 тыс. Документов за 30 секунд очень прилично, но согласование происходит намного медленнее.Возможно, в этом есть некоторые неэффективные шаги.

Игра с предложениями, которые я привел выше, может дать вам ощущение, что есть место для улучшений, но часто самый большой выигрыш можно найти в самом коде.

HTH!

...