在AWS Elastic MapReduce上运行PageRank Hadoop作业
在上一篇文章中,我描述了執行PageRank計算的示例,該示例是使用Apache Hadoop進行Mining Massive Dataset課程的一部分。 在那篇文章中,我接受了Java中現有的Hadoop作業,并做了一些修改(添加了單元測試,并通過參數設置了文件路徑)。 這篇文章展示了如何在現實的Hadoop集群上使用此作業。 該集群是一個由1個主節點和5個核心節點組成的AWS EMR集群 ,每個集群均由m3.xlarge實例支持。
第一步是為集群準備輸入。 我使用AWS S3是因為這是使用EMR時的便捷方式。 我創建了一個新存儲桶'emr-pagerank-demo',并制作了以下子文件夾:
- in:包含作業輸入文件的文件夾
- job:包含我的可執行Hadoop jar文件的文件夾
- 日志:EMR將放置其日志文件的文件夾
然后,在“ in”文件夾中,我復制了要排名的數據。 我用這個文件作為輸入。 解壓縮后,它變成了一個具有XML內容的5 GB文件,盡管不是很大,但對于此演示來說已經足夠。 當您使用前一篇文章的源代碼并運行“ mvn clean install”時,您將獲得jar文件:“ hadoop-wiki-pageranking-0.2-SNAPSHOT.jar”。 我將此jar文件上傳到“作業”文件夾。
就是為了準備。 現在我們可以啟動集群了。 在此演示中,我使用了AWS管理控制臺 :
- 命名集群
- 輸入日志文件夾作為日志位置
- 輸入核心實例數
- 為我們的自定義罐添加一個步驟
- 像這樣配置步驟:
- 這將導致以下概述:
如果正確,則可以按“創建集群”按鈕,并使EMR進行工作。 您可以在控制臺的“監視”部分監視集群:
并在“步驟”部分中監視步驟的狀態:
幾分鐘后,作業將完成(當然取決于輸入文件的大小和使用的群集)。 在我們的S3存儲桶中,我們可以看到在'log'文件夾中創建了日志文件:
在這里,我們總共看到7個作業:1 x Xml準備步驟,5 x rankCalculator步驟和1 x rankOrdering步驟。
更重要的是,我們可以在“結果”文件夾中查看結果:
每個reducer都會創建自己的結果文件,因此我們在這里有多個文件。 我們對排名最高的網頁感興趣,因為其中的網頁排名最高。 如果我們查看此文件,將看到以下結果排在前10位:
271.6686 Spaans 274.22974 Romeinse_Rijk 276.7207 1973 285.39502 Rondwormen 291.83002 Decapoda 319.89224 Brussel_(stad) 390.02606 2012 392.08563 Springspinnen 652.5087 2007 2241.2773 Boktorren請注意,當前的實現只運行5次計算(硬編碼),因此實際上并沒有如MMDS理論中所描述的那樣進行冪次迭代(對軟件的下一版進行了很好的修改:-)。
另請注意,使用默認設置時,作業完成后群集不會終止,因此在手動終止群集之前,群集的成本會增加。
翻譯自: https://www.javacodegeeks.com/2015/03/running-pagerank-hadoop-job-on-aws-elastic-mapreduce.html
總結
以上是生活随笔為你收集整理的在AWS Elastic MapReduce上运行PageRank Hadoop作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行代销理财兑付不了怎么办?
- 下一篇: 避免在ConcurrentHashMap