12. MapReduce全局计数器

一. 计数器概述

在执行MapReduce程序时,控制台的输出中一般会包含如下内容。
在这里插入图片描述

这些输出就是MapReduce的全局计数器的输出信息。计数器是用来记录job的执行进度和状态的,它的作用可以理解为日志,方便用户了解任务的执行状况,辅助用户诊断故障。

常见内置计数器

  • File System Counters:跟踪作业读写的文件系统操作,如HDFS读写字节数。
    在这里插入图片描述

  • Job Counters:作业相关的统计,如作业的提交数量、耗费的时间。
    在这里插入图片描述

  • MapReduce Task Counters:Map和Reduce任务的统计,如map/reduce任务的输入输出记录数。
    在这里插入图片描述

  • File Input | Output Format Counters:跟踪FilelnputFormat读取的字节数或FileOutputFormat输出的字节数。
    在这里插入图片描述

二. MapReduce自定义计数器

尽管hadoop内置了很多常见的计数器,但是针对一些特定场景,MapReduce也提供了自定义计数器。

自定义计数器的使用分为以下两部:

  1. 首先通过context.getCounter方法获取一个全局计数器,创建的时候需要指定计数器所属的组名和计数器的名字。
    在这里插入图片描述

  2. 在程序中需要使用计数器的地方,调用 counter 提供的方法即可
    在这里插入图片描述

需求
在wordcount的案例中使用计数器输出文件的行数。

代码实现

package mr;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Counter;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class WordCountMRCounter {static class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {@Overridepublic void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 从程序上下文对象获取一个全局计数器,并指定计数器组和计数器名字Counter counter = context.getCounter("own_counter", "line Counter");String[] words = value.toString().split(" ");for (String word: words) {context.write(new Text(word), new IntWritable(1));}// 处理完1行,计数器加1counter.increment(1);}}static class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {@Overridepublic void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}context.write(key, new IntWritable(sum));}}public static void main(String[] args) throws  Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(WordCountMRCounter.class);job.setJobName("WordCount");// 设置输入,输出路径FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));// 设置Mapperjob.setMapperClass(WordCountMRCounter.WordCountMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 设置Reducerjob.setReducerClass(WordCountMRCounter.WordCountReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);job.setNumReduceTasks(1);boolean waitFor = job.waitForCompletion(true);System.exit(waitFor ? 0 : 1);}
}

运行结果
在这里插入图片描述

# 查看输入文件,恰好也是3行
[root@hadoop1 ~]# hdfs dfs -text /test/a.txt
hello world
name hello
world

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103C8T6 IO 操作

1.开启相关时钟 在 STM32 微控制器中&#xff0c;开启 GPIO 端口的时钟是确保 IO 口可以正常工作的第一步。 查找 RCC 寄存器使能时钟 在 STM32 中&#xff0c;时钟控制的寄存器通常位于 RCC (Reset and Clock Control) 模块中。不同的 STM32 系列&#xff08;如 STM32F1、STM…

使用LangChain控制大模型的输出——解析器Parser

LangChain框架中有两个好用的工具&#xff1a; 提示词模板(PromptTemplate)用于指定LLM的输入&#xff0c;解析器(Parser)来正确解释LLM给出的输出 即&#xff1a; 提示词模板(PromptTemplate)&#xff1a;用于格式化地接受输入string变量&#xff0c;作为完整的提示词。 如 给…

架构的本质之 MVC 架构

前言 程序员习惯的编程方式就是三步曲。 所以&#xff0c;为了不至于让一个类撑到爆&#x1f4a5;&#xff0c;需要把黄色的对象、绿色的方法、红色的接口&#xff0c;都分配到不同的包结构下。这就是你编码人生中所接触到的第一个解耦操作。 分层框架 MVC 是一种非常常见且常…

VScode + PlatformIO 了解

​Visual Studio Code Visual Studio Code&#xff08;简称 VS Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构功能&#xff0c;并且内置了工具和 Git 版本…

微信公众号(或微信浏览器)获取openId(网页授权)

下单支付需要openId 首先授权去拿到code --然后调用后太换取openId 1.去拿取code 下图中执行到window.location.href &#xff08; redirect_uri 传入当前路径-&#xff09;–执行后重新跳转到当前页面–但是路径上会带上code参数 //然后调用后台方法–将code传给后台得到 o…

Steam deck 倒腾日记 - 安装Windows软件,玩上黑神话悟空

Steam deck 倒腾日记 关于Steam Deck基本信息性能特点游戏兼容性 问题一: 软键盘输入问题二: 系统切换问题三: 安装运行Window 软件关于Proton如何运行 问题四: 优化网络问题黑神话.悟空PS参考 关于Steam Deck Steam Deck是一款由Valve开发的便携式游戏PC&#xff0c;它搭载了A…

人工智能的前世今生:从幻想走向现实

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们生活中不可或缺的一部分。从智能手机的语音助手到自动驾驶汽车&#xff0c;AI的应用无处不在。但是&#xff0c;人工智能的发展历程并非一帆风顺&#xff0c;它经历了从兴起、寒冬到复兴的曲折…

ARM base instruction -- bfc

Bitfield Clear sets a bitfield of <width> bits at bit position <lsb> of the destination register to zero, leaving the other destination bits unchanged. 位域清除将目标寄存器位位置<lsb>处<width>位的位域设置为零&#xff0c;而保留其他目…

预处理详解(一)

目录 预定义符号define定义常量define定义宏宏替换的规则宏与函数的对比 预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使用&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇…

2024-10-30 学习人工智能的Day18

Python包和模块 当使用Python编程时&#xff0c;包&#xff08;Packages&#xff09;和模块&#xff08;Modules&#xff09;是两个关键的概念&#xff0c;它们有助于组织、管理和复用代码。 1. 模块&#xff08;Modules&#xff09; 1.1 什么是模块 一个.py 文件就是一个模…

从 TCP 友好性看传输优化

再看一遍最传统 TCP AIMD 吞吐的推导&#xff1a; 这个积分用离散求和表示很简单&#xff0c;一个锯齿发送的报文总数为&#xff1a; ( W 2 0 ) ( W 2 1 ) ( W 2 2 ) . . . ( W 2 ( W − W 2 ) ) ≈ 3 ⋅ W 2 8 (\dfrac{W}{2}0)(\dfrac{W}{2}1)(\dfrac{W}{2}2)...(\df…

css 对称按钮,中间斜平行间隔,两头半圆

序&#xff1a;稍一看&#xff0c;挺好看&#xff0c;看也简单&#xff0c;实现起来应该也是一样&#xff0c;没什么难度&#xff0c;分分钟完成。后面将其他的UI做了七七八八后&#xff0c;到这个按钮的时候&#xff0c;不知怎么&#xff0c;突然卡机了&#xff0c;想不起来怎…

DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计

本章详细分析和论述了 LPDDR3 物理层接口模块的布图和布局规划的设计和实 现过程&#xff0c;包括设计环境的建立&#xff0c;布图规划包括模块尺寸的确定&#xff0c;IO 单元、宏单元以及 特殊单元的摆放。由于布图规划中的电源规划环节较为重要&#xff0c; 影响芯片的布线资…

几种因素对磁控溅射AlN薄膜择优取向的影响

几种因素对磁控溅射AlN薄膜择优取向的影响 AlN材料在微电子产业中有广泛的应用&#xff0c;AlN薄膜在多种器件中都扮演着重要角色。 晶体生长中的择优取向是指在多晶材料中&#xff0c;晶粒沿着某一特定晶向或晶面生长得更快或更优先的现象。这种取向通常与材料的制备工艺和生长…

基于Java SpringBoot和Vue社区医院诊所医疗挂号管理系统设计

摘要 本文旨在设计并实现一个基于Java SpringBoot和Vue的社区医院管理系统&#xff0c;以解决当前社区医院管理中存在的效率低下、数据安全性差等问题。通过采用前后端分离架构&#xff0c;系统实现了用户信息管理、挂号管理、医生管理等功能模块&#xff0c;有效提升了医院的…

Linux 基础io_ELF_虚拟物理地址_动态库加载

1.可执行程序格式 ELF [wwshcss-ecs-178e myshell]$ ll total 56 -rw-rw-r-- 1 wws wws 92 Oct 17 19:14 file -rw-rw-r-- 1 wws wws 82 Oct 12 16:51 makefile -rw-r--r-- 1 wws wws 90 Oct 17 19:13 myfile -rwxrwxr-x 1 wws wws 20128 Oct 16 21:02 myshell -rw-r…

Java如何实现PDF转高质量图片

大家好&#xff0c;我是 V 哥。在Java中&#xff0c;将PDF文件转换为高质量的图片可以使用不同的库&#xff0c;其中最常用的库之一是 Apache PDFBox。通过该库&#xff0c;你可以读取PDF文件&#xff0c;并将每一页转换为图像文件。为了提高图像的质量&#xff0c;你可以指定分…

【HarmonyOS NEXT】使用 Navigation 对折叠屏设备页面进行分栏展示,优化 UI 交互

关键词&#xff1a;折叠屏、navigation、router、路由、分栏、UI 随着科技的发展&#xff0c;手机设备形态也由一面屏向多面屏进行发展&#xff0c;那么软件的UI适配也面临着问题&#xff0c;本篇文章主要解决大屏设备的页面 UI 适配问题&#xff0c;如折叠屏&#xff0c;平板&…

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (二)

coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 二 zmq API接口python调用python获取3D相机的数据获取彩色相机的数据获取深度相机的数据用matpolit显示 python控制机器人运动直接控制轴的位置用IK运动学直接移动到末端姿态 相机内参的标定记录拍照点的位置…

Linux 安装nacos

1.下载版本 https://github.com/alibaba/nacos/tags 2.解压压缩包&#xff0c;启动 (1)将压缩包放到/usr/local目录下&#xff0c;解压 tar -xvf nacos-server-2.0.0-BETA.tar.gz(2)删除压缩包 rm -f nacos-server-2.0.0-BETA.tar.gz(3) 找到nacos的mysql的数据库脚本,在数…