通过之前的操作,

http://www.cnblogs.com/wenbronk/p/6636926.html

http://www.cnblogs.com/wenbronk/p/6659481.html

hadoop-HA的集群已经搭建完成了, 需要写个小程序来认识下hadoop了

统计文本文件中, 每个单词出现的次数

1, Eclipse下新建Java-project

2, 新建lib文件, 导入jar包, 并buildpath

hadoop-2.5.1\share\hadoop\common  所有jar,
hadoop-2.5.1\share\hadoop\common\lib  所有jar,hadoop-2.5.1\share\hadoop\hdfs  所有jar
hadoop-2.5.1\share\hadoop\mapreduce  所有jar
hadoop-2.5.1\share\hadoop\yarn  所有jar

3, Mapper类: WordCountMapper.java

package com.wenbronk.mapreduce;import java.io.IOException;import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;/*** 测试mapreduce, 计算单词出现的次数* @author wenbronk* KEYIN: split的键, 行坐在的下标* VALUEIN: split的值, 行值* KEYOUT: 需求, 输出给reduce* VALUEOUT: 需求, 输出给reduce*/
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {/*** 重写map方法, 循环调用* 从split中读取一行调用一次, 以行所在下标为key, 行内容为value*/@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)throws IOException, InterruptedException {// text 转string, toString(), 使用空格分隔为单词数组String[] words = StringUtils.split(value.toString(), ' ');for (String word : words) {// 键值对输出, 输出给reducecontext.write(new Text(word), new IntWritable(1));}}}

4, Reduce类, WordCountReduce.java

package com.wenbronk.mapreduce;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;/*** shuffling 后传给 reduce* @author wenbronk* KEYIN: mapper的输出* VALUEIN: mapper的输出*/
public class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable>{/*** 循环调用* 每组调用一次, key相同, value可能多个, 使用迭代器*/@Overrideprotected void reduce(Text arg0, Iterable<IntWritable> arg1,Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {// 对值进行累加int sum = 0;// 使用迭代器for (IntWritable value : arg1) {sum += value.get();}// 使用context输出context.write(arg0 , new IntWritable(sum));}}

5, 然后是具体的执行类: RunMapReduce.java

package com.wenbronk.mapreduce;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;/*** 执行mapreduce* 统计单词出新的次数* @author wenbr**/
public class RunMapReduce {public static void main(String[] args) throws Exception {// 初始化时加载src或classpath下所有的hadoop配置文件Configuration configuration = new Configuration();// 得到执行的任务Job job = Job.getInstance(config);// 入口类job.setJarByClass(RunMapReduce.class);// job名字job.setJobName("wordCount");// job执行是map执行的类job.setMapperClass(WordCountMapper.class);// job执行的reduce类job.setReducerClass(WordCountReduce.class);// job输出的键类型job.setMapOutputKeyClass(Text.class);// job输出的value类型job.setMapOutputValueClass(IntWritable.class);//**** 使用插件上传data.txt到hdfs/root/usr/data.txt// 使用文件FileInputFormat.addInputPath(job, new Path("/root/usr/"));// 使用一个不存在的目录进行Path path = new Path("/root/usr/output");// 如果存在删除FileSystem fs = FileSystem.get(configuration);if (fs.exists(path)) {fs.delete(path, true);}// 输出
        FileOutputFormat.setOutputPath(job, path);boolean forCompletion = job.waitForCompletion(true);if (forCompletion) {System.out.println("success");}}}

所有的类编写好了, 接下来是上传文件

6, 使用eclipse插件上传data.txt到hadoop目录 /usr/data.txt

我是用的插件为: 

7, 运行

这儿使用直接发布到服务器运行的方式

eclipse打包项目成jar包(只需要源码即可), 然后上传到服务器目录下, 使用hadoop命令执行
格式: hadoop jar jar路径 类全限定名

hadoop jar wc.jar com.wenbronk.mapreduce.RunMapReduce

之后在hadoop的目录下就可以看到统计后输出的文件了

13-hadoop-入门程序相关推荐

  1. hadoop入门程序:词频统计

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_42437577/article/ ...

  2. [学习笔记]黑马程序员-Hadoop入门视频教程

    文章目录 参考资料 第一章:大数据导论与Linux基础(p1-p17) 1.1 大数据导论 1.1.1 企业数据分析方向 1.1.2 数据分析基本流程步骤 明确分析的目的和思路 数据收集 数据处理 数 ...

  3. 大数据与Hadoop有什么关系?大数据Hadoop入门简介

    学习着数据科学与大数据技术专业(简称大数据)的我们,对于"大数据"这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是--Hadoop 那Hadoop与 ...

  4. 大数据平台hadoop运维之hadoop入门-高俊峰-专题视频课程

    大数据平台hadoop运维之hadoop入门-5245人已学习 课程介绍         主要介绍hadoop生态圈的常用软件和基础知识,可使学员迅速了解hadoop运维的基础知识,并迅速掌握hado ...

  5. SpringMVC学习(一)———— springmvc框架原理分析和简单入门程序

    一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交 ...

  6. hadoop调用python算法_使用Python实现Hadoop MapReduce程序

    根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...

  7. 使用Python实现Hadoop MapReduce程序

    根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...

  8. hadoop的python框架指南_Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)...

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79056120 一.环境准备想了解如何使用原生Python编写MapReduce程序 ...

  9. Remoting系列(二)----建立第一个入门程序

    http://www.cnblogs.com/Ring1981/archive/2006/07/23/455043.aspx Remoting系列(二)----建立第一个入门程序 下面的Remotin ...

  10. 01-MyBatis入门程序

    MyBatis入门程序 目录 1. 下载 Mybatis 核心包 2. 创建工程,引入 MyBatis 核心包及依赖包 3. 创建 customer 表,建立与表对应的 domain 使用 lombo ...

最新文章

  1. 并查集专题练习:好朋友(未完待续)
  2. HTML 5 input type 属性
  3. 多线程:线程同步的几种方式
  4. C# 每月第一天和最后一天
  5. CSS相邻兄弟选择器
  6. 有效前沿—让你的投资收益最大化
  7. 我的世界服务器物品id错误,我的世界错误代码,怎么弄
  8. asp.net mvc3.0第一个程序helloworld开发图解
  9. 去年购房者平均年龄为29.5岁 80后家庭人均居住面积最小
  10. oracle 切割字符串加引号_oracle存储过程中单引号及字符串拼接处理
  11. Python+sklearn训练结果保存与加载(以垃圾邮件分类为例)
  12. SAP License:供应链管理和ERP的关系?
  13. 中国内鼻扩张器市场趋势报告、技术动态创新及市场预测
  14. nextpolish安装_希望组自主三代组装软件NextDenovo最新版本全球学术开源!
  15. Android下基于UVC的UsbCam的开发
  16. Python怎么安装PHP,php中ThinkPHP的下载和安装
  17. 给未来写封信app服务器维护中,给未来写封信app
  18. adc0808模数转换实验报告_模数转换实验报告
  19. 怎么用python画房子_python绘图作业:使用pygame库画房子
  20. 怎么测试视频是哪个软件拍的,李子柒的视频是用什么设备拍摄的,又是用什么软件处理的?...

热门文章

  1. 新建模块 pom.xml依赖无法识别_使用模块依赖关系,第2部分
  2. .Net Core 图片上传FormData和Base64
  3. Layui table隐藏某一列
  4. PHP中cURL的curl_getinfo函数返回的CURLINFO_HTTP_CODE是0
  5. python如何定义一个空列表1s_如何在Python中创建多个(但单独的)空列表?
  6. ffmpeg不提供自己的编译结果了
  7. 又补充研究了OPENJDK LINUX版本打印变形字体的问题
  8. 文字处理技术:与布局相关的功能
  9. eclipse ARM/AARCH64版本下载
  10. 真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av