我有一个Java应用程序,我将其作为概念证明移植到云体系结构中。我想通过在单独的虚拟机上的文件块上运行相同的处理程序来处理非常大的文本文件。许多虚拟机读取并发文本文件
工作节点= N
头节点上运行主机和一个工人,n-1个工作节点
我心里有两个想法:
主机读取文件中的行,由-line,将第一行发送到第一个工作节点,第二行到第二个工作节点等,每n行重复一次。
主读取文件中的行数。然后工作者节点指示从文件中同时读取
no_of_lines
/n。
我正在考虑使用基于RMI或基于套接字的方法来传输数据。谁能告诉我哪种上述方法最有效率?如果这个问题不能在没有指定我将使用哪个java结构的情况下得到解答,那么我会很感激这些建议。
另外,如果每个节点都知道它应该读取哪些行,那么锁定会是并发文件访问的问题吗?
感谢您的任何建议
伊恩
感谢皮特,输入将是一个数百兆字节的文本文件,可能为兆兆字节。我将从一台机器上的单个文件开始,但我还需要探索可首先以分布式方式创建数据集的选项。我现在正在查看SRB,我可能会编写一个程序,它可以从单个文件输入,也可以从分布式文件存储中读取。有什么想法吗?欢呼声 PS。相同的查询将在每行上运行,并且长度不完全相同,但包含相同的字段 – bashcrufter 2011-04-23 12:22:49