`

Hadoop 自定义计数器

 
阅读更多

public static class mapper extends Mapper<Text, BytesWritable, Text , Text>{

		private Counter c ;
		@Override
		protected void setup(Context context) throws IOException,
				InterruptedException {
			c = context.getCounter("FILE", "COUNT");
		}

		@Override
		protected void map(Text key, BytesWritable value, Context context)
				throws IOException, InterruptedException {
			c.increment(1);
			context.write(key, new Text(value.getBytes()));
		}

		@Override
		protected void cleanup(Context context)
				throws IOException, InterruptedException {
			
		}
		
	}
	
	public static class reducer extends Reducer<Text, Text, Text, Text>{
		
		@Override
		protected void reduce(Text arg0, Iterable<Text> arg1,
				Context context)
				throws IOException, InterruptedException {
			Iterator<Text> itr = arg1.iterator();
			while(itr.hasNext()){
				itr.next();
			}
			
			context.write(arg0, new Text("heihei"));
		}
		
	}
	
	public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException{
		
		Configuration conf = new Configuration();
		Job job = new Job(conf);
		job.setJarByClass(testCounter.class);
		
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		
		job.setMapperClass(mapper.class);
		job.setReducerClass(reducer.class);
		
		job.setInputFormatClass(WholeFileInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(Text.class);
		
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		
		job.waitForCompletion(true);
		
		String num = job.getCounters().findCounter("Map-Reduce Framework", "Map input records").getName();
		System.out.println(num);
	}

 获取计数器只能在job完成之后,也就是job.waitForCompletion(true);之后,放在之前的话回报一个非法安全的错误,但是在reducer函数里面,则不错报错,也不能获取计数器值,可能设计人员没有扑捉reducer里面的异常吧...

计数器有自定义计数器和内置计数器

静态计数器和动态计数器,前者用枚举,更安全一些,后者直接用字符串,有时为了显示方便,会创建一个properties属性文件。

 

 

 

分享到:
评论

相关推荐

    hadoop实现计数器

    开发人员可以自定义计数器组,并在Mapper或Reducer中增加计数器实例来跟踪特定的事件或指标。例如,可以创建一个计数器来追踪处理的行数,或者另一个计数器来记录遇到的错误。这些计数器的值可以在JobTracker或YARN...

    javamap源码-HADOOP-COUNTER-SOURCE-CODE:在HadoopMapReduce编码中使用自定义计数器的Java程序

    这个项目可能包含一个或多个示例,展示了如何在Mapper和Reducer中创建和更新自定义计数器,以便监控任务的执行情况。 首先,我们需要了解Hadoop MapReduce的基本工作流程。MapReduce将大数据处理任务拆分为两个主要...

    18、MapReduce的计数器与通过MapReduce读取-写入数据库示例

    计数器分为两类:Hadoop内置的计数器和自定义计数器。 内置计数器主要由Hadoop框架提供,例如Map任务和Reduce任务的数量、输入和输出的数据量等。这些计数器在MapReduce作业的执行过程中自动更新,并在日志中打印...

    Hadoop MapReduce高级特性

    而自定义计数器则是由开发者在编写MapReduce程序时设定的,用以统计用户自定义事件的发生次数,比如无效记录的计数、记录某些特殊情况的发生等。计数器的存在使得开发者可以进行质量控制、应用级别的统计和问题定位...

    Hadoop大数据实训,求最高温度最低温度实验报告

    在这个实验中,可能会使用自定义计数器来记录不同年份的气温记录数量,或者处理的行数等,以便于监控和分析程序的运行情况。 3. **MapReduce参数传递**:在配置MapReduce作业时,我们可能需要设置一些特定的参数,...

    Hadoop集群管理

    Hadoop为每个作业维护了一系列内置计数器,同时也支持用户自定义计数器。 ##### 内置计数器分类 - **任务计数器**:用于收集任务执行过程中的信息,如读取记录的数量等。 - **作业计数器**:由ResourceManager维护...

    hadoop调查报告书

    - **计数器**:提供自动计数器和用户自定义计数器,用于统计任务执行情况。 - **任务分割**:自动将大任务拆分成小任务,以便并行处理。 #### 管理功能 - **任务监控**:提供了可视化界面来监控任务执行状态。 - **...

    Hadoop权威指南 第二版(中文版)

     用户自定义函数  过滤UDF  计算UDF  加载UDF  数据处理操作  加载和存储数据  过滤数据  分组与连接数据  对数据进行排序  组合和分割数据  Pig实战  并行处理  参数代换 第12章 Hive  1.1 安装Hive ...

    Hadoop权威指南(中文版)2015上传.rar

    用户自定义函数 过滤UDF 计算UDF 加载UDF 数据处理操作 加载和存储数据 过滤数据 分组与连接数据 对数据进行排序 组合和分割数据 Pig实战 并行处理 参数代换 第12章 Hive 1.1 安装Hive 1.1.1 Hive外壳环境 1.2 示例 ...

    Hadoop 培训课程(4)MapReduce_2

    Hadoop 培训课程(4)MapReduce_2 标准和自定义计数器* Combiner和Partitioner编程** 自定义排序和分组编程** 常见的MapReduce算法** ---------------------------加深拓展---------------------- 常见大数据处理方法*

    计数器.rar

    例如,Hadoop MapReduce框架中,开发者可以定义自定义的计数器来记录处理过程中的关键指标,这有助于分析任务性能和调试。Apache Spark等流处理系统也有类似的概念,允许用户创建和使用计数器来跟踪实时处理的数据量...

    Hadoop实战

    高级MapReduce技术包括自定义输入/输出格式、优化数据分区、使用组合器减少网络传输、实现计数器监控程序性能、利用缓存提高效率等。通过这些高级技术,可以更灵活地控制数据流和计算过程,提高处理效率。 ### 管理...

    Hadoop权威指南---中文版

    - **计数器**:解释了计数器在MapReduce中的作用,以及如何使用它们来监控作业的状态。 - **排序**:讨论了如何在MapReduce中实现排序操作。 - **联接**:介绍了MapReduce中实现数据联接的方法。 - **次要数据的分布...

    Hadoop_MapReduce教程

    - **Counters**:Counters 用于统计作业过程中的各种计数器信息,如处理的记录数量等。 - **DistributedCache**:DistributedCache 可以在作业运行时将一些辅助文件分发到各个 TaskTracker 上,便于 Mapper 或 ...

    Hadoop权威指南

    - **计数器**:用于收集作业运行期间的统计信息。 - **排序**:自定义排序规则,以满足特定需求。 - **联接**:处理来自多个数据源的信息。 - **次要数据的分布**:解决数据分布不均的问题。 - **类库**:提供了一...

    hadoop命令指南

    这个条目可能是指用户可以运行的任何自定义类,通常用于扩展Hadoop的功能。 **命令格式**: ``` hadoop CLASSNAME [ARGUMENTS...] ``` **示例**: ``` hadoop ...

    介绍基于Hadoop的C++扩展和新的任务计划

    - **高级接口**:允许用户自定义更多的功能,如JobConf用于获取作业配置、Counter允许用户定义计数器等。 #### 七、HCE实例——Word Count 以Word Count为例,展示了如何使用HCE进行MapReduce任务的编写和执行。...

    通用大数据存储与分析处理平台_Hadoop.docx

    - **输入格式和输出格式**:自定义数据输入和输出的类。 - **计数器**:跟踪MapReduce任务的统计信息。 - **排序技术**:如归并排序,用于MapReduce中的数据排序。 - **连接**:处理不同数据集的连接操作。 - **...

Global site tag (gtag.js) - Google Analytics