一、 本地环境运行:(也可以本地程序调用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目录到环境变量下。
流程图:
相关推荐
hadoop2.X新特性介绍
理清Hadoop1.x与Hadoop2.x区别,对比分析。 Hadoop是大数据惊世之作,必学的东西,需要知道: 它由哪些部分组成? 各自的作用是什么? 如果工作的?
Hadoop2.x HA环境搭建Hadoop2.x HA环境搭建Hadoop2.x HA环境搭建
hadoop2.x 介绍,及对比hadoop1.x的区别。hadoop2.x的新特性的详细介绍。
《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
这是一份详细,具体的Hadoop2.x的学习文档,包含了hadoop2.x中的hadfs文件系统,mr计算框架,yarn资源管理器,使用了图文的方式讲解
Hadoop 2.x Administration Cookbook 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
企业级Hadoop 2.x项目实战
hadoop 2.x 安装文档 hadoop 2.5配置
Hadoop是大数据技术中最重要的框架之一,是学习大数据必备的第一课,在Hadoop平台之上,可以更容易地开发和运行其他处理大规模数据的框架。尚硅谷Hadoop视频教程再次重磅升级!以企业实际生产环境为背景,增加了更...
hadoop2.x安装指南.
Hadoop3.x系统文档Hadoop3.x系统文档Hadoop3.x系统文档
在这篇文章中,我们将讨论Hadoop 2.x与Hadoop 3.x之间的比较。 Hadoop3版本中添加了哪些新功能,Hadoop3中兼容的Hadoop 2程序,Hadoop 2和Hadoop 3有什么区别? 二、Hadoop 2.x与Hadoop 3.x比较 本节将讲述Hadoop 2...
英文的,讲解hadoop1.x与hadoop2.x配置异同
Hadoop 2.x Administration Cookbook 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Apache Hadoop2.x 安装入门详解 PDF
Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop ...
本片文档是整合的Hadoop2.X 的安装与配置,包含三个节点,希望对有所帮助
大数据学习视频资料Linux基础教程 hadoop2.x spark storm flume
解决hadoop运行报错:Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 需要的winutils工具包,各个版本:2.6.x 2.7.x 2.8.x 3.0