Первым делом нужно решить, хотите ли вы разделить файлы пополам (5 и 5), или вы хотите, чтобы каждый сервер обрабатывался до тех пор, пока это не будет выполнено? Если файлы имеют различные размеры с небольшими и другими большими, вы можете получить оптимальную распараллеливание, имеющую 6 обработанных на одном сервере, а 4 - на другом, или 7 и 3, если 3 принимают столько же, сколько остальные 7 из-за различий в размере.
Очень рудиментарным способом было бы иметь таблицу базы данных, которая могла бы представлять собой активную обработку. Ваша работа может прочитать каталог, захватить первое имя файла и затем вставить в таблицу, которую он обрабатывал с помощью JVM. Если первичным ключом таблицы является имя файла, то если оба они попытаются в одно и то же время, вы потерпите неудачу, и вам удастся добиться успеха. Тот, который преуспевает при вставке записи в таблицу, выигрывает и получает для обработки файла. Другой должен обработать это исключение, выбрать следующий файл и попытаться вставить его в качестве записи обработки. Таким образом, каждый из них по существу устанавливает централизованный замок (в таблице db), и вы получаете более эффективную обработку, которая учитывает размер файла, а не даже распределение файлов.
сгенерированный выходной файл = записать результат в базу данных ?, или база данных используется только для метаданных весенней партии? и вы действительно записываете выходные файлы в свою файловую систему? – Cygnusx1
Да, я должен сгенерировать файл с файлом в файловой системе, DB используется для хранения данных входного файла, и после обработки этих деталей я должен создать файл put. –
Если между вашими файлами нет зависимостей, я не понимаю, почему вы не могли этого сделать. Единственное, что вам нужно проверить, - не обрабатывать один и тот же файл на обоих заданиях! Но это будет ответственностью вызывающего ... Как вы начинаете свою работу? Schedular? a ksh? – Cygnusx1