Мне нужно одновременно обрабатывать большое количество файлов (тысячи разных файлов, средний размер которых составляет 2 МБ на файл).
Вся информация хранится на одном (1,5 ТБ) сетевом жестком диске и будет обрабатываться примерно 30 различными машинами. Для эффективности каждый компьютер будет считывать (и обрабатывать) разные файлы (тысячи файлов должны быть обработаны).
Каждый компьютер - после чтения файла из папки «входящие» на жестком диске 1,5 ТБ - будет обрабатывать информацию и будет готов вывести обработанную информацию обратно в папку «обработано» на 1,5 Туберкулезный диск. обработанная информация для каждого файла имеет примерно такой же средний размер, что и входные файлы (около ~ 2 МБ на файл).
Что лучше сделать:
(1) Для каждой обрабатывающей машины M , Скопируйте все файлы, которые будут обработаны M , на свой локальный жесткий диск, а затем прочитайте и обработайте файлы локально на машине M .
(2) Вместо того, чтобы копировать файлы на каждую машину, каждая машина получит прямой доступ к «входящей» папке (используя NFS), будет читать файлы оттуда и затем обрабатывать их локально.
Какая идея лучше? Есть ли «делать» и «делать», когда кто-то делает это?
Мне очень любопытно, если проблема в том, чтобы 30 машин или около того считывали (или записывали) информацию на один и тот же сетевой диск одновременно?
(примечание: существующие файлы будут только считываться, а не добавляться / записываться; новые файлы будут создаваться с нуля, поэтому не возникает проблем множественного доступа к одному и тому же файлу ...). Есть ли какие-то узкие места, которые я должен ожидать?
(Я использую Linux, Ubuntu 10.04 LTS на всех машинах, если это все имеет значение)