Вы можете использовать Configuration.set (String name, String value) , чтобы установить значение, к которому вы сможете получить доступ в ваших Mappers / Reducers / etc:
В вашем драйвере:
conf.set("my.dijkstra.parameter", "value");
И, например, в вашем маппере:
public void configure(JobConf job) {
myParam = job.get("my.dijkstra.parameter");
}
Но это вряд ли поможет вам посмотреть на результаты предыдущих заданий, чтобы решить, стоит ли начинать еще одну итерацию. То есть это значение не будет возвращено после выполнения задания.
Вы также можете использовать Hadoop DistributedCache для хранения файлов, которые будут распределены по всем узлам. Это немного лучше, чем просто хранить что-то в HDFS, если значение, которое вы собираетесь передать таким образом, является чем-то небольшим.
Конечно, счетчики также могут быть использованы для этой цели. Но они не выглядят слишком надежными для принятия решений в алгоритме. Похоже, в некоторых случаях их можно увеличить вдвое (если какое-то задание было выполнено более одного раза, например, в случае сбоя или спекулятивного выполнения) - я не уверен.