`

Hadoop读书笔记(八)MapReduce 打成jar包demo

阅读更多

Hadoop读书笔记(一)Hadoop介绍http://blog.csdn.net/caicongyang/article/details/39898629

Hadoop读书笔记(二)HDFS的shell操作http://blog.csdn.net/caicongyang/article/details/41253927

Hadoop读书笔记(三)Java API操作HDFShttp://blog.csdn.net/caicongyang/article/details/41290955

Hadoop读书笔记(四)HDFS体系结构http://blog.csdn.net/caicongyang/article/details/41322649

Hadoop读书笔记(五)MapReduce统计单词demohttp://blog.csdn.net/caicongyang/article/details/41453579

Hadoop读书笔记(六)MapReduce自定义数据类型demohttp://blog.csdn.net/caicongyang/article/details/41490379

Hadoop读书笔记(七)MapReduce 0.x版本API使用demohttp://blog.csdn.net/caicongyang/article/details/41493325

0.demo说明

与上篇文章一样实现手机流量的统计,数据文件的数据格式相同...

1.代码改造

KpiApp.java

 

package cmd;

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

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
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.io.Writable;
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;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
/**
 * 
 * <p> 
 * Title: KpiApp.java 
 * Package mapReduce 
 * </p>
 * <p>
 * Description: 统计流量  (打包jar命令行运行) :extends Configured implements Tool
 * <p>
 * @author Tom.Cai
 * @created 2014-11-25 下午10:23:33 
 * @version V1.0 
 *
 */
public class KpiApp extends Configured implements Tool{

	public static void main(String[] args) throws Exception {
		ToolRunner.run(new KpiApp(), args);
	}

	@Override
	public int run(String[] arg0) throws Exception {
		String INPUT_PATH = arg0[0];
		String OUT_PATH = arg0[1];
		FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), new Configuration());
		Path outPath = new Path(OUT_PATH);
		if (fileSystem.exists(outPath)) {
			fileSystem.delete(outPath, true);
		}

		Job job = new Job(new Configuration(), KpiApp.class.getSimpleName());
		FileInputFormat.setInputPaths(job, INPUT_PATH);
		job.setInputFormatClass(TextInputFormat.class);

		job.setMapperClass(KpiMapper.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(KpiWite.class);

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

		job.setReducerClass(KpiReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(KpiWite.class);

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

		job.waitForCompletion(true);
		return 0;
	}
	
	
	static class KpiMapper extends Mapper<LongWritable, Text, Text, KpiWite> {
		@Override
		protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
			String[] splited = value.toString().split("\t");
			String num = splited[1];
			KpiWite kpi = new KpiWite(splited[6], splited[7], splited[8], splited[9]);
			context.write(new Text(num), kpi);
		}
	}

	static class KpiReducer extends Reducer<Text, KpiWite, Text, KpiWite> {
		@Override
		protected void reduce(Text key, Iterable<KpiWite> value, Context context) throws IOException, InterruptedException {
			long upPackNum = 0L;
			long downPackNum = 0L;
			long upPayLoad = 0L;
			long downPayLoad = 0L;
			for (KpiWite kpi : value) {
				upPackNum += kpi.upPackNum;
				downPackNum += kpi.downPackNum;
				upPayLoad += kpi.upPayLoad;
				downPayLoad += kpi.downPayLoad;
			}
			context.write(key, new KpiWite(String.valueOf(upPackNum), String.valueOf(downPackNum), String.valueOf(upPayLoad), String.valueOf(downPayLoad)));
		}
	}
}

class KpiWite implements Writable {
	long upPackNum;
	long downPackNum;
	long upPayLoad;
	long downPayLoad;

	public KpiWite() {
	}

	public KpiWite(String upPackNum, String downPackNum, String upPayLoad, String downPayLoad) {
		this.upPackNum = Long.parseLong(upPackNum);
		this.downPackNum = Long.parseLong(downPackNum);
		this.upPayLoad = Long.parseLong(upPayLoad);
		this.downPayLoad = Long.parseLong(downPayLoad);
	}

	@Override
	public void readFields(DataInput in) throws IOException {
		this.upPackNum = in.readLong();
		this.downPackNum = in.readLong();
		this.upPayLoad = in.readLong();
		this.downPayLoad = in.readLong();
	}

	@Override
	public void write(DataOutput out) throws IOException {
		out.writeLong(upPackNum);
		out.writeLong(downPackNum);
		out.writeLong(upPayLoad);
		out.writeLong(downPayLoad);
	}

}

 

2.打成jar

 

通过Eclipse的Export将上述的类打成kpi.jar

将jar包上传到Linux下通过 hadoop jar xxx.jar [parameter] [parameter]命令执行即可

例如:hadoop jar kpi.jarhdfs://192.168.80.100:9000/wlanhdfs://192.168.80.100:9000/wlan_out

即将上篇的代码完成改造可以在命令行下运行!

 

 

欢迎大家一起讨论学习!

有用的自己收!

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

 

 

 

 

 

分享到:
评论

相关推荐

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    基于Hadoop的分布式系统依赖的所有JAR包

    Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,这两个部分都需要一系列的JAR包来支持其正常运行。本资源集合了Maven、HDFS、MapReduce等相关所有JAR包及依赖,为构建基于Hadoop的分布式...

    hadoop-mapreduce-examples-2.7.1.jar

    hadoop-mapreduce-examples-2.7.1.jar

    hadoop1.1.2操作例子 包括hbase hive mapreduce相应的jar包

    这个压缩包文件包含的是Hadoop 1.1.2版本的操作示例,以及与之相关的HBase、Hive和MapReduce的jar包。这些工具是大数据处理生态系统中的核心组件,下面将分别详细介绍它们的功能和用法。 **Hadoop**: Hadoop是...

    Hadoop原理与技术MapReduce实验

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

    hadoop eclipse mapreduce 下开发所有需要用到的 JAR 包

    要开始在Eclipse中开发MapReduce项目,首先你需要安装以下关键的JAR包,这些包提供了Hadoop MapReduce框架的API和运行时环境: 1. **hadoop-core.jar**:这是Hadoop的主要库,包含了MapReduce的基本组件,如...

    hadoop jar包.rar

    这个"hadop jar包.rar"文件可能包含了Hadoop运行所需的各种库文件,如HDFS客户端、MapReduce客户端、Hadoop其他组件的jar包等,使得用户可以直接在本地或者集群上运行Hadoop相关程序,无需自行编译源码。用户在使用...

    hadoop-mapreduce-examples-2.6.5.jar

    hadoop-mapreduce-examples-2.6.5.jar 官方案例源码

    hadoop eclipse mapreduce下开发所有需要用到的JAR包

    当你的MapReduce程序完成开发并经过本地测试后,你可以使用Hadoop的命令行工具将其打包成JAR文件,然后提交到集群上执行。 总结来说,"hadoop eclipse mapreduce下开发所有需要用到的JAR包"涉及到的是Hadoop ...

    eclipse-linux软件包-包含mapreduce的jar包

    总的来说,"eclipse-linux软件包-包含mapreduce的jar包"是一个方便Linux用户进行大数据处理开发的工具集合,它结合了强大的Eclipse IDE和Hadoop的MapReduce框架,为开发者提供了高效、便捷的开发体验。通过熟悉...

    hadoop hbase 全jar包

    Hadoop的jar包通常包含Hadoop Common、Hadoop HDFS、Hadoop MapReduce等模块,它们提供了Hadoop的基本功能和接口。HBase的jar包则包含了HBase Server、HBase Client、Zookeeper等相关组件,使得开发者可以与HBase...

    hadoop 所用的jar包

    相关JAR包有`hadoop-mapreduce-client-*.jar`,它包含了MapReduce作业提交、任务执行所需的类库。 5. **Hadoop MRv1 (MapReduce v1)**:早期的MapReduce实现,现在已经逐渐被YARN上的MRv2(也称为YARN-based ...

    hadoop集群配置及mapreduce开发手册

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

    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 平台,使用 MapReduce 编程,统计NBA球员五项数据.zip

    为了运行这个 MapReduce 程序,我们需要编写 Java 代码,并将其打包成 JAR 文件。之后,我们可以通过 Hadoop 命令行工具提交作业,指定输入数据路径(NBA 数据文件所在的 HDFS 路径)和输出结果目录。 在实际应用中...

    hadoop的各种jar包

    本文将详细介绍如何在Eclipse中使用Hadoop的各种JAR包,包括HDFS、MapReduce、YARN、HTTPFS和KMS,以实现高效的数据操作。 首先,我们需要理解这些组件在Hadoop生态系统中的角色: 1. HDFS(Hadoop Distributed ...

    Hadoop集群配置及MapReduce开发手册

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

    Hadoop的jar包

    这些jar包是Hadoop生态系统的关键组成部分,它们提供了核心Hadoop的功能,包括分布式文件系统(HDFS)和MapReduce计算模型。 1. **Hadoop核心**:Hadoop的核心jar包包含HDFS和YARN(Yet Another Resource ...

    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源代码分析(包org.apache.hadoop.mapreduce)

    包org.apache.hadoop.mapreduce的Hadoop源代码分析

Global site tag (gtag.js) - Google Analytics