(不建議的Hadoop或地圖縮短解決方案,甚至他們的聲音在邏輯上是相同的)的Linux分發大文件和收集結果
我有一個很大的文件 - 70GB的原始HTML文件,我需要做的解析,以獲取我需要的信息。
cat input_file | python parse.py > output_file
而在我的Python腳本,它從標準輸入讀取每個HTML(每行每HTML),並將結果回寫到標準:
我已經成功地使用standardI/O之前,10GB文件衣食住行輸出。
from bs4 import BeautifulSoup
import sys
for line in sys.stdin:
print ....
的代碼非常簡單,但現在,我處理的一個大的文件,該文件是一個節點上異常緩慢。我有一個大約20個節點的集羣。我想知道如何輕鬆地分發這項工作。
我迄今所做的:
split -l 5000 input_file.all input_file_ # I have 60K lines in total in that 70G file
現在的大文件已經被分爲幾個小檔案:
input_file_aa
input_file_ab
input_file_ac
...
然後,我與他們每個人的工作沒有問題:
cat input_file_aa | python parser.py > output_file_aa
我該怎麼做可能是scp輸入文件到每個節點,然後做解析,然後scp結果回來,但有10多個節點!我手動操作非常繁瑣。
我想知道如何輕鬆地將這些文件分發給其他節點,並執行解析並將結果移回?
我對基本的SHELL,JAVA,Python解決方案開放。如果您需要更多解釋,請提前致謝並通知我。
請注意,我確實有一個名爲/ bigShare /的文件夾,可以在每個節點上評估,並且內容是同步的並保持不變。我不知道架構師如何實現(NFS ..?我不知道如何檢查),但我可以將我的input_file和python腳本放在那裏,剩下的就是如何輕鬆登錄到這些節點並執行命令。 順便說一句,我在紅帽。
你爲什麼試圖建立你自己的分佈式計算系統?您不希望我們建議的選項有什麼問題?不知道爲什麼這些不適合,我們將錯過重要信息。 – user2357112
將它放在NFS驅動器上? – jman
@ user2357112集羣是一個企業集羣,我沒有root來安裝一個新的結構。對於,我不太清楚NFS是什麼,但我們確實有一個文件夾/共享,它存在於每個節點上,並且具有同步的內容。現在我看到我可以輕鬆分發input_file,但我怎麼能輕鬆讓所有這些節點運行該命令? –