`

Hadoop读书笔记(九)MapReduce计数器

阅读更多

 

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855

1.MapReduce 计数器的作用

统计Map、Reduce以及Combiner执行的次数,可以用户简单判断代码的执行流程

2.MapReduce自带的计数器

 

14/11/26 22:28:51 INFO mapred.JobClient: Counters: 19
14/11/26 22:28:51 INFO mapred.JobClient:   File Output Format Counters 
14/11/26 22:28:51 INFO mapred.JobClient:     Bytes Written=25
14/11/26 22:28:51 INFO mapred.JobClient:   FileSystemCounters
14/11/26 22:28:51 INFO mapred.JobClient:     FILE_BYTES_READ=343
14/11/26 22:28:51 INFO mapred.JobClient:     HDFS_BYTES_READ=42
14/11/26 22:28:51 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=128056
14/11/26 22:28:51 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=25
14/11/26 22:28:51 INFO mapred.JobClient:   File Input Format Counters 
14/11/26 22:28:51 INFO mapred.JobClient:     Bytes Read=21
14/11/26 22:28:51 INFO mapred.JobClient:   Map-Reduce Framework
14/11/26 22:28:51 INFO mapred.JobClient:     Map output materialized bytes=47
14/11/26 22:28:51 INFO mapred.JobClient:     Map input records=2
14/11/26 22:28:51 INFO mapred.JobClient:     Reduce shuffle bytes=0
14/11/26 22:28:51 INFO mapred.JobClient:     Spilled Records=4
14/11/26 22:28:51 INFO mapred.JobClient:     Map output bytes=37
14/11/26 22:28:51 INFO mapred.JobClient:     Total committed heap usage (bytes)=366034944
14/11/26 22:28:51 INFO mapred.JobClient:     SPLIT_RAW_BYTES=97
14/11/26 22:28:51 INFO mapred.JobClient:     Combine input records=0
14/11/26 22:28:51 INFO mapred.JobClient:     Reduce input records=2
14/11/26 22:28:51 INFO mapred.JobClient:     Reduce input groups=2
14/11/26 22:28:51 INFO mapred.JobClient:     Combine output records=0
14/11/26 22:28:51 INFO mapred.JobClient:     Reduce output records=2
14/11/26 22:28:51 INFO mapred.JobClient:     Map output records=2

 

3.自定义计数器

 

package counter;

import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;
/**
 * 
 * <p> 
 * Title: WordCount.java 
 * Package counter 
 * </p>
 * <p>
 * Description: 自定义计数器
 * <p>
 * @author Tom.Cai
 * @created 2014-11-26 下午10:47:32 
 * @version V1.0 
 *
 */
public class WordCount {
	private static final String INPUT_PATH = "hdfs://192.168.80.100:9000/hello";
	private static final String OUT_PATH = "hdfs://192.168.80.100:9000/out";

	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), conf);
		Path outPath = new Path(OUT_PATH);
		if (fileSystem.exists(outPath)) {
			fileSystem.delete(outPath, true);
		}
		Job job = new Job(conf, WordCount.class.getSimpleName());
		FileInputFormat.setInputPaths(job, INPUT_PATH);
		job.setInputFormatClass(TextInputFormat.class);

		job.setMapperClass(MyMapper.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);

		job.setPartitionerClass(HashPartitioner.class);
		job.setNumReduceTasks(1);

		job.setReducerClass(MyReducer.class);

		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);

		FileOutputFormat.setOutputPath(job, new Path(OUT_PATH));
		job.setOutputFormatClass(TextOutputFormat.class);

		job.waitForCompletion(true);
	}

	static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
		@Override
		protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
		<span style="color:#ff0000;">	/**
			 * 计数器的使用
			 */
			Counter mycounter = context.getCounter("MyCounter", "hello");
			if (value.toString().contains("hello")) {
				mycounter.increment(1L);
			}</span>
			String[] splited = value.toString().split("\t");
			for (String word : splited) {
				context.write(new Text(word), new LongWritable(1));
			}
		}
	}

	static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
		@Override
		protected void reduce(Text key, Iterable<LongWritable> value, Context context) throws IOException, InterruptedException {
			long count = 0L;
			for (LongWritable times : value) {
				count += times.get();
			}
			context.write(key, new LongWritable(count));
		}

	}

}

 

3.自定义计数器后输出

4/11/26 22:45:38 INFO mapred.JobClient: Counters: 20
14/11/26 22:45:38 INFO mapred.JobClient: File Output Format Counters
14/11/26 22:45:38 INFO mapred.JobClient: Bytes Written=25
14/11/26 22:45:38 INFO mapred.JobClient: MyCounter
14/11/26 22:45:38 INFO mapred.JobClient: hello=2

14/11/26 22:45:38 INFO mapred.JobClient: FileSystemCounters
14/11/26 22:45:38 INFO mapred.JobClient: FILE_BYTES_READ=343
14/11/26 22:45:38 INFO mapred.JobClient: HDFS_BYTES_READ=42
14/11/26 22:45:38 INFO mapred.JobClient: FILE_BYTES_WRITTEN=128036
14/11/26 22:45:38 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=25
14/11/26 22:45:38 INFO mapred.JobClient: File Input Format Counters
14/11/26 22:45:38 INFO mapred.JobClient: Bytes Read=21
14/11/26 22:45:38 INFO mapred.JobClient: Map-Reduce Framework
14/11/26 22:45:38 INFO mapred.JobClient: Map output materialized bytes=47
14/11/26 22:45:38 INFO mapred.JobClient: Map input records=2
14/11/26 22:45:38 INFO mapred.JobClient: Reduce shuffle bytes=0
14/11/26 22:45:38 INFO mapred.JobClient: Spilled Records=4
14/11/26 22:45:38 INFO mapred.JobClient: Map output bytes=37
14/11/26 22:45:38 INFO mapred.JobClient: Total committed heap usage (bytes)=366034944
14/11/26 22:45:38 INFO mapred.JobClient: SPLIT_RAW_BYTES=97
14/11/26 22:45:38 INFO mapred.JobClient: Combine input records=0
14/11/26 22:45:38 INFO mapred.JobClient: Reduce input records=2
14/11/26 22:45:38 INFO mapred.JobClient: Reduce input groups=2
14/11/26 22:45:38 INFO mapred.JobClient: Combine output records=0
14/11/26 22:45:38 INFO mapred.JobClient: Reduce output records=2
14/11/26 22:45:38 INFO mapred.JobClient: Map output records=2

 

 

 

欢迎大家一起讨论学习!

有用的自己收!

记录与分享,让你我共成长!欢迎查看我的其他博客;我的博客地址:http://blog.csdn.net/caicongyang

 

 

 

分享到:
评论

相关推荐

    Hadoop原理与技术MapReduce实验

    (1)熟悉Hadoop开发包 (2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验...

    hadoop集群配置及mapreduce开发手册

    ### Hadoop集群配置及MapReduce开发手册知识点梳理 #### 一、Hadoop集群配置说明 ##### 1.1 环境说明 本手册适用于基于CentOS 5系统的Hadoop集群配置,具体环境配置如下: - **操作系统**:CentOS 5 - **JDK版本...

    Hadoop集群配置及MapReduce开发手册

    ### Hadoop集群配置及MapReduce开发手册知识点梳理 #### 一、Hadoop集群配置 **1.1 环境说明** - **操作系统**: CentOS 5 - **JDK版本**: Sun Java 6 - **SSH**: 已安装 - **Eclipse版本**: 3.4.2 (Linux版) - **...

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    本文将详细阐述如何搭建Hadoop集群以及进行MapReduce程序的关键点个性化开发。 首先,我们来看任务1——Hadoop集群的部署。这一步至关重要,因为它为整个大数据处理系统提供了基础架构。在虚拟机中安装Ubuntu Kylin...

    Hadoop计算框架:MapReduce

    文档较详尽的讲述了MR的简介,MR初学分析示例(有代码)、MR特性,MR的执行过程(有代码),MR单元测试介绍(有代码)、HA的架构和配置、同时也向大众推荐了两本书。其中部分有较为详尽的链接以供参考。

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop介绍,HDFS和MapReduce工作原理

    基于 Hadoop 平台,使用 MapReduce 编程,统计NBA球员五项数据.zip

    在这个项目“基于 Hadoop 平台,使用 MapReduce 编程,统计NBA球员五项数据”中,我们将深入探讨如何利用 Hadoop 的核心组件 MapReduce 对 NBA 球员的数据进行分析。 MapReduce 是一种编程模型,用于大规模数据集...

    Hadoop 权威指南读书笔记

    Hadoop 权威指南读书笔记 我自己画的一张图

    hadoop-mapreduce-client-core-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-core-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-core-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-core-2.5.1-sources.jar; 赠送Maven依赖信息文件:...

    尚硅谷大数据技术之Hadoop(MapReduce)1

    【尚硅谷大数据技术之Hadoop(MapReduce)1】深入解析MapReduce MapReduce是Google提出的一种用于处理和生成大规模数据集的编程模型,被广泛应用于大数据处理领域。Hadoop将其作为核心组件,实现了分布式计算的功能...

    hadoop-mapreduce-examples-2.7.1.jar

    hadoop-mapreduce-examples-2.7.1.jar

    05.hadoop上课笔记之hadoop5mapreduce和yarn

    Hadoop.MapReduce 和 YARN 笔记 本节笔记主要介绍了 Hadoop.MapReduce 和 YARN 的基本概念、组成部分、工作原理以及实践应用。 一、MapReduce 概念 MapReduce 是 Hadoop 的核心组件之一,负责处理大规模数据。...

    Hadoop mapreduce实现wordcount

    【标题】Hadoop MapReduce 实现 WordCount MapReduce 是 Apache Hadoop 的核心组件之一,它为大数据处理提供了一个分布式计算框架。WordCount 是 MapReduce 框架中经典的入门示例,它统计文本文件中每个单词出现的...

    Hadoop/HDFS/MapReduce/HBase

    对Hadoop中的HDFS、MapReduce、Hbase系列知识的介绍。如果想初略了解Hadoop 可下载观看

    hadoop-mapreduce-client-jobclient-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...

    hadoop学习笔记.rar

    四、hadoop学习笔记之二:MapReduce基本编程 MapReduce编程模型包括Map阶段和Reduce阶段。Map阶段将输入数据分解为键值对,然后分发到各个节点处理;Reduce阶段则负责聚合Map阶段的结果,生成最终输出。开发者需要...

    详细介绍Hadoop家族中的MapReduce原理

    详细介绍 Hadoop 家族中的 MapReduce 原理 MapReduce 是 Hadoop 家族中的核心组件之一,是一个分布式运算程序的编程框架。MapReduce 的核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式...

    mapred.zip_hadoop_hadoop mapreduce_mapReduce

    在Hadoop生态系统中,MapReduce是一种分布式计算框架,它允许用户编写并运行处理大量数据的程序。这个"mapred.zip"文件显然包含了与Hadoop MapReduce相关的测试样例、文档和源码,这对于理解MapReduce的工作原理以及...

Global site tag (gtag.js) - Google Analytics