Hadoop权威指南_读书笔记_第2章 关于MapReduce

Hadoop权威指南(第4版)-OReilly 2016 读书笔记 Hadoop权威指南(第4版)-OReilly 2016-ReadingNotes.md 初识Hadoop 关于MapReduce mapper和reducercombiner* HDFS p48 Hadoop2: HA,备用namenode2种HA共享存储: NFS过滤器QJM(quorum journal manager) p73 副本怎么放 由近到 阅读详情

第2章 关于MapReduce

使用Hadoop来分析数据

  • 1.查找最高气温的Mapper类

    // cc MaxTemperatureMapper Mapper for maximum temperature example
    // vv MaxTemperatureMapper
    import java.io.IOException;
    
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;
    
    public class MaxTemperatureMapper
      extends Mapper<LongWritable, Text, Text, IntWritable> {
    
      private static final int MISSING = 9999;
      
      @Override
      public void map(LongWritable key, Text value, Context context)
          throws IOException, InterruptedException {
        
        String line = value.toString();//获取一行
        String year = line.substring(15, 19);//截取年份
        
        //截取温度
        int airTemperature;
        if (line.charAt(87) == '+') { // parseInt doesn't like leading plus signs
          airTemperature = Integer.parseInt(line.substring(88, 92));
        } else {
          airTemperature = Integer.parseInt(line.substring(87, 92));
        }
        String quality = line.substring(92, 93);
        if (airTemperature != MISSING && quality.matches("[01459]")) {
          //将数据写入输出记录中
          context.write(new Text(year), new IntWritable(airTemperature));
        }
      }
    }
    // ^^ MaxTemperatureMapper
    
    
    • 代码解析
      • ① Mapper类 : Mapper类是一个泛型参数,有四个参数类型,分别指定map函数的输入键、输入值、输出键和输出值。本例 输入键是一个长整数偏移量,输入值是一行文本,输出键是年份,输出值是气温。

      • ② map()函数 : map()方法的输入是一个键 和 一个值。本例首先将包含一行输入的Text转换为Java的String类型。之后用subString()方法提取有用列。

        map()方法提供Context实例,用于将数据写入输出记录中。

  • 2.查找最高气温的Reducer类

    // cc MaxTemperatureReducer Reducer for maximum temperature example
    // vv MaxTemperatureReducer
    import java.io.IOException;
    
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Reducer;
    
    public class MaxTemperatureReducer
      extends Reducer<Text, IntWritable, Text, IntWritable> {
      
      @Override
      public void reduce(Text key, Iterable<IntWritable> values,
          Context context)
          throws IOException, InterruptedException {
        
        int maxValue = Integer.MIN_VALUE;
        //获取每个key(year)对应的最大值(气温)
        for (IntWritable value : values) {
          maxValue = Math.max(maxValue, value.get());
        }
        //将数据写出 输出类型和Reducer类输出类型一致
        context.write(key, new IntWritable(maxValue));
      }
    }
    // ^^ MaxTemperatureReducer
    
    • 代码解析
      • ①Reducer类:Reducer类也有四个形参类型,用于指定输入和输出的类型。Reducer的输入类型必须和Mapper的输出类型匹配。
      • ②reduce()函数:reduce()函数输出类型 要和 Reducer的输出类型匹配
  • 3.启动应用程序找出最高气温(dirver)

    // cc MaxTemperature Application to find the maximum temperature in the weather dataset
    // vv MaxTemperature
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
    
    public class MaxTemperature {
    
      public static void main(String[] args) throws Exception {
        if (args.length != 2) {
          System.err.println("Usage: MaxTemperature <input path> <output path>");
          System.exit(-1);
        }
        
        //①创建Job对象,指定作业执行规范。
        Job job = new Job();
    	
    	//②指定应用程序类名,hadoop通过类名找到该jar包。
        job.setJarByClass(MaxTemperature.class);
        //设置job名
        job.setJobName("Max temperature");
    
    	//③指定输入和输出数据的路径。
        FileInputFormat.addInputPath(job, new Path(args[0]));
        //运行作业前该输出目录不应该存在。
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        
        //④指定Mapper和Reducer类
        job.setMapperClass(MaxTemperatureMapper.class);
        //job.setCombinerClass(MaxTemperatureReducer.class);//如果需要开始combiner
        job.setReducerClass(MaxTemperatureReducer.class);
    	
    	//⑤指定reduce输出的类型。
    	//默认情况map的输出类型和reduce相同,如果不同需要单独设置map的输出类型。
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        
        //⑥调用waitForCompletion()提交作业并等待执行完成
        System.exit(job.waitForCompletion(true) ? 0 : 1);
      }
    }
    // ^^ MaxTemperature
    
  • 4 combiner函数

    • ①Hadoop允许用户针对map任务的输出指定一个combiner,combiner函数的输出作为reduce函数的输入。combiner能够减少mapper 和 reducer之间的数据量。相当于map端的reduce函数,提前做一次reduce预聚合。
    • ② combiner属于优化方案,不是必选的。使用combiner函数一定不影响计算结果。比如求温度的平均值就不能使用combiner函数。因为 mean(0,20,25,15) = 14,而 mean(mean(0,20),mean(25,15))=15。
    • ③ cominer不能代替reduce函数,combiner只是对单个map进行处理。最后仍然需要reducer函数处理不同map输出中具有相同key的记录。
    • ④程序中如何指定combiner。combiner函数实现和reducer的逻辑一样的。所以只需在应用程序中添加如下代码:
      job.setCombinerClass(MaxTemperatureReducer.class)
      
复旦微FMQL45T900平台RGMII网口调试实战:从PHY寄存器读取异常到链路建立 本文详细记录了复旦微FMQL45T900平台RGMII网口调试的全过程,重点解决了PHY寄存器读取异常问题。通过电压配置调整、时序优化和硬件信号完整性检查,最终成功建立网络链路。文章提供了实用的调试经验和解决方案,适合嵌入式开发人员参考。 阅读详情

相关推荐

《活用数据——驱动业务的数分析实战》读书笔记 (实战篇)

第四章、战略分析案例解析         如思维篇所述,分析思路是从研究目的到研究内容的分解过程。因此需要考虑如下两个问题: 战略分析的研究目的 战略分析的研究内容 1、研究目的:战略选择         战略分析的研究目的是帮助企业进行战略选择,选择适合自己的目标市场。需要回答以下两个问题: 市场吸引力:这个市...

Xiaozhu的博客 3698

Combiner

combiner的优点:减少IO,提升作业的执行性能 combiner的局限性:例如:求平均数,我们应该是总数/个数,而不应该是部分1/部分数1=部分平均数1,部分2/部分数2=部分平均数2,(部分平均数1+部分平均数2)/2=平均数,这是错误的 ...

Drug discovery 7920

标签传播算法LPA:半监督学习解决标注数据不足的完整实战指南

在机器学习实际工程中,标注数据稀缺往往是制约模型性能的核心瓶颈。半监督学习提供了一条利用海量未标注数据来增强模型泛化能力的有效路径,其中标签传播算法(Label Propagation Algorithm, LPA)因其直观的图结构和优雅的数学原理而备受关注。LPA通过将样本映射为图中的节点,以相似度作为边权重,让已知标签沿着图结构不断扩散,从而实现对未知样本的预测。其背后基于聚类假设与流形假设,能在低标注率场景下显著缓解过拟合问题,提升分类准确率。该技术在文本分类、金融风控、图像识别等存在大量无标注数据的

weixin_29056781的博客 241

Hadoop权威指南---第二章MaxTemperature例题源码

敲了一下hadoop第二章的例题,及泵啥

荒野孤鹰 1023

GIS坐标系转换以及空间校正和地理配准

许多小伙伴都对坐标系,投影这类问题迷迷糊糊,我之前也一样,现在总结一下。 坐标系的转换1.为什么要进行坐标系的转换?2. 不同坐标系的介绍1.地理坐标系我国常见的地理坐标(1).北京54坐标系(2).西安80坐标系(3).WGS-84坐标系(4).大地2000坐标系2.投影坐标系我国常用的投影坐标系(1) UTM投影(2) 高斯-克吕格投影(3) 兰伯特投影(4) 阿尔伯斯投影投影坐标系的选择3. 坐标系的转换1.已知坐标系之间的转换1.1 两坐标系的参考椭球相同1.2 两坐标系的参考椭球不一致,但是GIS

m0_47258611的博客 8913

手把手教你学Simulink——基于Simulink的变换器老化预测与数字孪生(Digital Twin)

这不仅是技术的演进,更是从“事后救火”到“事前预言”的降维打击。:通过本文的实战演练,你不仅掌握了功率变换器“电气-热-老化”多物理场耦合的建模哲学,更深刻领悟了如何将高深的随机过程(粒子滤波)降维成可落地、可量产的工程工具;:起初,由于数据量少,粒子滤波器预测的剩余寿命(RUL)置信区间(95%)非常宽泛(如 1000~2000小时)。在工业4.0与智能制造的浪潮下,功率变换器(如光伏逆变器、车载OBC、服务器电源)不再是孤立的硬件,而是具备“自我感知”与“寿命预知”的智能节点。

MHD0815的博客 299

《Hadoop权威指南》第二章 关于MapReduce

《Hadoop权威指南》第二章 关于MapReduce 目录 使用Hadoop来数据分析 横向扩展 1. 使用Hadoop来数据分析 例如,对气象数据集进行处理。 1. map和reduce 为了充分利用Hadoop提供的并行处理优势,需要将查询表示成MapReduce作业。 MapReduce任务过程分成两个处理阶段:map阶段和reduce阶段。每个阶段都以键值对作为输入输出,类型由...

努力努力再努力L 547

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

Hadoop权威指南(第2版)--第2章

1.MapReduce编程模型:线性可伸缩,使用无共享框架,将问题分为独立的块,再进行并行计算。 MapReduce编程模型可用于数据处理,模型比较简单,但用于绽有用的程序并不简单。Hadoop可以运行由各种语言编写的MapReduce程序。 MapReduce程序本质上是并行运行的,优势在于处理大规模数据集。 2. MapReduce任务过程分为2个处理阶段:map阶段和reduce阶段。

smartDMer的专栏 1271

vue3 - vite报错TypeError: crypto.hash is not a function(vue3+vite启动运行提示错误,项目无法启动且打包报错失败,详细解决排查方案教程)

vue3 vite 报错,vue3+vite启动报错:TypeError: crypto.hash is not a function,创建vue3+vite项目时报错TypeError: crypto.hash is not a function,如何解决这个问题,VUE3+VITE报错crypto.hash,vue3运行报错,vite运行报错,vue3打包报错,vite打包报错,vue3新建项目无法运行,vue3 vite创建项目直接报错了,node版本不兼容,修改了node版本还是不行,依旧报错,一直

✅ 精选推荐文章 1万+

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7705

《Hadoop权威指南4》第2章 关于MapReduce

第2章 关于MapReduce 2.1 气象数据集

bgdx520的博客 254

2026年经典爬虫案例专栏|第17篇:学术论文爬虫实战——知网与万方数据采集

字段名说明数据类型title论文标题字符串authors作者列表列表abstract摘要字符串keywords关键词列表列表journal发表期刊字符串year发表年份整数volume卷号字符串issue期号字符串pages页码范围字符串citations引用次数整数downloads下载次数整数doiDOI编号字符串url论文链接字符串学术论文爬虫是科研工作的重要辅助工具,可以帮助研究人员高效地收集和管理论文数据。

2201_76125261的博客 1062

Hadoop权威指南-读书笔记-02-关于MapReduce

读书笔记~

喻师傅的学习笔记 1586

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hadoop权威指南-读书笔记-01-初识Hadoop

读书笔记

喻师傅的学习笔记 1405

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

读书笔记:Hadoop权威指南 简介

数据来自美国国家气候数据中心(National Climatic Data Center,简称NCDC)。这些数据按行并以ASCII格式存储,其中一行是一条记录。下面显示了一行采样数据,为了给读者了解字段,拆分解释。 从1901年到2001年,每一年都有一个目录,每个目录中包含各个气象站该年气象数据的打包文件及说明文件。 MapReduce任务过程分为凉饿处理阶段:map阶段和reduce阶段...

肥叔菌的博客 9247

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Hadoop权威指南读书笔记(1) - MapReduce和HDFS简介

最近开始读<< Hadoop:the definitive guide>>,于是打算写点读书笔记,书电子版见网盘,密码v66s。

labud的专栏 2127

Hadoop权威指南-读书笔记-04-关于YARN

YARN

喻师傅的学习笔记 1069

Hadoop 权威指南—读书笔记(基本理论、术语、MapReduce)

Hadoop 提供一个可靠的共享存储和分析系统:其中 HDFS(Hadoop Distributed FileSystem)实现存储,MapReduce 实现分析处理。MapReduce是一种线性可伸缩的编程模型。编写两个函数:map 函数和 reduce 函数——每个函数定义一个键/值对集合的映射。函数不需要关注数据集及其所用集群的大小。如果输入的数据量是原来的两倍,那么运行的时间也需要两倍;但...

Carolinedy的博客 508

Hadoop权威指南读书笔记

mapreduce数据本地化(核心特征)、无共享。    1  HDFS的设计 为了存储超大文件 流式访问(一次写入多次读取)商用硬件(不需要超豪华的机器)    2  数据快(block) 磁盘一般是512字节 HDFS默认是64M 但与其他文件系统不同的是小于一个块大小的文件不会占用整个块的空间。块为什么设置这么大?(最小化寻址开销)块抽象带来的好处(一个文件的

xia_yu_mao_fa的专栏 3388

《Hadoop权威指南》读书笔记之六 — Chapter 6

《Hadoop权威指南》读书笔记之六 — Chapter 6 1.xml文件的读取 01.添加在resources文件夹中 02.使用Configuration 类的 addResource()文件 03.获取.xml 文件中的属性 04. .xml文件可以通过 variable expansion 的方式进行设置。 但是这个设置值的顺序是不是得有个先后呢? 这个定义值的顺序是没有先后关系要求的,...

说文科技,做有态度的研究。 741

Hadoop权威指南-读书笔记

Hadoop权威指南-读书笔记 1.MapReduce MapReduce 作业(job)是客户端需要执行的一个工作单元,包括输入数据,MapReduce 程序和配置信息。Hadoop 将作业分为若干个任务(task)来执行,包括 map 任务和 reduce 任务,任务运行在节点上,通过 YARN 进行调度。 Hadoop 对数据进行分片,对每个分片构建一个 map 任务。map 任务输出的是...

Jacob_Zheng的博客 572

《Hadoop权威指南》读书笔记——MapeReduce入门

1 MR的原理 MapeReduce(简称MR)的是大数据计算引擎,相对于Linux awk等工具而已,最大的优势是可以分布式执行,充分利用计算机的多核性能。 一个MR作业(job)是客户端需要执行的一个工作单元,包括输入数据、MR程序和配置信息。作业又可以分成若干个任务(task)来执行,包括map任务和reduce任务。原始数据被MR按照HDFS的快大小(默认128M)分片(split),每一个片是启动一个map任务,计算完的中间结果暂时存在本地。reduce拉取中间结果后进行计算输出最终结果,如下图所

JayLaiSCUT的博客 5885

Hadoop权威指南_读书笔记_第1章 初识Hadoop

第1章 初识Hadoop 1. why hadoop?为什么不能用配有大量硬盘的数据库进行大规模数据分析 答案来自于计算机硬盘的另一个发展趋势:寻址时间的提升远远不敌于传输速率的提升。寻址是将磁头移动到特定硬盘位置,进行读/写操作的过程。 它是导致硬盘操作延迟的主要原因,而传输速率取决于硬盘的带宽。 如果数据访问模式中包含大量的硬盘寻址,那么读取大量数据集就必然会花费更长的时间。如果数据库系统只更新一小部分记录,那么传统的B树就更有优势。但是如果数据库有大量数据更新的时候,B树的效率就明显落后于Map

lightupworld的博客 232

《hadoop权威指南》学习笔记-MapReduce应用开发(下)

这部分内容主要讲在集群上运行mapreduce,说是这样说,但是由于我们还没有搭建集群环境,所以所有的工作相当于还是在伪分布的情况下做的

summerDG的专栏 1614

Hadoop权威指南读书笔记(二)—— MapReduce初理解

一、本章概览 MapReduce可以看作是Hadoop中的分布式计算框架,是用于批量数据离线处理的编程模型。基于MapReduce的并行数据处理是Hadoop能够支撑大数据计算的核心。 书中这一章是以一个实际的例子对MapReduce的过程、机制还有Hadoop提供的相关编程模型及借口做了简单的介绍,内容即非常易懂,也能让读者初步地宏观了解MapReduce的计算原理。其中很多细节的地方书中并没有...

qq_36684082的博客 311
上一篇: Hadoop权威指南_读书笔记_第1章 初识Hadoop
下一篇: Hadoop权威指南_读书笔记_第3章 Hadoop分布式文件系统(上)
lightupworld
博客等级 码龄7年 112粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值