马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动

马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作

马士兵hadoop第三课:java开发hdfs

马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解

马士兵hadoop第五课:java开发Map/Reduce

配置系统环境变量HADOOP_HOME,指向hadoop安装目录(如果你不想招惹不必要的麻烦,不要在目录中包含空格或者中文字符)
把HADOOP_HOME/bin加到PATH环境变量(非必要,只是为了方便)
如果是在windows下开发,需要添加windows的库文件
把盘中共享的bin目录覆盖HADOOP_HOME/bin
如果还是不行,把其中的hadoop.dll复制到c:\windows\system32目录下,可能需要重启机器
建立新项目,引入hadoop需要的jar文件

代码WordMapper:

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;
public class WordMapper extends Mapper<LongWritable,Text, Text, IntWritable> {

@Override</br>
</span><span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> map(LongWritable key, Text value, Mapper&lt;LongWritable, Text, Text, IntWritable&gt;<span style="color: #000000">.Context context)</br>
</span><span style="color: #0000ff">throws</span><span style="color: #000000"> IOException, InterruptedException {</br>
String line </span>=<span style="color: #000000"> value.toString();</br>
String[] words </span>= line.split(" "<span style="color: #000000">);</br>
</span><span style="color: #0000ff">for</span><span style="color: #000000">(String word : words) {</br>
context.write(</span><span style="color: #0000ff">new</span> Text(word), <span style="color: #0000ff">new</span> IntWritable(1<span style="color: #000000">));
}</br>
}</br>

}

代码WordReducer:

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.Reducer;
public class WordReducer extends Reducer<Text, IntWritable, Text, LongWritable> {
@Override</br>
</span><span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> reduce(Text key, Iterable&lt;IntWritable&gt;<span style="color: #000000"> values,</br>
Reducer</span>&lt;Text, IntWritable, Text, LongWritable&gt;.Context context) <span style="color: #0000ff">throws</span><span style="color: #000000"> IOException, InterruptedException {</br>
</span><span style="color: #0000ff">long</span> count = 0<span style="color: #000000">;</br>
</span><span style="color: #0000ff">for</span><span style="color: #000000">(IntWritable v : values) {</br>
count </span>+=<span style="color: #000000"> v.get();</br>
}</br>
context.write(key, </span><span style="color: #0000ff">new</span><span style="color: #000000"> LongWritable(count));</br>
}</br>

}

代码Test:

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.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class Test {


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


Configuration conf = new Configuration();

    Job job </span>=<span style="color: #000000"> Job.getInstance(conf);</br></br>

    job.setMapperClass(WordMapper.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br>
job.setReducerClass(WordReducer.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br>
job.setMapOutputKeyClass(Text.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br>
job.setMapOutputValueClass(IntWritable.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br>
job.setOutputKeyClass(Text.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br>
job.setOutputValueClass(LongWritable.</span><span style="color: #0000ff">class</span><span style="color: #000000">);</br></br> FileInputFormat.setInputPaths(job, </span>"c:/bigdata/hadoop/test/test.txt"<span style="color: #000000">);</br>
FileOutputFormat.setOutputPath(job, </span><span style="color: #0000ff">new</span> Path("c:/bigdata/hadoop/test/out/"<span style="color: #000000">));</br></br> job.waitForCompletion(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</br>
}</br>

}

把hdfs中的文件拉到本地来运行

FileInputFormat.setInputPaths(job, "hdfs://master:9000/wcinput/");
FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000/wcoutput2/"));

注意这里是把hdfs文件拉到本地来运行,如果观察输出的话会观察到jobID带有local字样
同时这样的运行方式是不需要yarn的(自己停掉yarn服务做实验)
在远程服务器执行

conf.set("fs.defaultFS", "hdfs://master:9000/");

conf.set("mapreduce.job.jar", "target/wc.jar");


conf.set("mapreduce.framework.name", "yarn");


conf.set("yarn.resourcemanager.hostname", "master");


conf.set("mapreduce.app-submission.cross-platform", "true");
FileInputFormat.setInputPaths(job, "/wcinput/");


FileOutputFormat.setOutputPath(job, new Path("/wcoutput3/"));

如果遇到权限问题,配置执行时的虚拟机参数-DHADOOP_USER_NAME=root
也可以将hadoop的四个配置文件拿下来放到src根目录下,就不需要进行手工配置了,默认到classpath目录寻找
或者将配置文件放到别的地方,使用conf.addResource(.class.getClassLoader.getResourceAsStream)方式添加,不推荐使用绝对路径的方式

原文地址:http://www.cnblogs.com/yucongblog/p/6650872.html

马士兵hadoop第五课:java开发Map/Reduce(转)的更多相关文章

  1. 马士兵hadoop第五课:java开发Map/Reduce

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  2. 马士兵hadoop第三课:java开发hdfs

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  3. 马士兵hadoop第三课:java开发hdfs(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  4. 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  5. 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  6. 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  7. 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  8. 马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  9. hadoop学习WordCount+Block+Split+Shuffle+Map+Reduce技术详解

    转自:http://blog.csdn.net/yczws1/article/details/21899007 纯干货:通过WourdCount程序示例:详细讲解MapReduce之Block+Spl ...

随机推荐

  1. bootstrap 超大屏幕(Jumbotron)

    本章将讲解Bootstrap的一个特性:超大屏幕(Jumbonron),顾名思义该组件可以增加标题的大小,并为登录页面的内容添加更多的外边矩. 使用超大屏幕的步骤如下: 1.创建一个还有class.j ...

  2. 标签input的value属性和placeholderde 区别

    placeholder 顾名思义是一个占位符 在你的value为空的时候他才会显示出来,但是他本身并不是value,也不会被表单提交.

  3. Objective-C实现一个简单的栈

    栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出 ...

  4. [bzoj]3436 小K的农场

    [题目描述] 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的 ...

  5. Windows10 关闭自动更新

    win+R调出运行窗口: 输入services.msc,查找 跳出服务窗口,点击windows update设置禁用即可 Windows Update Medic Service没办法禁用,需要采用其 ...

  6. HDU 2460 Network 边双连通分量 缩点

    题意: 给出一个无向连通图,有\(m\)次操作,每次在\(u, v\)之间加一条边,并输出此时图中桥的个数. 分析: 先找出边双连通分量然后缩点得到一棵树,树上的每条边都输原图中的桥,因此此时桥的个数 ...

  7. Win磁盘MBR转换为GUID

    title: Win磁盘MBR转换为GUID date: 2018-09-02 11:52:32 updated: tags: [windows,记录,折腾] description: keyword ...

  8. [转] Vuex入门(2)—— state,mapState,...mapState对象展开符详解

    1.state  state是什么? 定义:state(vuex) ≍ data (vue) vuex的state和vue的data有很多相似之处,都是用于存储一些数据,或者说状态值.这些值都将被挂载 ...

  9. 如何从Maven中央存储库下载?

    根据 Apache Maven说明: 下载时由项目的 pom.xml 文件的依赖来决定,目前不在本地存储库触发(当中央存储库包含了一个更新).默认情况下,Maven将从中央存储库下载. 在Maven中 ...

  10. 通用的高度可扩展的Excel导入实现(附Demo)

    Demo源码 背景 通过程序将excel导入到数据库中是一项非常常见的功能.通常的做法是:先将excel转成DataTable,然后将DataTable转换成List<T>,最终通过Lis ...