Самый быстрый способ индексировать огромные данные в эластичном - PullRequest
0 голосов
/ 14 октября 2018

Меня просят проиндексировать более 3 * 10 ^ 12 документов в эластичном кластере, кластер имеет 50 узлов с 40 ядрами и 128 ГБ памяти.Мне удалось сделать это с _bulk на языке Python (многопоточность), но я не смог достичь более 50 000 записей в секунду для одного узла.

Поэтому я хочу знать:

  1. Какой самый быстрый способ индексации данных?
  2. Как я знаю, я могу индексировать данные для каждого узла данных, растет ли он линейно?Я имею в виду, у меня может быть 50 000 записей для каждого узла?

1 Ответ

0 голосов
/ 14 октября 2018

По вашему вопросу:

  1. Баланс ваших ресурсов.И Elasticsearch, и Ваше приложение должны будут пытаться работать при 60-80% загрузки сервера, чтобы достичь наилучшей производительности.Вы можете добиться этого использования со стороны приложения, используя множественную обработку в Python или Unix xargs + Elasticsearch _bulk API.

  2. Производительность Elasticsearch растет почти линейно с 99%, как показывает мой опыт,Если у вас правильный дизайн ваших настроек кластера / индексного сегмента.50,000 records/second для каждого узла возможно.

Вот несколько полезных ссылок, которые могут помочь:

Рекомендуется проводить тестирование производительности изатем внимательно контролируйте свои кластеры + серверы приложений во время рабочих нагрузок.(Я использовал unix htop + newrelic вместе: D).

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