溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用hadoop計算PI值

發(fā)布時間:2021-12-09 15:38:12 來源:億速云 閱讀:396 作者:小新 欄目:云計算

這篇文章主要介紹怎么用hadoop計算PI值,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、計算PI值的方式與原理

      百度一下,計算PI的方法還真不少。但在hadoop examples代碼中的注釋寫的是:是采用 Quasi-Monte Carlo 算法來估算PI的值。 

      維基百科中對Quasi-Monte Carlo的描述比較理論,好多難懂的公式。 

      好在google了一把,找到了斯坦福大學(xué)網(wǎng)站上的一篇文章:《通過扔飛鏢也能得出PI的值?》,文章很短,圖文并茂,而且很好理解。 

      我這里將那篇文章的重要部分截了個圖: 

怎么用hadoop計算PI值

      對上面的圖再稍微解釋一下: 
      1、Figure2是Figure1的右上角的部分。 
      2、向Figure2中投擲飛鏢若干次(一個很大的數(shù)目),并且每次都仍在不同的點上。 
      3、如果投擲的次數(shù)非常多,F(xiàn)igure2將被刺得“千瘡百孔”。 
      4、這時,“投擲在圓里的次數(shù)”除以“總投擲次數(shù)”,再乘以4,就是PI的值?。ň唧w的推導(dǎo)過程參見原文) 


      在這個算法中,很重要的一點是:如何做到“隨機地向Figure2投擲”,就是說如何做到Figure2上的每個點被投中的概率相等。 

      hadoop examples代碼中,使用了Halton sequence保證這一點,關(guān)于Halton sequence,大家可以參考維基百科。

      我這里再總結(jié)一下Halton sequence的作用: 在1乘1的正方形中,產(chǎn)生不重復(fù),并且均勻的點。每個點的橫坐標和縱坐標的值都在0和1之間。 

正是這樣,保證了能夠做到“隨機地向Figure2投擲”。

      有人總結(jié)了一下,這個實際上叫做蒙特卡洛算法,我們?nèi)∫粋€單位的正方形(1×1) 里面做一個內(nèi)切圓(單位圓),則 單位正方形面積 : 內(nèi)切單位圓面積 = 單位正方形內(nèi)的飛鏢數(shù) : 內(nèi)切單位圓內(nèi)的飛鏢數(shù) ,通過計算飛鏢個數(shù)就可以把單位圓面積算出來, 通過面積,在把圓周率計算出來。 
注意 ,精度和你投擲的飛鏢次數(shù)成正比。

二,運行hadoop估算PI的命令

[java] view plaincopyprint?

  1. <span style="white-space:pre">    </span>hadoop jar $HADOOP_HOME/hadoop-*-examples.jar pi 100 100000000  

     后面2個數(shù)字參數(shù)的含義: 
     第1個100指的是要運行100次map任務(wù) 
     第2個數(shù)字指的是每個map任務(wù),要投擲多少次 

     2個參數(shù)的乘積就是總的投擲次數(shù)。 

     我運行的結(jié)果: 
怎么用hadoop計算PI值

以上是“怎么用hadoop計算PI值”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI