`

hadoop 2.x wordcount练习

 
阅读更多

 

 

 

一、 本地环境运行:(也可以本地程序调用hdfs的数据,但必须指定运行的用户,或者将分布式数据权限改成所有人都可以读写,否则权限异常elipse中可以设置-DHADOOP_USER_NAME=hadoop )

 程序不在集群中运行。(数据可以是本地地址 也可以是hdfs地址(hdfs://cloud:9000/wc/wordcount/input))

1 设置环境

    HADOOP_HOME E:\source_src\hadoop-2.5.2

    path中添加 ;%HADOOP_HOME%\bin;

 2 winutils工具包添加到hadoop的bin目录中(见附件)

 

二、   elipse 运行mapreduce程序在yarn的集群中,方便断点调试 ,最好在linux的elipse运行,

  window上运行可能会出现兼容问题(不好弄)

  1 必须指定程序在yarn中运行(拷贝mapred-site.xml 和yarn-site.xml到src下面,如果不添加这些配置则程序是运行在本地,不会提交集群)

     也可以conf.set来手动设置

  2 指定运行的jar包 conf.set(mapreduce.job.jar,"winjob.jar")

     jar包是在elipse中打好放到src下面的

 三、直接在hadoop中执行jar包 

 

    注意:map和reduce都有 setup 和cleanup方法,在执行前和执行后都可以执行一些方法。

 

1 WCMapper 

  

import java.io.IOException;

import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class WCMapper extends Mapper<LongWritable, Text , Text, LongWritable >{

	@Override
	protected void map(LongWritable key, Text value, Context context)
			throws IOException, InterruptedException {
		 //key 是这行数据的偏移量  ,value 这一行的数据
		String line = value.toString();
		String[] words  = StringUtils.split(line, " ");
		for(String word :words ){
			context.write(new Text(word) , new LongWritable(1) );; 
		}
		 
	}
}

 2 WCReducer 

 

import java.io.IOException;

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

public class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable>{
	
	@Override
	protected void reduce(Text key, Iterable<LongWritable> values,
			 Context context)
			throws IOException, InterruptedException {
	 
		long count 	= 0 ;
		for(LongWritable value : values ){
			count = count+value.get() ; 
		}
		context.write(new Text(key),new LongWritable( count) );
	}

}

 

 3  主类 job

    

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.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 
public class WCRunner {

	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		
		Configuration conf = new Configuration() ; 
		Job job = Job.getInstance(conf) ;
		
		job.setJarByClass(WCRunner.class );
		
		job.setMapperClass( WCMapper.class );
		job.setReducerClass( WCReducer.class );
		
		job.setOutputValueClass( Text.class );
		job.setOutputValueClass(LongWritable.class );
		
		job.setMapOutputKeyClass( Text.class);
		job.setMapOutputValueClass( LongWritable.class );
		//默认用分布式的环境中运行
		FileInputFormat.setInputPaths(job,  "/wc/srcdata");
		FileOutputFormat.setOutputPath(job,  new Path("/wc/output"));
//              直接指定分布式环境上拿去数据,用window来运行程序方便断点调试, 但必须指定运行的用户(-DHADOOP_USER_NAME=hadoop ),否则权限异常
//		FileInputFormat.setInputPaths(job,  "hdfs://cloud1:9000/wc/srcdata");
//		FileOutputFormat.setOutputPath(job,  new Path("hdfs://cloud1:9000/wc/output"));
                //本地环境运行,输入和输出用本地路径即可,配置HADOOP_HOME环境变量并且添加winutils工具包(拷贝到hadoop的bin目录中)
//		FileInputFormat.setInputPaths(job,  "D:\\wordcount\\wordcount.txt");
//		FileOutputFormat.setOutputPath(job,  new Path("D:\\wordcount\\output"));
		job.waitForCompletion(true) ; 
		
	}
}

 4 运行 hadoop jar wordcount.jar  ,如果打包的时候没有设置主类则需要写主类全名,否则不用。

 

 注意:mapreduce程序也可以在windows下运行,但问题比较多,还需要winutils的工具包,需要设置hadoop的bin目录到环境变量下。

 流程图:

 

  • 大小: 55.6 KB
分享到:
评论

相关推荐

    hadoop1.x与hadoop2.x配置异同

    在探讨Hadoop1.x与Hadoop2.x配置的异同之前,我们首先简要回顾一下GridGain In-Memory HDFS的特性,这是基于行业首个高性能双模式内存文件系统,完全兼容HDFS。GridGain FileSystem(GGFS)作为Hadoop HDFS的即插即...

    理清Hadoop1.x与Hadoop2.x区别

    理清Hadoop1.x与Hadoop2.x区别,对比分析。 Hadoop是大数据惊世之作,必学的东西,需要知道: 它由哪些部分组成? 各自的作用是什么? 如果工作的?

    Hadoop 2.x与3.x 22点比较,Hadoop 3.x比2.x的改进

    在这篇文章中,我们将讨论Hadoop 2.x与Hadoop 3.x之间的比较。 Hadoop3版本中添加了哪些新功能,Hadoop3中兼容的Hadoop 2程序,Hadoop 2和Hadoop 3有什么区别? 二、Hadoop 2.x与Hadoop 3.x比较 本节将讲述Hadoop 2...

    Hadoop 2.x

    **Hadoop 2.x 入门指南** Hadoop 2.x 是一个开源的分布式计算框架,它是Apache Hadoop项目的最新版本,旨在提供高效、可扩展的数据处理能力。这个版本引入了若干关键改进,使得Hadoop更适合大数据处理的需求,提高...

    Hadoop3.x系统文档

    文档中提到,与Hadoop 2.x相比,3.x版本在集群安装和配置方面基本变化不大,但具体到新版本的特性以及对默认端口的改变上,还是存在一些需要特别注意的地方。 #### 1. Hadoop 3.x集群安装知识 在集群安装知识部分,...

    hadoop3.x盘地址及官方其他版本下载地址.rar

    Hadoop 3.x系列是Hadoop的主要版本之一,相比之前的Hadoop 2.x,它引入了诸多改进和优化,提升了整体的存储性能和计算效率。在本文中,我们将深入探讨Hadoop 3.x的关键特性、优化之处以及如何获取和安装这个版本。 ...

    hadoop2.x 介绍

    hadoop2.x 介绍,及对比hadoop1.x的区别。hadoop2.x的新特性的详细介绍。

    Hadoop 2.X HDFS源码剖析-高清-完整目录-2016年3月

    Hadoop 2.X HDFS源码剖析-高清-完整目录-2016年3月,分享给所有需要的人!

    win32win64hadoop2.7.x.hadoop.dll.bin

    标题“win32win64hadoop2.7.x.hadoop.dll.bin”暗示了这是一个与Hadoop 2.7.x版本相关的二进制文件,适用于32位和64位的Windows操作系统。描述中提到,这些文件是用于在Windows环境下部署Hadoop时必需的组件,并且在...

    初识Hadoop 2.x.pdf

    ### Hadoop 2.x 入门知识点概览 #### 一、大数据应用发展前景 随着信息技术的飞速发展,数据量呈爆炸式增长,这不仅带来了挑战也孕育着新的机遇。根据2015年中国(深圳)IT领袖峰会的讨论,大数据正逐渐成为推动...

    Hadoop 2.x Administration Cookbook epub

    Hadoop 2.x Administration Cookbook 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    大数据技术之Hadoop3.x-视频教程网盘链接提取码下载 .txt

    Hadoop是大数据技术中最重要的框架之一,是学习大数据必备的第一课,在Hadoop平台之上,可以更容易地开发和运行其他处理大规模数据的框架。尚硅谷Hadoop视频教程再次重磅升级!以企业实际生产环境为背景,增加了更...

    Apache Hadoop2.x 安装入门详解 PDF

    Hadoop 2.x 是该框架的一个重要版本,引入了许多改进和优化,使得它更加适合企业级的大数据处理需求。本教程将详细讲解Apache Hadoop 2.x的安装过程,帮助初学者快速入门。 一、Hadoop的体系结构 Hadoop的核心由两...

    spark-3.3.3-bin-hadoop3.tgz

    这个版本特别针对Hadoop 3.x进行了优化,使得它能够充分利用Hadoop生态系统中的新特性和性能改进。在本文中,我们将深入探讨Spark 3.3.3与Hadoop 3.x的集成,以及它们在大数据处理领域的关键知识点。 首先,Spark的...

    hadoop2.x安装

    hadoop2.x安装指南.

    Hadoop2.X集群安装与配置

    &lt;name&gt;hadoop.tmp.dir &lt;value&gt;/app/hadoop/tmp ``` 其中,`master`是主节点的主机名,`9000`是NameNode的端口。 2. 修改`etc/hadoop/hdfs-site.xml`配置文件,设定副本数量和其他HDFS参数: ```xml &lt;name&gt;dfs....

    Hadoop 2.x单节点部署学习。

    本教程将深入探讨如何在单节点环境中部署Hadoop 2.x版本,这对于初学者理解和测试Hadoop功能非常有帮助。我们将关注四个关键配置文件——core-site.xml、yarn-site.xml、hdfs-site.xml和mapred-site.xml,它们是...

    hadoop3.x带snappy(可用于windows本地开发)

    【标题】"hadoop3.x带snappy(可用于windows本地开发)"所涉及的知识点主要集中在Hadoop 3.0版本以及Snappy压缩算法在Windows环境下的应用。Hadoop是一个开源的大数据处理框架,由Apache软件基金会开发,它使得在...

    hadoop3.x笔记.docx

    Hadoop 3.x 笔记 Hadoop 是一个基于分布式存储的大数据处理框架,本文档将详细介绍 Hadoop 3.x 的配置和底层原理,从零搭建集群以及解决遇到的问题,通过图形化的方式更好地理解 Hadoop 的作用。 一、HDFS 组成 ...

Global site tag (gtag.js) - Google Analytics