13-hadoop-入门程序
通过之前的操作,
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-入门程序相关推荐
- hadoop入门程序:词频统计
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_42437577/article/ ...
- [学习笔记]黑马程序员-Hadoop入门视频教程
文章目录 参考资料 第一章:大数据导论与Linux基础(p1-p17) 1.1 大数据导论 1.1.1 企业数据分析方向 1.1.2 数据分析基本流程步骤 明确分析的目的和思路 数据收集 数据处理 数 ...
- 大数据与Hadoop有什么关系?大数据Hadoop入门简介
学习着数据科学与大数据技术专业(简称大数据)的我们,对于"大数据"这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是--Hadoop 那Hadoop与 ...
- 大数据平台hadoop运维之hadoop入门-高俊峰-专题视频课程
大数据平台hadoop运维之hadoop入门-5245人已学习 课程介绍 主要介绍hadoop生态圈的常用软件和基础知识,可使学员迅速了解hadoop运维的基础知识,并迅速掌握hado ...
- SpringMVC学习(一)———— springmvc框架原理分析和简单入门程序
一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交 ...
- hadoop调用python算法_使用Python实现Hadoop MapReduce程序
根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序, 打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...
- 使用Python实现Hadoop MapReduce程序
根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序, 打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...
- hadoop的python框架指南_Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)...
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79056120 一.环境准备想了解如何使用原生Python编写MapReduce程序 ...
- Remoting系列(二)----建立第一个入门程序
http://www.cnblogs.com/Ring1981/archive/2006/07/23/455043.aspx Remoting系列(二)----建立第一个入门程序 下面的Remotin ...
- 01-MyBatis入门程序
MyBatis入门程序 目录 1. 下载 Mybatis 核心包 2. 创建工程,引入 MyBatis 核心包及依赖包 3. 创建 customer 表,建立与表对应的 domain 使用 lombo ...
最新文章
- 并查集专题练习:好朋友(未完待续)
- HTML 5 input type 属性
- 多线程:线程同步的几种方式
- C# 每月第一天和最后一天
- CSS相邻兄弟选择器
- 有效前沿—让你的投资收益最大化
- 我的世界服务器物品id错误,我的世界错误代码,怎么弄
- asp.net mvc3.0第一个程序helloworld开发图解
- 去年购房者平均年龄为29.5岁 80后家庭人均居住面积最小
- oracle 切割字符串加引号_oracle存储过程中单引号及字符串拼接处理
- Python+sklearn训练结果保存与加载(以垃圾邮件分类为例)
- SAP License:供应链管理和ERP的关系?
- 中国内鼻扩张器市场趋势报告、技术动态创新及市场预测
- nextpolish安装_希望组自主三代组装软件NextDenovo最新版本全球学术开源!
- Android下基于UVC的UsbCam的开发
- Python怎么安装PHP,php中ThinkPHP的下载和安装
- 给未来写封信app服务器维护中,给未来写封信app
- adc0808模数转换实验报告_模数转换实验报告
- 怎么用python画房子_python绘图作业:使用pygame库画房子
- 怎么测试视频是哪个软件拍的,李子柒的视频是用什么设备拍摄的,又是用什么软件处理的?...
热门文章
- 新建模块 pom.xml依赖无法识别_使用模块依赖关系,第2部分
- .Net Core 图片上传FormData和Base64
- Layui table隐藏某一列
- PHP中cURL的curl_getinfo函数返回的CURLINFO_HTTP_CODE是0
- python如何定义一个空列表1s_如何在Python中创建多个(但单独的)空列表?
- ffmpeg不提供自己的编译结果了
- 又补充研究了OPENJDK LINUX版本打印变形字体的问题
- 文字处理技术:与布局相关的功能
- eclipse ARM/AARCH64版本下载
- 真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av