文档章节

用hadoop计算PI值

韩来明
 韩来明
发布于 2014/08/30 10:30
字数 740
阅读 2784
收藏 7

一、计算PI值的方式与原理

      百度一下,计算PI的方法还真不少。但在hadoop examples代码中的注释写的是:是采用 Quasi-Monte Carlo 算法来估算PI的值。 

      维基百科中对Quasi-Monte Carlo的描述比较理论,好多难懂的公式。 

      好在google了一把,找到了斯坦福大学网站上的一篇文章:《通过扔飞镖也能得出PI的值?》,文章很短,图文并茂,而且很好理解。 

      我这里将那篇文章的重要部分截了个图: 



      对上面的图再稍微解释一下: 
      1、Figure2是Figure1的右上角的部分。 
      2、向Figure2中投掷飞镖若干次(一个很大的数目),并且每次都仍在不同的点上。 
      3、如果投掷的次数非常多,Figure2将被刺得“千疮百孔”。 
      4、这时,“投掷在圆里的次数”除以“总投掷次数”,再乘以4,就是PI的值!(具体的推导过程参见原文) 


      在这个算法中,很重要的一点是:如何做到“随机地向Figure2投掷”,就是说如何做到Figure2上的每个点被投中的概率相等。 

      hadoop examples代码中,使用了Halton sequence保证这一点,关于Halton sequence,大家可以参考维基百科

      我这里再总结一下Halton sequence的作用: 在1乘1的正方形中,产生不重复,并且均匀的点。每个点的横坐标和纵坐标的值都在0和1之间。 

正是这样,保证了能够做到“随机地向Figure2投掷”。

      有人总结了一下,这个实际上叫做蒙特卡洛算法,我们取一个单位的正方形(1×1) 里面做一个内切圆(单位圆),则 单位正方形面积 : 内切单位圆面积 = 单位正方形内的飞镖数 : 内切单位圆内的飞镖数 ,通过计算飞镖个数就可以把单位圆面积算出来, 通过面积,在把圆周率计算出来。 
注意 ,精度和你投掷的飞镖次数成正比。

 

二,运行hadoop估算PI的命令

[java] view plaincopyprint?

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

     后面2个数字参数的含义: 
     第1个100指的是要运行100次map任务 
     第2个数字指的是每个map任务,要投掷多少次 

     2个参数的乘积就是总的投掷次数。 

     我运行的结果: 
Screenshot from 2014-08-30 10_04_15


三,总结

      hadoop的examples中的计算PI的方法属于是采用大量采样的统计学方法,还是属于数据密集型的工作。 

      

    转载请注明出处: http://www.ming-yue.cn/hadoop-pi/


© 著作权归作者所有

韩来明
粉丝 2
博文 9
码字总数 9242
作品 0
成都
私信 提问
HBase1.2.0 windows单机版安装配置

使用Hadoop自带的例子pi计算圆周率 1、首先从官网上下载HBase1.2.0安装包 2、解压到指定目录 3、修改conf/hbase-env.cmd 4、修改conf/hbase-site.xml 5、检验HBase是否正常启动:   ① 在b...

mickelfeng
2018/03/22
54
0
hadoop自带的jar包计算圆周率pi

Hadoop中自带的hadoop-mapreduce-examples-2.7.6.jar含有一些事例,本文将用pi计算圆周率。若想了解其计算原理,参考:http://thinkinginhadoop.iteye.com/blog/710847。 具体步骤如下: 1....

bk李
2018/08/05
485
0
解读MapReduce程序实例

Mapreduce 是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发运行在一个 hadoop 集群上。MapReduce采用“分而治之”...

海岸线的曙光
2018/06/27
733
2
用Raspberry Pi和乐高打造廉价超级计算机

南安普顿大学教授Cox和他六岁大的儿子在乐高超级计算机前合影 在普罗大众的眼里,超级计算机和F1方程式赛车一样是梦幻性能和天价投入的组合,是骨灰级发烧友做梦都不敢奢望的顶级机器。超级计...

刘朝阳
2012/09/25
0
0
hadoop 伪分布式安装步骤

操作系统 centos7 java verson : jdk1.8.0_151 hadoop version : hadoop-2.8.1 1、把安装包放到 opt文件夹下面。并进行解压。 cd /opt tar -zxvf hadoop-2.8.1 2、配置jdk、hadoop文件路径...

西行侠客
2018/01/23
30
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 谨以此文怀念逝去的人

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 今天没歌曲 手机党少年们想听歌,请使劲儿戳(这里) 今天是周六, 刚想开始写乱弹的时候, 翻到了巴叔新建的话题上, @ 巴拉迪维:宏哥,一路...

小小编辑
今天
25
4
判断php变量是否定义,是否为空,是否为真的一览表

使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; N......

Grayk
今天
19
0
服务器监控

1. 服务器监控内容有哪些? 答: 主要有服务监控 和 流量监控 2. 监控重点是? 答: 是 磁盘 和 流量,cpu是浮动的,意义不大 3. 怎样 实现 监控? 答:将 服务器 分为:监控者 和 被监管协议...

杨凯123
昨天
246
0
Apollo开发指南

一、准备工作 二、本地启动 2.1 Apollo Config Service和Apollo Admin Service 2.2 Apollo-Portal 2.3 Java样例客户端启动 2.4 .Net样例客户端启动 三、开发 3.1 Portal 实现用户登录功能 3....

Ciet
昨天
307
0
英文词汇 计算机网络中的专业英语单词及其缩写

学习计算机网络时,会阅读相关的专业文献。对于文献中经常出现的缩写形式的专业名词,做了一些积累。现于此博文中做个简单的分享,希望能对后来人有所帮助,平稳地入门计算机网络。 注:博文...

志成就
昨天
186
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部