轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-09-10 10:09:02.000|閱讀 1093 次
概述:
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
百度一下,計(jì)算PI的方法還真不少。但在hadoop examples代碼中的注釋寫(xiě)的是:是采用 Quasi-Monte Carlo 算法來(lái)估算PI的值。 維基百科中對(duì)Quasi-Monte Carlo的描述比較理論,好多難懂的公式。
好在google了一把,找到了斯坦福大學(xué)網(wǎng)站上的一篇文章:《通過(guò)扔飛鏢也能得出PI的值?》,文章很短,圖文并茂,而且很好理解。
我這里將那篇文章的重要部分截了個(gè)圖:
對(duì)上面的圖再稍微解釋一下:
在這個(gè)算法中,很重要的一點(diǎn)是:如何做到“隨機(jī)地向Figure2投擲”,就是說(shuō)如何做到Figure2上的每個(gè)點(diǎn)被投中的概率相等。
hadoop examples代碼中,使用了Halton sequence保證這一點(diǎn),關(guān)于Halton sequence,大家可以參考維基百科。
我這里再總結(jié)一下Halton sequence的作用: 在1乘1的正方形中,產(chǎn)生不重復(fù),并且均勻的點(diǎn)。每個(gè)點(diǎn)的橫坐標(biāo)和縱坐標(biāo)的值都在0和1之間。 正是這樣,保證了能夠做到“隨機(jī)地向Figure2投擲”。
有人總結(jié)了一下,這個(gè)實(shí)際上叫做蒙特卡洛算法,我們?nèi)∫粋€(gè)單位的正方形(1×1) 里面做一個(gè)內(nèi)切圓(單位圓),則 單位正方形面積 : 內(nèi)切單位圓面積 = 單位正方形內(nèi)的飛鏢數(shù) : 內(nèi)切單位圓內(nèi)的飛鏢數(shù) ,通過(guò)計(jì)算飛鏢個(gè)數(shù)就可以把單位圓面積算出來(lái), 通過(guò)面積,在把圓周率計(jì)算出來(lái)。 注意 ,精度和你投擲的飛鏢次數(shù)成正比。
后面2個(gè)數(shù)字參數(shù)的含義:
2個(gè)參數(shù)的乘積就是總的投擲次數(shù)。
我運(yùn)行的結(jié)果:
hadoop的examples中的計(jì)算PI的方法屬于是采用大量采樣的統(tǒng)計(jì)學(xué)方法,還是屬于數(shù)據(jù)密集型的工作。
作單位圓,再作其內(nèi)接正N邊形(N為2的正整數(shù)次方)先計(jì)算其內(nèi)接正N邊形周長(zhǎng),可用公式C=N*2R*sin(180/N)計(jì)算,其中R為單位圓半徑1。sin(180/N)可以連用N次半角公式計(jì)算(因?yàn)镹為2的正整數(shù)次方)最后用C/2便可得出圓周率的近似值(因?yàn)镹可以無(wú)限大的取值,所以我們可以無(wú)限接近圓周率)
主要針對(duì)大塊的數(shù)據(jù)文件,最好是數(shù)據(jù)規(guī)模上G、T級(jí)別的,hadoop把大塊數(shù)據(jù)進(jìn)行切割并進(jìn)行分布式存儲(chǔ),對(duì)小塊數(shù)據(jù)由于系統(tǒng)開(kāi)銷(xiāo)等原因處理速度并不一定比單個(gè)串行程序明顯。此外,hadoop的mapreduce計(jì)算模型通過(guò)map任務(wù)會(huì)產(chǎn)生中間結(jié)果文件,reduce任務(wù)在處理這些中間結(jié)果文件形成最終結(jié)果文件并輸出。
由 于中間結(jié)果文件是存儲(chǔ)在各個(gè)分布式計(jì)算節(jié)點(diǎn)本地內(nèi)存或磁盤(pán)上的,如果計(jì)算產(chǎn)生的中間結(jié)果文件非常巨大,reduce過(guò)程需要通過(guò)遠(yuǎn)程過(guò)程調(diào)用來(lái)取得這些中 間結(jié)果文件,會(huì)加大網(wǎng)絡(luò)傳輸?shù)拈_(kāi)銷(xiāo),則不適合采用hadoop處理。所以對(duì)于是否何時(shí)采用hadoop來(lái)處理數(shù)據(jù),上面講的兩點(diǎn)是必須考慮的問(wèn)題,對(duì)于大規(guī)模數(shù)據(jù)的統(tǒng)計(jì)分析,例如求期望方差、或者對(duì)海量數(shù)據(jù)的分布式查詢適合用hadoop來(lái)做。呵呵~~不知是否解答清楚了你的問(wèn)題。
轉(zhuǎn)載請(qǐng)注明出處://www.ming-yue.cn/hadoop-pi
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)