今天做了一个简单的mapreduce小程序,目的是熟悉一下怎么在真实的集群上跑自己的mr程序,之前写的都是在单机模拟运行的。功能很简单就是求一个key对应值里面最大的。
开发环境:
hadoop2.5
jdk1.6
eclipse3.7
1、创建一个java工程,加入如下jar包:
hadoop-common-2.5.2.jar
hadoop-mapreduce-client-common-2.5.2.jar
hadoop-mapreduce-client-core-2.5.2.jar
hadoop-mapreduce-client-jobclient-2.5.2.jar
2、主要类
MaxNumberDriver.java用于启动mapreduce程序的入口
[code="java"]package org.qhy.mapreduce.maxnumber;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class MaxNumberDriver extends Configured implements Tool{
@Override
public int run(String[] arg0) throws Exception {
if(arg0.length {
@Override
protected void map(LongWritable key, Text value, Mapper.Context context)
throws IOException, InterruptedException {
String lineVal = value.toString();
String[] arrayVal = lineVal.split(",");
String year= arrayVal[0],number=arrayVal[1];
context.write(new Text(year), new IntWritable(Integer.parseInt(number)));
}
}
MaxNumberReducer.java reducer实现类
package org.qhy.mapreduce.maxnumber;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class MaxNumberReducer extends Reducer {
// @Override
// protected void reduce(Text year, java.lang.Iterable numbers,
// org.apache.hadoop.mapreduce.Reducer.Context context)
// throws java.io.IOException, InterruptedException {
// int maxValue = Integer.MIN_VALUE;
// for(IntWritable value: numbers){
// maxValue = Math.max(maxValue,value.get());
// }
// context.write(year, new IntWritable(maxValue));
// }
/**
* {@inheritDoc}使用第三方Apache Lang包
* @see org.apache.hadoop.mapreduce.Reducer#reduce(KEYIN, java.lang.Iterable, org.apache.hadoop.mapreduce.Reducer.Context)
*/
@Override
protected void reduce(Text year, java.lang.Iterable numbers,
org.apache.hadoop.mapreduce.Reducer.Context context)
throws java.io.IOException, InterruptedException {
Iterator itr = numbers.iterator();
int length=0;
List list = new ArrayList();
while(itr.hasNext()){
IntWritable iwVal = itr.next();
list.add(iwVal.get());
length++;
}
int[] array = new int[length];
for(int i=0;iexport->jar->选择导出路径(一路next)-> 记得选一下main函数类
4、运行
将jar放到系统上linux上
./hadoop jar ~/testData/MRMaxNumber.jar hdfs://hdp01nn:9000/maxnumber hdfs://hdp01nn:9000/testOut/maxnumber4
分享到:
相关推荐
net连接hadoopMapreduce驱动(MapRHiveODBC64)net连接hadoopMapreduce驱动(MapRHiveODBC64)net连接hadoopMapreduce驱动(MapRHiveODBC64)net连接hadoopMapreduce驱动(MapRHiveODBC64)net连接hadoopMapreduce驱动...
HadoopMapReduce教程.pdf
hadoopMapReduce实例解析.pdf
内容概要: HadoopMapReduce-分区、排序、切片实现Java源代码; HadoopMapReduce-分区、排序、切片的原理,流程,分析,笔记等等
HadoopMapReduce短作业执行性能优化.pdf 更多资源请点击:https://blog.csdn.net/weixin_44155966
将OpenStack私有云部署到HadoopMapReduce环境中四种方案
新手学习并实践的简单mapreduce小项目
一片论文 分享了大家学习 hadoop mapreduce模型
:ApacheHadoop是目前分析分布式数据的首选工具,和大多数Java?2.0技术一样,是可扩展的。从Hadoop的MapReduce编程建模开始,学习如何用它来分析数据,满足大大小小的商业信息需求。Google在2001年发布图像搜索功能...
HadoopMapReduce作业有着独一无二的代码架构,这种代码架构拥有特定的模板和结构。这样的架构会给测试驱动开发和单元测试带来一些麻烦。这篇文章是运用MRUnit,Mockito和PowerMock的真实范例。我会介绍1.使用MRUnit...
HadoopMapReduce Hadoop MapReduce 示例
人工智能-hadoop
.net环境下连接Hive驱动,C#查询Hadoop的Hive数据,C#连接HIVE使用MapRHive ODBC Connector;C#通过ODBC连接HIVE读取数据
概要 目标是学习 Apache(大)数据库框架 - Hadoop、Pig、Hive、Hbase 描述 目前在 2 个数据集上有 3 个项目: 百万歌曲数据集 Most_Popular_Genres :使用非常简单的流派识别(Apache Hive 与 Apache Pig)确定...
MapReduce是用于数据处理的一种编程模型,简单但足够强大,专门为并行处理大数据而设计。MapReduce的处理过程分为两个步骤:map和reduce。每个阶段的输入输出都是key-value的形式,key和value的类型可以自行指定。...
本文是Hadoop最佳实践系列第二篇,上一篇为《Hadoop管理员的十个最佳实践》。MapRuduce开发对于大多数程序员都会觉得略显复杂,运行一个WordCount(Hadoop中helloword程序)不仅要熟悉MapRuduce模型,还要了解Linux...
MapReduce详解。。