當前位置:編程學習大全網 - 編程語言 - 如何利用Mahout和Hadoop處理大規模數據

如何利用Mahout和Hadoop處理大規模數據

利用Mahout和Hadoop處理大規模數據

規模問題在機器學習算法中有什麽現實意義?讓我們考慮妳可能需要部署Mahout來解決的幾個問題的大小。

據粗略估計,Picasa三年前就擁有了5億張照片。 這意味著每天有百萬級的新照片需要處理。壹張照片的分析本身不是壹個大問題,即使重復幾百萬次也不算什麽。但是在學習階段可能需要同時獲取數十億張照片中的信息,而這種規模的計算是無法用單機實現的。

據報道,Google News每天都會處理大約350萬篇新的新聞文章。雖然它的絕對詞項數量看似不大,但試想壹下,為了及時提供這些文章,它們連同其他近期的文章必須在幾分鐘的時間內完成聚類。

Netflix為Netflix Prize公布的評分數據子集中包含了1億個評分。因為這僅僅是針對競賽而公布的數據,據推測Netflix為形成推薦結果所需處理的數據總量與之相比還要大出許多倍。

機器學習技術必須部署在諸如此類的應用場景中,通常輸入數據量都非常龐大,以至於無法在壹臺計算機上完全處理,即使這臺計算機非常強大。如果沒有 Mahout這類的實現手段,這將是壹項無法完成的任務。這就是Mahout將可擴展性視為重中之重的道理,以及本書將焦點放在有效處理大數據集上的原因,這壹點與其他書有所不同。

將復雜的機器學習技術應用於解決大規模的問題,目前僅為大型的高新技術公司所考慮。但是,今天的計算能力與以往相比,已廉價許多,且可以借助於 Apache Hadoop這種開源框架更輕松地獲取。Mahout通過提供構築在Hadoop平臺上的、能夠解決大規模問題的高質量的開源實現以期完成這塊拼圖,並可為所有技術團體所用。

Mahout中的有些部分利用了Hadoop,其中包含壹個流行的MapReduce分布式計算框架。MapReduce被谷歌在公司內部得到廣泛使用 ,而Hadoop是它的壹個基於Java的開源實現。MapReduce是壹個編程範式,初看起來奇怪,或者說簡單得讓人很難相信其強大性。 MapReduce範式適用於解決輸入為壹組"鍵 值對"的問題,map函數將這些鍵值對轉換為另壹組中間鍵值對,reduce函數按某種方式將每個中間鍵所對應的全部值進行合並,以產生輸出。實際上,許多問題可以歸結為MapReduce問題,或它們的級聯。這個範式還相當易於並行化:所有處理都是獨立的,因此可以分布到許多機器上。這裏不再贅述 MapReduce,建議讀者參考壹些入門教程來了解它,如Hadoop所提供的

Hadoop實現了MapReduce範式,即便MapReduce聽上去如此簡單,這仍然稱得上是壹大進步。它負責管理輸入數據、中間鍵值對以及輸出數據的存儲;這些數據可能會非常龐大,並且必須可被許多工作節點訪問,而不僅僅存放在某個節點上。Hadoop還負責工作節點之間的數據分區和傳輸,以及各個機器的故障監測與恢復。理解其背後的工作原理,可以幫妳準備好應對使用Hadoop可能會面對的復雜情況。Hadoop不僅僅是壹個可在工程中添加的庫。它有幾個組件,每個都帶有許多庫,還有(幾個)獨立的服務進程,可在多臺機器上運行。基於Hadoop的操作過程並不簡單,但是投資壹個可擴展、分布式的實現,可以在以後獲得回報:妳的數據可能會很快增長到很大的規模,而這種可擴展的實現讓妳的應用不會落伍。

鑒於這種需要大量計算能力的復雜框架正變得越來越普遍,雲計算提供商開始提供Hadoop相關的服務就不足為奇了。例如,亞馬遜提供了壹種管理Hadoop集群的服務 Elastic MapReduce,該服務提供了強大的計算能力,並使我們可通過壹個友好的接口在Hadoop上操作和監控大規模作業,而這原本是壹個非常復雜的任務。

  • 上一篇:論文如何選題?要怎麽去寫?
  • 下一篇:求女生男生校鬥服飾,誰能把網頁上搜到的女生男生校鬥服飾全部發在這裏,不管好不好,只要全部搜集好
  • copyright 2024編程學習大全網