我需要同时处理大量文件(数千个不同的文件,每个文件的平均大小为 2MB)。
所有信息都存储在一个 (1.5TB) 网络硬盘上,将由大约 30 台不同的机器处理。为了提高效率,每台机器将读取(和处理)不同的文件(有数千个文件需要处理)。
每台机器——在从 1.5TB 硬盘上的“传入”文件夹中读取文件之后——将处理信息并准备将处理后的信息输出回 1.5TB 硬盘上的“已处理”文件夹。每个文件的处理信息与输入文件的平均大小大致相同(每个文件约 2MB)。
有什么更好的做法:
(1) 对于每台处理机M ,将M将要处理的所有文件复制到其本地硬盘中,然后在机器M上本地读取和处理文件。
(2) 不是将文件复制到每台机器,而是每台机器将直接访问“传入”文件夹(使用 NFS),并从那里读取文件,然后在本地处理它们。
哪个想法更好?当一个人做这样的事情时,是否有任何“做”和“不做”?
我很好奇,让 30 台左右的机器同时读取(或写入)信息到同一个网络驱动器是否有问题?
(注意:现有文件只会被读取,不会被追加/写入;新文件将从头开始创建,因此不存在多次访问同一文件的问题......)。有没有我应该预料到的瓶颈?
(如果一切都很重要,我会在所有机器上使用 Linux、Ubuntu 10.04 LTS)