我有一個Java應用程序,我將其作爲概念證明移植到雲體系結構中。我想通過在單獨的虛擬機上的文件塊上運行相同的處理程序來處理非常大的文本文件。許多虛擬機讀取併發文本文件
工作節點= N
頭節點上運行主機和一個工人,n-1個工作節點
我心裏有兩個想法:
主機讀取文件中的行,由-line,將第一行發送到第一個工作節點,第二行到第二個工作節點等,每n行重複一次。
主讀取文件中的行數。然後工作者節點指示從文件中同時讀取
no_of_lines
/n。
我正在考慮使用基於RMI或基於套接字的方法來傳輸數據。誰能告訴我哪種上述方法最有效率?如果這個問題不能在沒有指定我將使用哪個java結構的情況下得到解答,那麼我會很感激這些建議。
另外,如果每個節點都知道它應該讀取哪些行,那麼鎖定會是併發文件訪問的問題嗎?
感謝您的任何建議
伊恩
感謝皮特,輸入將是一個數百兆字節的文本文件,可能爲兆兆字節。我將從一臺機器上的單個文件開始,但我還需要探索可首先以分佈式方式創建數據集的選項。我現在正在查看SRB,我可能會編寫一個程序,它可以從單個文件輸入,也可以從分佈式文件存儲中讀取。有什麼想法嗎?歡呼聲 PS。相同的查詢將在每行上運行,並且長度不完全相同,但包含相同的字段 – bashcrufter 2011-04-23 12:22:49