`
wbj0110
  • 浏览: 1604592 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

用Hadoop扔飞镖算Pi——献给圆周率日

阅读更多

众所周知,在一个正方形上抛飞镖,假设有一个半径为正方形边长的1/4圆,则抛的飞镖在1/4圆内的概率为1/4圆面积除以正方形面积,即(pi*r^2 /4)/r^2,假设抛飞镖在圆内的概率为n,则pi=4n,通过蒙特卡洛模拟则可算出一个较接近的pi。由于频率是不断接近概率的,因此必须抛很多次飞 镖,这里采用了Hadoop去模拟。

 

1. [代码]MapReduce的mainRunner忽略,大家可根据需要改下输入输出KeyValue的意义    

01 // Mapper
02 public class PieMapper extends
03         Mapper<IntWritable, LongWritable, LongWritable, LongWritable> {
04     private Random random = new Random();
05     @Override
06     protected void map(IntWritable key, LongWritable value, Context context)
07             throws IOException, InterruptedException {
08         long inside = 0;
09         for (int i = 0; i < value.get(); i++) {
10             double a = random.nextDouble();
11             double b = random.nextDouble();
12             if ((a * a + b * b) <= 1) {
13                 inside++;
14             }
15         }
16         context.write(value, new LongWritable(inside));
17     }
18 }
19 // 输入为第几行(忽略)+本行所算的抛飞镖次数
20  
21 // Reducer
22 public class PieReducer extends
23         Reducer<LongWritable, LongWritable, LongWritable, DoubleWritable> {
24     @Override
25     protected void reduce(LongWritable key, Iterable<LongWritable> values,
26             Context context) throws IOException, InterruptedException {
27         long total = 0;
28         long inside = 0;
29         for (LongWritable value : values) {
30             total += key.get();
31             inside += value.get();
32         }
33         context.write(key, new DoubleWritable(
34                 4 * (inside / total)));
35     }
36 }
37  
38 // 代码应该比较清楚,输出为抛的总次数所对应的算出的圆周率,可以用来对比抛N次所得到的精度。当然Double是非常不精确的,要想更精确则需要重新实现大的浮点类型
分享到:
评论

相关推荐

    Hadoop课程实验和报告——Hadoop安装实验报告

    Hadoop课程实验和报告——Hadoop安装实验报告 Hadoop是一个开源的大数据处理框架,由Apache基金会开发和维护。它提供了一种可靠、可扩展、可高效的方法来存储和处理大规模数据。在本实验报告中,我们将介绍Hadoop的...

    Hadoop课程实验和报告——K-Means算法并行实现

    Hadoop课程实验和报告——K-Means算法并行实现

    Hadoop课程实验和报告——Apriori算法并行实现

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供了分布式计算的能力,使得处理海量数据变得可能。本实验是关于如何在Hadoop平台上并行实现经典的Apriori算法,这是一门重要的数据挖掘技术,主要用于关联...

    Hadoop课程实验和报告——Apriori算法并行实现.rar

    - 实验环境:描述使用的Hadoop版本、硬件配置以及数据集等信息。 - 实现细节:详细说明代码实现,包括Map和Reduce函数的关键部分。 - 测试与性能评估:展示实验运行时间、资源消耗和效果比较,可能包括与单机版本的...

    「大数据干货」基于Hadoop的大数据平台实施——整体架构设计.pdf

    【大数据平台实施——整体架构设计】 大数据作为信息技术领域的一个热门话题,已经成为众多企业和组织追求的新方向。尽管对于大数据是否适合每个公司或组织尚存争议,但不可否认的是,大数据已经在互联网上被广泛...

    Hadoop课程实验和报告——每年申请美国专利的国家数统计

    接着,我们将使用Hadoop的MapReduce模型来处理数据。在“映射”阶段,每个节点将对输入数据进行局部处理,例如统计每个国家每年的专利申请数量。然后,在“规约”阶段,节点间的中间结果会被合并,最终得出全球各国...

    使用hadoop实现WordCount实验报告.docx

    **使用Hadoop实现WordCount实验报告** 实验报告的目的是详细记录使用Hadoop在Windows环境下实现WordCount应用的过程,包括环境配置、WordCount程序的实现以及实验结果分析。本实验旨在理解Hadoop分布式计算的基本...

    Hadoop高级编程——构建与实现大数据解决方案.rar

    本压缩包“Hadoop高级编程——构建与实现大数据解决方案”将深入探讨如何利用Hadoop进行高效的数据操作,构建实际的大数据解决方案。 一、Hadoop概述 Hadoop是由Apache基金会开发的开源项目,主要由Hadoop ...

    Hadoop分布式文件系统——翻译

    ### Hadoop分布式文件系统(HDFS):关键技术与实践 #### 摘要 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,旨在为大规模数据集提供高效可靠的存储解决方案。HDFS的设计原则强调了数据的分布式存储与...

    最新Hadoop生态圈开发学习资料——尚硅谷

    在大数据领域,Hadoop生态圈是不可或缺的重要组成部分,它为海量数据的存储、处理和分析提供了高效可靠的...这份"最新Hadoop生态圈开发学习资料——尚硅谷"将是你学习过程中宝贵的资源,助你在大数据的世界中游刃有余。

    大数据学习指南合集(Hadoop、Spark、Flink等)

    大数据框架组件 含Hadoop、Spark、Flink等大数据书籍 一、Hadoop   1. Hadoop——分布式文件管理系统HDFS   2. Hadoop——HDFS的Shell操作   3. Hadoop——HDFS的Java API操作   4. Hadoop——分布式计算框架...

    Hadoop分布式文件系统——导入和导出数据内含源码以及说明书可以自己运行复现.zip

    本压缩包“Hadoop分布式文件系统——导入和导出数据内含源码以及说明书可以自己运行复现.zip”包含了关于如何在HDFS上进行数据导入和导出的详细教程,以及相关的源代码和说明书,便于读者实践操作。 HDFS是Apache ...

    Hadoop2.7.1——NFS部署

    ### Hadoop 2.7.1 —— NFS 部署详解 #### 一、概述 随着大数据技术的发展,Hadoop作为主流的大数据处理框架之一,其分布式存储系统HDFS得到了广泛的应用。为了提高Hadoop集群的数据访问效率,通常会采用网络文件...

    hadoop集群配置之———hive安装与配置(超详细)

    Hadoop和Hive是大数据处理和分析领域的重要工具。Hadoop是一个分布式系统基础架构,由Apache基金会开发。它通过在计算机集群之间分布式存储大量数据并允许应用程序在这些集群上并行处理大量数据,来实现高可靠性和...

    Hadoop首选串行化系统——Avro简介及详细使用

    文章目录简介特点Avro数据类型和模式Avro基本类型Avro复杂类型Avro数据序列化/反序列化方法1 使用编译的方式序列化反序列化方法2 不使用编译的方式序列化反序列化 简介  Avro是Hadoop中的一个子项目,也是Apache...

    Hadoop高级编程- 构建与实现大数据解决方案

    本文将深入探讨“Hadoop高级编程——构建与实现大数据解决方案”这一主题,旨在帮助读者掌握如何利用Hadoop构建实际的大数据项目。 首先,我们要理解Hadoop的基础架构。Hadoop由两个主要组件构成:Hadoop ...

    藏经阁-Hadoop的过去现在和未来——从阿里云梯到E-MapReduce.pdf

    Hadoop的过去现在和未来——从阿里云梯到E-MapReduce Hadoop是大数据处理的基础设施,可以说是大数据时代的基石。从2006年Hadoop的诞生到现在,Hadoop已经经历了十多年的发展历程,经历了从 Offline 到 Online、从 ...

    Hadoop 从零开始(1) ——CentOS 安装配置

    然后,使用`hadoop fs -ls`查看文件是否成功上传,再用`hadoop fs -get`将文件下载回来,验证HDFS的读写功能。 **10. 高可用性配置** 对于生产环境,建议设置Hadoop的高可用性,包括配置备用Namenode和启用HDFS的...

Global site tag (gtag.js) - Google Analytics