hadoop2x WordCount MapReduce

package com.jhl.haoop.examples;

import java.io.IOException;

import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

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.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

// map区域

public static class TokenizerMapper extends

Mapper<LongWritable, Text, Text, IntWritable> {

private final static IntWritable one = new IntWritable(1);//每个单词统计一次

private Text word = new Text();

public void map(LongWritable key, Text value, Context context)

throws IOException, InterruptedException {

//进行分割 [空格 制表符 \t 换行 \n 回车符\r \f]

// public StringTokenizer(String str) {

//this(str, " \t\n\r\f", false);

// }

StringTokenizer itr = new StringTokenizer(value.toString());//获取每行数据的值value.toString()

while (itr.hasMoreTokens()) {

word.set(itr.nextToken());//设置map输出的key值

context.write(word, one);//上下文输出map的key和value值

}

}

}

//reduce 区域

public static class IntSumReducer extends

Reducer<Text, IntWritable, Text, IntWritable> {

private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable<IntWritable> values,

Context context) throws IOException, InterruptedException {

int sum = 0;

for (IntWritable val : values) {//循环遍历Iterable

sum += val.get();//累加

}

result.set(sum);//设置总次数

context.write(key, result);

}

}

//client区域

public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();//获取配置信息

//GenericOptionsParser 用来常用的Hadoop命令选项,并根据需要,为Configuration对象设置相应的取值。

String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

if (otherArgs.length != 2) {

System.err.println("Usage: wordcount  ");

System.exit(2);

}

Job job = new Job(conf, "WordCount");//创建Job、设置Job配置和名称

job.setJarByClass(WordCount.class);//设置Job 运行的类

job.setMapperClass(TokenizerMapper.class);//设置Mapper类和Reducer类

job.setCombinerClass(IntSumReducer.class);

job.setReducerClass(IntSumReducer.class);

FileInputFormat.addInputPath(job, new Path(otherArgs[0]));//设置输入文件的路径和输出文件的路径

FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

job.setOutputKeyClass(Text.class);//设置输出结果的key和value类型

job.setOutputValueClass(IntWritable.class);

boolean isSuccess = job.waitForCompletion(true);//提交Job,等待运行结果,并在客户端显示运行信息

System.exit(isSuccess ? 0 : 1);//结束程序

}

}

时间: 2024-10-06 00:35:02

hadoop2x WordCount MapReduce的相关文章

Wordcount -- MapReduce example -- Reducer

Reducer receives (key, values) pairs and aggregate values to a desired format, then write produced (key, value) pairs back into HDFS. Reducer Class Prototype: Reducer<Text, IntWritable, Text, IntWritable> // Text:: INPUT_KEY // IntWritable:: INPUT_V

hadoop2.2.0的WordCount程序

package com.my.mapreduce.wordcount; import java.io.IOException; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.

MapReduce原理与设计思想

转载自: http://blog.jobbole.com/80619/ 简单解释 MapReduce 算法 一个有趣的例子 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃? MapReduce方法则是: 给在座的所有玩家中分配这摞牌 让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你 你把所有玩家告诉你的数字加起来,得到最后的结论 拆分 MapReduce合并了两种经典函数: 映射(Mapping)对集合里的每个目标应用同一个操作.即,如果你想把表单里每个单

一文读懂MapReduce 附流量解析实例

1.MapReduce是什么 Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集.这个定义里面有着这些关键词, 一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集. 2 MapReduce做什么 MapReduce擅长处理大数据,它为什么具有这种能力呢?这可由MapReduce的设计思想发觉.MapReduce的思想就是“

基于朴素贝叶斯分类器的文本分类

实验要求 题目要求 1.用MapReduce算法实现贝叶斯分类器的训练过程,并输出训练模型: 2.用输出的模型对测试集文档进行分类测试.测试过程可基于单机Java程序,也可以是MapReduce程序.输出每个测试文档的分类结果: 3.利用测试文档的真实类别,计算分类模型的Precision,Recall和F1值. 2.实验环境 实验平台:VMware Workstation10 虚拟机系统:Suse11 集群环境:主机名master  ip:192.168.226.129 从机名slave1 

一、Hadoop 2.x 分布式安装部署

一.Hadoop 2.x 分布式安装部署 1.分布式部署hadoop 2.x 1.1克隆虚拟机并完成相关配置 1.1.1克隆虚拟机 点击原有虚拟机–>管理–>克隆–>下一步–>创建完成克隆–>写入名称hadoop-senior02–>选择目录 1.1.2配置修改 1)启动克隆虚拟机(内存配置:01:2G;02:1.5G;03:1.5G) 2)修改主机名:改两处 3)修改网卡名称 编辑 /etc/udev/rules.d/70-persistent-net.rules -

FS Shell命令手册

1.       FS Shell 1.1     简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI路径作为参数.URI格式是scheme://authority/path.对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file.其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme.一个HDFS文件或目录比如/parent/chi

Hadoop2.x裸机到HA完整安装实录

注:未完待续--持续更新中-- 目录 第一步. 先在配置Vmware NAT网络... 3 一. Vmware网络模式介绍... 3 二. NAT模式配置... 3 第二步. 安装Linux操作系统... 5 三. Vmware上安装Linux系统... 5 四. 设置网络... 10 五. 修改Hostname. 14 六. 配置Host. 14 七. 关闭防火墙... 14 八. 关闭selinux. 14 第三步. 安装JDK.. 15 九. 安装Java JDK.. 15 第四步. Ha

Apache Hadoop2.x 边安装边入门

完整PDF版本:<Apache Hadoop2.x边安装边入门> 目录 第一部分:Linux环境安装 第一步.配置Vmware NAT网络 一. Vmware网络模式介绍 二. NAT模式配置 第二步.安装Linux操作系统 三. Vmware上安装Linux系统 四.设置网络 五.修改Hostname 六.配置Host 七.关闭防火墙 八.关闭selinux 第三步.安装JDK 九.安装Java JDK 第二部分:Hadoop本地模式安装 第四步. Hadoop部署模式 第五步.本地模式部署