2016-06-17 31 views
0

我已經寫了一個MapReduce作業,需要3個命令行參數 - 關鍵字,輸入路徑,輸出路徑。它會計算關鍵字在輸入文件中出現的次數並輸出相同的次數。我想創建一個網頁(可能使用Apache Tomcat),其中它將關鍵字作爲輸入。當我點擊提交時,它應該觸發MapReduce作業並將結果輸出到網頁上。這怎麼可能 ?。 我曾嘗試以下鏈接所有的答案,他們沒有工作鏈接MapReduce作業與網頁

  1. Run MapReduce Job from a web application

  2. Calling a mapreduce job from a simple java program

如果有可能,請提供樣本工作代碼。這將是非常有益的

編輯: 當我試圖在第二連桿的第二個解決方案的問題是這樣的enter image description here

+2

是什麼不是上面的鏈接工作?他們似乎給你所需的一切。如果您已經撰寫了MR作業,大部分代碼應該對您很熟悉。 –

+1

你現在怎麼調用MapReduce作業 - 使用hadoop jar?您提供的鏈接允許調用作業,但不顯示輸出文件。你打算在哪裏運行Web服務器 - 在主服務器上? '我已經在以下鏈接上嘗試了所有答案,並且他們不工作 - 你卡在哪裏? – Jedi

+0

我在第二個鏈接的第二個答案中編寫了解決方案。該網頁已創建,當我點擊提交時,它顯示資源文件/ CallJobFromServlet未找到,經過一些調整,它開始在瀏覽器上顯示源代碼CallJobFromServlet。 Thomas的第一個答案是您爲每個MapReduce作業編寫的簡單主函數。我沒有看到他將它與網絡服務器連接起來 –

回答

0

好MapReduce工作基本上是專爲在後臺運行的批處理和批處理過程,而不是互動哪些在這種情況下,你想要的。但也有一些事情可以

  1. ,如果你使用的是Java初始化工作中的驅動程序 布爾成功= job.waitForCompletion(真) 這將啓動MapReduce工作,並會等到MapReduce工作完成。此時,您可以從輸出目錄中收集結果

  2. 啓動mapreduce作業後,您可以開始在hdfs中彙集輸出目錄。一旦mapreduce作業完成,則在輸出目錄的根目錄中創建一個單一的文件_SUCCESS。所以你要等到這個文件出現在hdfs輸出目錄中,這表明作業已經完成。閱讀輸出的所有文件可怕的,在網頁的過程和顯示效果

沙赫扎德