1. 计数器应用
计数器是用来记录job的执行进度和状态的。MapReduce 计数器(Counter)为我们提供一个窗口,用于观察 MapReduce Job 运行期的各种细节数据。对MapReduce性能调优很有帮助,MapReduce性能优化的评估大部分都是基于这些 Counter 的数值表现出来的。
MapReduce 自带了许多默认Counter。在执行mr程序的日志上,大家也许注意到了类似以下这样的信息:
Shuffle Errors
BAD_ID=0
CONNECTION=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=89
File Output Format Counters
Bytes Written=86
内置计数器包括:
文件系统计数器(File System Counters)
作业计数器(Job Counters)
MapReduce框架计数器(Map-Reduce Framework)
Shuffle 错误计数器(Shuffle Errors)
文件输入格式计数器(File Output Format Counters)
文件输出格式计数器(File Input Format Counters)
当然, Hadoop也支持自定义计数器。在实际生产代码中,常常需要将数据处理过程中遇到的不合规数据行进行全局计数,类似这种需求可以借助mapreduce框架中提供的全局计数器来实现。
示例代码如下:

public class WordCount{static class WordCount Mapper extends Mapper<LongWritable, Text, Text, LongWritable> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {Counter counter =context.getCounter(“SelfCounters”,”myCounters”);String[] words = value.toString().split(",");for (String word : words) {if("hello".equals(word)){counter.increment(1)};context.write(new Text(word), new LongWritable(1));}}}

2. 多job串联
一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现
示例代码:


1.         ControlledJob controlledJob1 = new ControlledJob(job1.getConfiguration()); 2.         controlledJob1.setJob(job1);  3.         ControlledJob controlledJob2 = new ControlledJob(job2.getConfiguration()); 4.         controlledJob2.setJob(job2);  5.          controlledJob2.addDependingJob(controlledJob1);  // job2 依赖于 job16.         JobControl jc = new JobControl(chainName);  7.         jc.addJob(controlledJob1);  8.         jc.addJob(controlledJob2);  9.         Thread jcThread = new Thread(jc);  10.         jcThread.start();  11.         while(true){ 12.             if(jc.allFinished()){ 13.                 System.out.println(jc.getSuccessfulJobList());  14.                 jc.stop();  15.                 return 0;  16.             } 17.             if(jc.getFailedJobList().size() > 0){ 18.                 System.out.println(jc.getFailedJobList());  19.                 jc.stop();  20.                 return 1;  21.             } 22.         }

转载于:https://blog.51cto.com/13587708/2295809

MapReduce其他功能相关推荐

  1. MongoDB中mapReduce的使用

    MongoDB中mapReduce的使用 制作人:全心全意 mapReduce的功能和group by的功能类似,但比group by处理的数据量更大 使用示例: var map = function ...

  2. MapReduce 概述

    1. MapReduce 定义 MapReduce 是一个分布式运算程序的编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架. MapReduce 核心功能是将用户编 ...

  3. 分布式并行计算MapReduce

    作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce ...

  4. mapreduce编程规范_大数据之MapReduce详解

    今天要讲的是MapReduce 目录 今天先总体说下MapReduce的相关知识,后续将会详细说明对应的shuffle.mr与yarn的联系.以及mr的join操作的等知识.以下内容全是个人学习后的见 ...

  5. day08 MapReduce

    PS: HDFS对于MapReduce来说,HDFS就是一个就是一个客户端. PS: 离线就是 写sql,sparkh还是写sql 1. MAPREDUCE原理篇(1) Mapreduce是一个分布式 ...

  6. Hadoop之MapReduce入门

    Hadoop之MapReduce概述 目录 MapReduce定义 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 MapReduce案例实操 ...

  7. 使用Hadoop Streaming 完成MapReduce(Python代码)

    一 Map和Reduce  首先看下MR的工作原理 MapReduce的好处是它可以把在内存中不能完成的事转变成可以在硬盘上高效完成. Map-­‐Reduce 对于集群的好处: 1,在多节点上冗余地 ...

  8. 大数据之MapReduce详解(MR的运行机制及配合WordCount实例来说明运行机制)

    目录 前言: 1.MapReduce原理 2.mapreduce实践(WordCount实例) 目录 今天先总体说下MapReduce的相关知识,后续将会详细说明对应的shuffle.mr与yarn的 ...

  9. Hadoop学习之路(十三)MapReduce的初识

    MapReduce是什么 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大 ...

最新文章

  1. 查看CentOS的网络带宽出口
  2. java drools5_Java Drools5.1 规则流基础【示例】
  3. C# 动态执行批处理命令
  4. Android中ListView与RadioButton结合----自定义单选列表
  5. 设计模式(Design Patterns)详解
  6. Linux | 编译原理、gcc的命令参数、自动化构建工具 make/Makefile
  7. Epson C1100报错“Service Req E511”的处理方法
  8. DKIM标准:对付网络钓鱼的新武器
  9. 机器学习部分内容总结
  10. qmainwindow 标题栏_Qt:自定义标题栏(QMainWindow)
  11. 高可靠性技术之RRPP和VRRP
  12. Java Web3J概述
  13. 百度算法发布历史列表
  14. u-boot移值(九)-u-boot的编译、链接过程
  15. 9.6 矩阵的条件数
  16. 读书笔记:《过程咨询 III》
  17. 深入理解Plasma(二)Plasma 细节
  18. STM32驱动_rc522
  19. 求两圆相交面积(模板)
  20. 安卓投屏软件_【今日分享】一网打尽iOS/安卓/电脑/电视投屏软件附在线播放软件...

热门文章

  1. linux系统下安装qgis,深度操作系统 deepin 15.11安装 QGIS 3.4
  2. CH0805 防线 (二分值域,前缀和,特殊性质)
  3. 大数据正在改变客户服务的五种方式
  4. 从头认识Spring-1.7 如何通过属性注入Bean?(1)-如何通过属性向对象注入值?...
  5. 解决mac升级后,出现的 xcrun: error: invalid active developer path, missing xcrun 错误
  6. 实时数据处理插件开发flume+kafka+storm:flume
  7. [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
  8. html5 canvas 笔记五(合成与裁剪)
  9. ASP.NET 文件上传于下载
  10. 使用selector改变按钮状态