关闭

大数据 (十)Hadoop-第一次使用eclipse&java&hadoop分析简单数据

2319人阅读 评论(1) 收藏 举报
分类:

源码:http://download.csdn.net/detail/jintaohahahaha/9919467

一、打开eclipse

二、新建java项目mapreducer

三、项目下新建lib文件夹,导入hadoop相关jar,jar在源码中有

四、项目下建包,写如下三个类

1、WorldCountMapper.java

package com.zjt.mapreducer.data;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.util.StringUtils;

/**
 * 执行统计单词数量的map程序
 * @author ZhangJintao
 * 		Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
 * 			KEYIN ----   输入数据的键
 * 			VALUEIN ----  输入数据的值
 * 			KEYOUT ---- 输出数据的键
 * 			VALUEOUT ----  输出数据的值
 */
public class WorldCounteMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
	@Override
	/**
	 * 父类的map方法,循环调用
	 * 从split碎片段中每行调用一次
	 * 把该行所在下标为key,该行的值为value
	 * 【功能:将单词以map输出】
	 */
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
			throws IOException, InterruptedException {
		String[] words = StringUtils.split(value.toString(), ' ');
		for (String w : words) {
			context.write(new Text(w), new IntWritable(1));
		}
	}
}
2、WorldCountReducer.java

package com.zjt.mapreducer.data;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class WorldCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
	@Override
	/**
	 * 循环调用
	 * 洗牌完毕分好组后,每组调用一次
	 * 【功能:计算单词出现次数】
	 */
	protected void reduce(Text arg0, Iterable<IntWritable> arg1,
			Reducer<Text, IntWritable, Text, IntWritable>.Context arg2) throws IOException, InterruptedException {
		int sum = 0 ;
		for(IntWritable i : arg1){
			sum += i.get();
		}
		arg2.write(arg0, new IntWritable(sum));
	}
}
3、RunJob.java

package com.zjt.mapreducer.data;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
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;

/**
 * 执行方法
 * @author ZhangJintao
 */
public class RunJob {
	public static void main(String[] args) {
		Configuration config = new Configuration();
		try {
			FileSystem fs = FileSystem.get(config);
			
			Job job = Job.getInstance();
			//执行mapreducer任务
			job.setJarByClass(RunJob.class);
			job.setJobName("data");
			
			job.setMapperClass(WorldCounteMapper.class);
			job.setReducerClass(WorldCountReducer.class);
			
			job.setMapOutputKeyClass(Text.class);
			job.setMapOutputValueClass(IntWritable.class);
			
			FileInputFormat.addInputPath(job, new Path("/usr/input/"));
			Path outpath  = new Path("/usr/input/data");
			if (fs.exists(outpath)) {
				fs.delete(outpath, true);
			}
			FileOutputFormat.setOutputPath(job, outpath);
			
			boolean f = job.waitForCompletion(true);
			
			if (f) {
				System.out.println("JOB 执行成功");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
五、打jar包

六、上传测试数据

       

        其中data.txt内容如下

hadoop hello world
hello hadoop
hbase zookeeper

六、运行程序

        将我们打的jar上传至任何一台节点主机,远程登录节点主机,进入jar包所在目录,执行如下命令

    hadoop jar wc.jar com.zjt.mapreducer.data.RunJob
        执行后,我们可以看到控制台会提示信息。

     

        我们进入网页http://192.168.1.201:8088/cluster/apps后点击 Applications可以看到下图所示

  
       执行完毕之后,在此进入eclipse

       

        刷新后会发现多了如下几个文件夹和文件

     

        通过结果文件可知,她帮我们统计出了data.txt中hadoop单词有两个、hbase有一个、hello有两个、world有一个、zookeeper有一个

0
0
查看评论
发表评论
* 以上用户言论只代表其个人钱柜娱乐开户,不代表CSDN网站的钱柜娱乐开户或立场

使用Hadoop分析数据——简单案例java语言编程之MaxTemperature

为了充分发挥Hadoop提供的并行处理优势,我们需要将查询表示成MapReduce作业。经过一些本地的小规模测试,我们将能够在集群设备上运行Hadoop。   Map阶段和reduce阶段    ...
  • uniquewonderq
  • uniquewonderq
  • 2016-02-04 16:18
  • 3773

Hadoop大数据平台入门——第一个小程序WordCount

首先我们需要安装Hadoop,并对Hadoop进行配置。这里我们就不赘述了,详情看这篇博客:Hadoop安装配置 值得注意的是,配置的时候,需要给Hadoop权限才能正确执行。最简单的办法就是讲ha...
  • a60782885
  • a60782885
  • 2017-05-07 10:42
  • 3084

大数据平台搭建(hadoop+spark)

大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master ...
  • bailu66
  • bailu66
  • 2016-12-24 23:06
  • 2404

Hadoop (十)Hadoop-第一次使用eclipse&amp;java&amp;hadoop分析简单数据

  • 2017-08-03 00:44
  • 29.36MB
  • 下载

大数据学习笔记——hadoop1.2.1 eclipse_plugin编译、安装及使用

hadoop自带了eclipse的插件,但是其jar包需要我们自己对其提供的源码进行编译,在hadoop的src/contrib/目录下可以看到eclipse-plugin文件夹,此中包含的即是我们所...
  • fengshuiyue
  • fengshuiyue
  • 2016-03-15 14:22
  • 1865

Hadoop 信息集成平台,让大数据分析更简单!

就本身而言,Hadoop 不是很有用的东西,原因是它需要编写大量复杂和定制的程序代码,难以治理,也没有数据质量概念和数据治理可谈了。企业用户都忙于去研究如何解决使用 Hadoop 所碰到的问题,主要是...
  • chenjunji123456
  • chenjunji123456
  • 2016-09-08 10:39
  • 285

Java开发2.0:用Hadoop MapReduce进行大数据分析

Google在2001年发布图像搜索功能时,只有2.5亿索引图像,不到10年,这个巨大的搜索功能已经可以检索超过100亿个图像了,每分钟有 35小时的内容上传到YouTube。据称,Twitter每天...
  • feihu19851111
  • feihu19851111
  • 2012-07-04 21:21
  • 2127

Java 开发 2.0: 用 Hadoop MapReduce 进行大数据分析

Java 开发 2.0: 用 Hadoop MapReduce 进行大数据分析 成堆的数据如何变成信息金矿 Andrew Glover, 作家和开发人员, Beacon50 ...
  • tswisdom
  • tswisdom
  • 2012-09-17 09:45
  • 2103

大数据 hadoop spark 安卓 java web 高级教程

  • 2016-04-29 16:38
  • 1KB
  • 下载

老王大数据教程(二) Hadoop eclipse 开发

Hadoop eclipse 开发     (一)需要相关文件   l Eclipse 插件hadoop-eclipse-plugin-2.7.3.jarl Hadoop 安装包 hadoop-2...
  • wanglitaow
  • wanglitaow
  • 2017-05-10 16:10
  • 168
    个人资料
    • 访问:51897次
    • 积分:1281
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:14篇
    • 译文:2篇
    • 评论:1条