IDEA 远程运行 MapperReduce

其它配置请参考:http://blog.csdn.net/uq_jin/article/details/52235121

将HDFS的四个配置文件拷贝到resources目录下

这里写图片描述

修改Configure的初始化代码

Configuration config = new Configuration();

//打包到服务器执行
config.set("mapred.jar", "D:\\workspaces\\idea_j2ee\\All-My-Practice\\hadoop\\mapreducer\\target\\mapreducer-1.0-SNAPSHOT.jar");
//解决Stack trace: ExitCodeException exitCode=1: /bin/bash: line 0: fg: no job control
//https://issues.apache.org/jira/browse/MAPREDUCE-5655
config.set("mapreduce.app-submission.cross-platform", "true");

然后就可以了

在Apache Hadoop MapReduce编程模型中,`Mapper`, `Reducer`, 和 `main` 函数通常是在Hadoop的MapReduce作业中使用的三个核心组件。以下是创建这个结构的一个基本步骤: 1. **Mapper**: - 创建一个实现了`org.apache.hadoop.mapreduce.Mapper`接口的类。这个类需要两个方法:`map()`方法处理输入键值对(`<key, value>`),并产出一系列中间键值对(`<key, intermediateValue>`),以及一个可选的`setup()`方法用于初始化。 ```java public class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> { // map()方法在这里编写,处理输入并生成新的键值对 public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { // ... } } ``` 2. **Reducer**: - 类似地,创建一个实现了`org.apache.hadoop.mapreduce.Reducer`接口的类。它有两个方法:`reduce()`处理来自`Mapper`的中间键值对,生成最终结果;`cleanup()`方法在完成所有reduce操作后运行,清理资源。 ```java public class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> { // reduce()方法在这里编写,汇总中间值并产生最终结果 public 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)); } } ``` 3. **main函数**: - 最后,在主类(通常是名为`MyJobDriver`或类似名称的类)里,你需要配置任务、设置MapperReducer,并通过`Job`对象提交到Hadoop集群。 ```java public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "My MapReduce Job"); job.setJarByClass(MyJobDriver.class); job.setMapperClass(MyMapper.class); job.setCombinerClass(MyReducer.class); // 可选,如果不需要分发数据,则可以省略 job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); // 输入路径 FileOutputFormat.setOutputPath(job, new Path(args[1])); // 输出路径 System.exit(job.waitForCompletion(true) ? 0 : 1); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值