`
zxxapple
  • 浏览: 79563 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Mapreduce框架求Pi值的思路

阅读更多

关于在mapreduce框架上求近似Pi的值,hadoop源码包的example中源代码,在这里只是简单写写学习笔记

 

首先说下大概思路:

这个图大家在网上肯定见都见过

···

 

正方形的面积 As = (2r)*(2r)也就是 4r*r. 内切圆形的面积 Ac = pi * r*r.  
pi = Ac / r*r
As = 4r*r
r*r= As / 4
pi = 4 * Ac / As


所以最后求pi 的近似值就可以通过求圆的面积与正方形的面积的比值即可,
hadoop中example的实现的思想就是 在整个正方形的内取随机点,然后计算出在内切圆内的点的个数比除以总体的随机点的个数。这个值在乘以4即可近似求出PI的近似值 ,
因为是随机点  有一定的概率行,所以是求近似值。

概算法一个重要难点就是这个随机点的如何生成,采用java自带的Random函数显然不合适,mapreduce采用的是Halton随机点生成算法,他就是才单位正方形内(1,1)内生若干个数据组,该算法需要一个基础值

比如,以2作为基数,那么得到的序列就是将(0,1)区段反复二分:

1/2, 1/4, 3/4, 1/8, 5/8, 3/8, 7/8, 1/16, 9/16

 

实现的伪代码如下:
   FUNCTION (index, base)
   BEGIN
       result = 0;
       f = 1 / base;
       i = index;
       WHILE (i > 0)
       BEGIN
           result = result + f * (i % base);
           i = FLOOR(i / base);
           f = f / base;
       END
       RETURN result;
   END
 
 
这样就得到一组随机的点,
接下来mapreduce要做的工作就是分布这些生成的随机点到各个map任务中区,
而map要做的就是计算这些点实在圆内还是圆外:
final double x = point[0] - 0.5;
		        final double y = point[1] - 0.5;
		        if (x*x + y*y > 0.25) {
		          numOutside++;
		        } else {
		          numInside++;
		        }
 (0.5,0.5)就是圆心的坐标,然后计算随机点到圆心点 两点之间的距离  与半径进行比较,最后计数圆内点的个数

 


然后用一个reduce任务对各个map产生的计数进行全局的统计,并作最后的计算。
分享到:
评论

相关推荐

    基于Java实现的简易MapReduce框架.zip

    《基于Java实现的简易MapReduce框架》 在大数据处理领域,Hadoop是一个不可或缺的重要工具,它为海量数据的存储和处理提供了分布式计算框架。而MapReduce是Hadoop的核心组件之一,用于处理和生成大规模数据集。这个...

    MapReduce求行平均值--MapReduce案例

    本案例主要探讨如何使用MapReduce来求取数据集的行平均值,这在数据分析、数据挖掘以及日志分析等场景中非常常见。我们将讨论四种不同的方法来实现这一目标,针对已处理(包含行号)和未处理的数据集。 首先,我们...

    MapReduce求平均值示例程序

    在这个“MapReduce求平均值示例程序”中,我们将深入理解如何利用MapReduce解决计算平均值的问题,同时也会涉及到日志系统在调试中的应用。 首先,Map阶段是MapReduce工作流程的第一步。在这个阶段,原始数据被分割...

    极简MapReduce框架Mincemeat-node.zip

    Mincemeat-node 是使用Node.js实现的极简MapReduce框架,可以快速的部署投入工作,免去Hadoop繁琐的配置,享受随心大数据。Mincemeatpy实现的是一种非常简单的MapReduce模型,仅仅实现了任务的分布计算,并没有类似...

    MapReduce求行平均值--标准差--迭代器处理--MapReduce案例

    在“MapReduce求行平均值”的场景下,Map任务可能需要读取每一行的数据,将每行视为一个记录,将记录的数值部分提取出来,转化为`(key, value)`对,其中key可能是行号或任意标识,value是该行的数值总和。...

    MALK:一种高效处理大规模键值的MapReduce框架.pdf

    根据给定文件的信息,我们可以整理出以下关于“MALK:一种高效处理大规模键值的MapReduce框架”的知识点。 1. MapReduce框架介绍: MapReduce是一种编程模型,用于大规模数据集的并行运算。它由Google首先提出,...

    mapreduce框架学习之天气统计

    1. 对一组日期(键)的所有温度值求平均或求和,得到该日期的平均温度或总温度。 2. 同样地,计算湿度的平均值或总和。 3. 将处理后的结果输出,可能包括每天的平均温度、最高温度、最低温度等。 需要注意的是,...

    MapReduce框架统计流量模板数据

    为MapReduce框架对电话号码的上行流量和下行流量及总流量进行统计的模板数据

    MapReduce框架和HDFS框架

    《MapReduce框架与HDFS框架解析》 MapReduce和HDFS是大数据处理领域的核心组件,它们构成了Hadoop生态系统的基础。Hadoop,一个由Apache软件基金会开发的开源项目,深受业界欢迎,其设计灵感来源于谷歌发表的两篇...

    基于MapReduce框架下的数据挖掘方法研究.pdf

    文章还提到了一些研究进展,例如利用MapReduce框架实现机器学习算法程序,以及开发树构造算法和多路查询算法来评估内存读写开销,这些研究有助于提升MapReduce框架的性能,尤其是在处理大规模数据集时的高并发情况。...

    电信数据清洗案例:基于MapReduce框架的数据预处理方法

    内容概要:本文详细介绍了利用MapReduce框架对电信数据进行清洗的具体流程和技术细节。首先概述了数据清洗的目标,包括过滤无效记录、标准化数据格式和删除重复记录。接着逐步讲解了MapReduce的各个阶段:Map阶段...

    mapreduce求最大值和最小值

    标题"mapreduce求最大值和最小值"指的是使用MapReduce框架来找出输入数据集中的最大和最小值。这是一个典型的问题,可以很好地展示MapReduce的工作原理和它的应用。 **Map阶段**: 在Map阶段,输入数据被分割成多个...

    基于MapReduce框架一种文本挖掘算法的设计与实现

    ### 基于MapReduce框架的文本挖掘算法设计与实现 #### 重要概念与背景 在信息技术迅速发展的背景下,文本挖掘技术成为了从海量文本数据中提取有价值信息的关键工具。随着互联网的普及,每日产生的文本数据量呈爆炸...

    基于Hadoop的MapReduce框架研究报告

    基于Hadoop的MapReduce框架研究报告,开源云计算的一个基础框架

    MapReduce编程之求Top3(TopN)

    在分布式计算领域,MapReduce是一种广泛使用的编程模型,尤其在处理大数据时...这就是使用MapReduce求解Top 3问题的基本思路和实现步骤。通过这个过程,我们可以看到MapReduce如何在分布式环境下高效地处理大规模数据。

    基于Spark MapReduce框架的分布式渲染系统研究.pdf

    【基于Spark MapReduce框架的分布式渲染系统研究】 三维渲染技术在电影、动画和游戏制作中扮演着关键角色,为创造视觉特效提供强大的工具。然而,渲染过程计算密集且数据量巨大,消耗大量时间和资源。分布式渲染...

    基于MapReduce框架的SQL引擎设计.pdf

    在当今大数据处理领域,MapReduce框架扮演着至关重要的角色,尤其在处理海量数据集时。Google提出的MapReduce是一种分布式计算模型,它允许我们将复杂的计算任务分解成一系列可并行执行的子任务,从而高效地利用多台...

    基于mapreduce框架的房地产大数据统计分析的并发工具.zip

    基于MapReduce框架的并发工具为处理海量的房地产数据提供了高效、可扩展的解决方案。本文将深入探讨如何利用Hadoop这一分布式计算平台,结合人工智能技术,进行房地产大数据的统计分析。 首先,我们需要了解Hadoop...

Global site tag (gtag.js) - Google Analytics