2014-08-28 21 views
0

我想了解,如果MapReduce可能是我有一個特定問題的好工具。我需要搜索數百個日誌文件,從幾個特定的​​IP地址中查找特定的匹配記錄,並記錄時間,IP地址和URL路徑。可以使用MapReduce來過濾日誌文件或除計算單個指標之外的其他內容嗎?

我所見過的與日誌分析相關的MapReduce的所有例子似乎都在統計單個指標,比如每小時點擊次數。這似乎是一個過於簡化的例子,總是發出1的IntWritable。

在我的情況下,我並不真正計算任何東西 - 它更像是一個過濾器。地圖如何減少步驟輸出我正在搜索的特定地址的時間戳,IP地址和URL路徑?

我也可能想做一些分析來計算幾個不同的指標,而不是單個「每小時點擊次數」。爲了統計多個不同的度量標準,通常是通過多個作業來完成,還是一個作業可以統計多個度量標準?

感謝您的建議!

回答

0

基本上你的問題是尷尬平行。你只是想對不同的輸入數據並行執行相同的操作。

這正是地圖所做的。它將您的輸入分成若干分組,然後在每個分組上執行相同的代碼。完成。你不關心減少步驟。

您還可以使用Hadoop-streaming作爲映射器執行二進制或shell腳本。您很可能已經有了用於過濾數據的命令。你只需要並行化它。

現在Hadoop是您的正確工具嗎?這取決於。 Hadoop是一個掌握,部署,管理的野獸,但它帶來了可擴展性,因爲它是一個非常有限的範例。你的用例也可以用很多其他工具解決,我相信這裏的關鍵是:

  • 你需要HDFS嗎?
  • 你想投資於Hadoop集成(數據導入/導出等)和故障排除嗎?

我也希望做一些分析,計算幾個不同的指標,而不是單一的「每小時命中」。爲了統計多個不同的度量標準,通常是通過多個作業來完成,還是一個作業可以統計多個度量標準?

有時也可以,但我不能沒有更多的細節回答。嘗試閱讀一些關於地圖/縮小設計模式的材料。

+0

我的問題是真的特定於Map Reduce。我會很好地使用Hadoop Streaming或Amazon EMR。我並不是很擔心設置和運行Hadoop集羣。這是我需要搜索大量日誌數據的一次性問題。 – Jeff 2014-08-28 19:06:41

+0

然後你可以試試看。如果你已經有一個二進制文件或腳本來完成過濾,那麼我只會使用[Hadoop streaming](http://wiki.apache.org/hadoop/HadoopStreaming),因爲它可以在[EMR]上找到(http:// docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UseCase_Streaming.html)並將腳本指定爲映射器。 – 2014-08-28 19:26:35

+0

儘管我也相信我必須提供一個簡化腳本。它只是一個空白的腳本,或者它只是迴應輸入輸出? – Jeff 2014-08-29 15:10:34

相關問題