Я реализую итеративный алгоритм, который дает некоторый результат на каждой итерации, и этот результат используется в фазе карты следующей итерации.Для чтения из распределенного кеша или из вывода HDFS
Должен ли я сделать этот результат доступным для Mapper, используя распределенный кеш, или просто прочитать его с HDFS? Что более эффективно?
Этот файл не должен быть таким большим. Идея состоит в том, чтобы просто прочитать ее на этапе настройки и сохранить ее в памяти картографа.
Благодаря
Данные, считываемые в настройках, используются в картографе для каждой записи, поэтому мне это нужно. Но эти данные также меняются после каждой итерации, поэтому после каждой итерации мне нужно будет поместить эти данные в распределенный кеш, а затем прочитать их из картографа следующего задания. Ваш совет все еще считается? Чтобы быть более конкретным, есть две работы. Например, первое задание генерирует некоторое число через map-reduce. Вторая работа должна прочитать это число при настройке и делить все записи на это число. Я упрощаю, но вы понимаете. Так распределенный кеш все еще или чтение с выхода? – Marko
Ah OK, поэтому у вас есть большой набор данных, который считывается во второе задание, а также малый вывод из первого задания. Возможно, стоит сделать это более явным в вашем вопросе. Ответ по-прежнему распространяется на DistributedCache, если только вы не выполняете взаимодействия с одним классом драйверов, и в этом случае вы можете просто добавить один номер, который вы создаете в первом задании, в объект Configuration, а затем просто вызвать его во втором задании. –
Да, вы правы, я должен был быть более явным в своем вопросе. Я выполняю итерации из одного драйвера, но я не могу поместить результат из первого задания в Configuration, потому что он не такой маленький, это не число, но набор из не более 100-1000 массивов, в то время как каждый из них имеет 400 элементов (так что несколько MB). Я также считаю, что лучше использовать распределенный кеш в случае небольших файлов, но я не уверен, потому что это не тот же файл через итерации, поэтому я должен поместить его в Распределенный кеш после первой работы на итерации. Это лучшее решение, чем читать его с HDFS? – Marko