Nano Hash - криптовалюты, майнинг, программирование

Использование пользовательских счетчиков в Hadoop для поддержания работы Map-Recuce?

Я использую только работу картографа для создания индексов для Solr. В моем коде картографа я использую org.apache.lucene.index.IndexWriter API Lucene и добавляю org.apache.lucene.document.Document к IndexWriter.
В методе close() я использую writer.forceMerge(1) для объединения индексов и, наконец, закрываю IndexWriter, используя writer.close() для фиксации индексов в локальной файловой системе перед закрытием. Однако некоторые задачи не выполняются, так как процесс фиксации иногда занимает много времени (> 600 секунд). Это часто приводит к провалу работы.

Похоже, проблема в том, что задачи не могут информировать TaskTracker о своем прогрессе во время выполнения вызова метода close()/writer.close(), что в конечном итоге приводит к тому, что TT убивает задачи.

Чтобы этого не произошло, я запускаю поток в close(), который увеличивает пользовательский счетчик, чтобы уведомить средство отслеживания заданий о ходе выполнения задания; затем я останавливаю этот поток, как только вызов writer.close() завершится

Этот временный обходной путь пока работает. Но хотел бы знать, есть ли какие-нибудь лучшие способы решить эту проблему? Переход на Cloudera Search пока невозможен.

Установка:
Версия Solr: 4.1
Версия Hadoop: CDH3u5


Ответы:


1

Просто удалите writer.forceMerge(1).

Это заставляет автора объединять сегменты в один сегмент. Это чрезвычайно дорогостоящая операция, даже если вы не выполняете слияние в 1 сегмент, и она вам почти наверняка не нужна! Позвольте политике слияния решать, когда объединять сегменты за вас.

Есть и другие вещи, которые вы могли бы сделать, чтобы сократить время для этих операций, например, держать модуль записи открытым для использования вместо того, чтобы каждый раз открывать новый. Однако на самом деле я думаю, что forceMerge будет безусловно самой большой частью проблемы.

Подробнее о том, почему optimize/forceMerge только вредят вам: Саймон говорит: Оптимизация вредна для вас

30.06.2014
  • Ваши комментарии абсолютно верны. Индексы создаются с нуля как часть пакетного задания, поэтому при построении важно, чтобы у нас был наиболее оптимизированный индекс, даже если это происходит за счет дорогая операция. Удаление вызова forceMerge(1) приведет только к увеличению времени запроса. Здесь используется подход «разделяй и властвуй», когда каждый преобразователь создает один и только один сегмент индекса; которые позже объединяются с использованием специального процесса слияния. (Здесь помогает меньше сегментов благодаря forceMerge()) 01.07.2014

  • 2

    Вы можете установить для свойства "mapred.task.timeout" более высокое значение.

    По умолчанию это 600000 миллисекунд.

    30.06.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..