基础MapReduce程序骨架

本文详细介绍了MapReduce作业的基本配置过程,包括如何设置输入输出路径、指定Mapper与Reducer类等核心步骤。此外还探讨了如何利用Hadoop提供的工具类进行命令行参数的解析与配置。
/***************************************************
 * MapReduce Basic Template
 * Author: jokes000
 * Date: 2011-12-14
 * Version: 1.0.0
 **************************************************/

public class MapReduceTemplate extends Configured implements Tool {
	
	public static class MapClass extends Mapper<Object,Object,Object,Object> {
		
		// Map Method
		public void map(KEYIN key, VALUEIN value, Mapper.Context context) {
			
		}
	}
	
	public static class Reduce extends Reducer<Object,Object,Object,Object> {
		
		// Reduce Method
		public void reduce(KEYIN key, Iterable<VALUEIN> values, Reducer.Context context) {
			
		}
	}
	
	// run Method
	public int run(String[] args) throws Exception {
		// Create and Run the Job
		Job job = new Job();
		job.setJarByClass(MyJob.class);
		
		FileInputFormat.addInputPath(job, new Path(arg0[0]));
		FileOutputFormat.setOutputPath(job, new Path(arg0[1]));
		
		job.setMapperClass(MapClass.class);
		job.setReducerClass(Reduce.class);
		job.setInputFormatClass(MyInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		
		System.exit(job.waitForCompletion(true) ? 0 : 1);
		return 0;
	}
	
	public static void main(String[] args) throws Exception {
		// 
	}
}

Mapper、Reducer在Job执行期间被多个节点clone以及执行,而剩下的Job Class值在客户端上执行。


除去Mapper和Reducer之后,我们程序的骨架为:

/***************************************************
 * MapReduce Basic Template
 * Author: jokes000
 * Date: 2011-12-14
 * Version: 1.0.0
 **************************************************/

public class MapReduceTemplate extends Configured implements Tool {
	
	// run Method
	public int run(String[] args) throws Exception {
		// Create and Run the Job
		Job job = new Job();
		job.setJarByClass(MyJob.class);
		
		FileInputFormat.addInputPath(job, new Path(arg0[0]));
		FileOutputFormat.setOutputPath(job, new Path(arg0[1]));
		
		job.setMapperClass(MapClass.class);
		job.setReducerClass(Reduce.class);
		job.setInputFormatClass(MyInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		
		System.exit(job.waitForCompletion(true) ? 0 : 1);
		return 0;
	}
	
	public static void main(String[] args) throws Exception {
		// 
	}
}
这个骨架的核心是run()函数,被成为程序的driver,driver实例化、配置一个Job实体,并使其运行。

Job class会和JobTracker通信使其在集群中执行MapReduce Job。


run()函数中的基础步骤为:

1.创建一个新的Job实例;

2.设置实例运行的主类;

3.设置程序输入输出位置;

4.设置Mapper、Reducer类

5.设置Input、OutputFormat,设置OutputKey、Value类

6.执行Job


Job变量有许多变量,当用户从命令行执行一个Hadoop Job时,他可能想传入一些额外的参数来改变Job的配置。

于是Hadoop提供Configured和Tool类来支持这些参数的识别(具体识别的类为GenericOptionsParser)。

例如:

标准运行命令:bin/hadoop jar MyJob.jar MyJob input/cite77_99.txt output

但是此时我们只想看Mapper的输出(用来Debug),这是我们可以添加这些参数

bin/haoop jar MyJob.jar MyJob -D maped.reduce.tasks=0 input/cite75_99.txt output

GenericOptionsParser支持以下的选项:

-conf <configuration file>         specify an application configuration file

-D <property=value>                use value for given property

-fs <local|namenode:port>      specify a namenode

-jt <local|jobtracker:port>         specify a job tracker

-files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster

-libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.

-archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.



内容概要:本文研究了一种基于改进ICEEMDAN的火电-蓄电池-飞轮混合储能联合调频协同控制策略,旨在提升电力系统频率调节的快速响应能力与运行稳定性。通过引入改进的自适应噪声完备集合经验模态分解(ICEEMDAN)方法,对电网频率偏差信号进行多时间尺度分解,精确分离高频与低频动态分量,并据此实现功率的差异化分配:高频成分由响应迅速的飞轮储能承担,低频成分由能量密度高的蓄电池处理,同时结合火电机组的基础调频能力,构建火电-混合储能多源协同控制架构。该策略充分发挥各类储能技术的优势,有效缓解单一储能系统的压力,延长设备寿命,并提升系统整体调频性能。文中提供了完整的Matlab仿真代码实现,验证了该方法在抑制频率波动、优化储能出力、提高系统可靠性和经济性方面的显著效果。; 适合人群:具备电力系统分析、自动控制理论及新能源技术等相关专业知识背景,熟悉Matlab/Simulink仿真平台,从事电力系统调频控制、混合储能系统优化、多时间尺度能量管理等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入研究混合储能系统在电网一次调频与二次调频中的功率分配机制与协调控制逻辑;②掌握ICEEMDAN信号分解技术在能源系统动态特征提取与多尺度控制中的应用方法;③实现火电机组与多类型储能协同参与调频的仿真建模、算法开发与性能对比分析;④为综合能源系统、微电网及新型电力系统的多源多时间尺度协调控制提供理论依据与技术参考。; 阅读建议:建议结合提供的Matlab代码逐模块分析算法实现流程,重点理解信号分解、模态分量判别、功率分配规则及控制器设计等关键环节,可通过调整系统参数、模拟不同扰动工况进行仿真测试,进一步开展灵敏度分析与策略优化,以深化对协同控制机理的认识并拓展其实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值