2012-06-14 4 views
2

У меня есть 30+ картографов, и каждый картограф использует общие данные поиска, которые являются в-memeory map. В каждом картографе я должен загрузить эти данные поиска в функции настройки. Я вычисляю эти данные поиска путем запросов и вычислений в таблицах Hbase и/или в некоторой базе данных rdbms. Поскольку я делаю то же самое из каждого картографа, эта выше общая задача выполняется 30 раз в каждом картографе.Обмен общим доступом в данных памяти через mappers: Hadoop

В любом случае, я могу вычислить данные поиска перед отправкой задания mapReduce и установить где-нибудь так, чтобы из mappes я мог напрямую перейти и получить это значение (в структуре памяти). хранить где-то в конфигурации и т. д. ... Генерация подкачки - это тяжелая задача, и это занимает много времени.

Если бы это был файл поиска, я бы использовал распределенный кеш, но его динамическое вычисление и не сохранялся в файле.

Пожалуйста, предложите любое решение этой обычной проблемы?

+0

любые решения по этому вопросу? – ikhtiyor

ответ

1

Не можете ли вы создать данные, а затем сохранить в HDFS, связанных с распределенным кешем?

Еще один трюк, который вы могли бы использовать (если вы используете повторное использование JVM и небольшой кластер) - сделать карту поиска статической в ​​вашем картографе, а затем выполнить не-нулевую проверку в вашем наборе, таким образом только вычисление данных в первом экземпляре карты для этого tasktracker.

Смежные вопросы