hadoop程序开发--- Java
1、创建maven项目
如果不懂配置maven请点击:传送门
2、在pom.xml写入架包配置文件
<dependencies><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-mapreduce-client-common --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.8.4</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.8.4</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.8.4</version></dependency></dependencies>
3、创建源程序
src–>main–>java–>com–>test–>WordCount.java
WordCount.java
/ ***通过一项授权给Apache Software Foundation(ASF)*或更多贡献者许可协议。 查看公告文件*随本作品分发以获取更多信息*关于版权拥有权。 ASF许可此文件*根据Apache许可2.0版(以下简称“* “执照”); 除非合规,否则您不得使用此文件*带许可证。 您可以在以下位置获得许可的副本:** http://www.apache.org/licenses/LICENSE-2.0**除非适用法律要求或书面同意,否则软件*根据许可协议分发的内容是按“原样”分发的,*不作任何明示或暗示的保证或条件。*有关特定语言的管理权限,请参阅许可证*许可中的限制。* /package com.xxx;import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
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.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;/*** 这是一个示例Hadoop Map / Reduce应用程序。* 读取文本输入文件,将每一行分解为单词* 并计数。 输出是单词的本地排序列表,并且* 计算它们发生的频率。** 运行:bin / hadoop jar build / hadoop-examples.jar wordcount* [-m <i>地图</ i>] [-r <i>减少</ i>] <i>目录内</ i> <i>目录外</ i>*/
public class WordCount extends Configured implements Tool {/*** 计算每一行中的单词。* 于输入的每一行,将其分解为单词并将其作为* <b>单词</ b>,<b> 1 </ b>)。*/public static class MapClass extends MapReduceBaseimplements Mapper<LongWritable, Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(LongWritable key, Text value,OutputCollector<Text, IntWritable> output,Reporter reporter) throws IOException {String line = value.toString();StringTokenizer itr = new StringTokenizer(line);while (itr.hasMoreTokens()) {word.set(itr.nextToken());output.collect(word, one);}}}/*** 一个reducer类,该类仅发出输入值的总和。*/public static class Reduce extends MapReduceBaseimplements Reducer<Text, IntWritable, Text, IntWritable> {public void reduce(Text key, Iterator<IntWritable> values,OutputCollector<Text, IntWritable> output,Reporter reporter) throws IOException {int sum = 0;while (values.hasNext()) {sum += values.next().get();}output.collect(key, new IntWritable(sum));}}static int printUsage() {System.out.println("wordcount [-m <maps>] [-r <reduces>] <input> <output>");ToolRunner.printGenericCommandUsage(System.out);return -1;}/*** 字数映射/减少程序的主要驱动程序。* 调用此方法以提交地图/缩小作业。* @throws When there is communication problems with the job tracker.*/public int run(String[] args) throws Exception {JobConf conf = new JobConf(getConf(), WordCount.class);conf.setJobName("wordcount");// the keys are words (strings)conf.setOutputKeyClass(Text.class);// the values are counts (ints)conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(MapClass.class);conf.setCombinerClass(Reduce.class);conf.setReducerClass(Reduce.class);List<String> other_args = new ArrayList<String>();for(int i=0; i < args.length; ++i) {try {if ("-m".equals(args[i])) {conf.setNumMapTasks(Integer.parseInt(args[++i]));} else if ("-r".equals(args[i])) {conf.setNumReduceTasks(Integer.parseInt(args[++i]));} else {other_args.add(args[i]);}} catch (NumberFormatException except) {System.out.println("ERROR: Integer expected instead of " + args[i]);return printUsage();} catch (ArrayIndexOutOfBoundsException except) {System.out.println("ERROR: Required parameter missing from " +args[i-1]);return printUsage();}}// Make sure there are exactly 2 parameters left.if (other_args.size() != 2) {System.out.println("ERROR: Wrong number of parameters: " +other_args.size() + " instead of 2.");return printUsage();}FileInputFormat.setInputPaths(conf, other_args.get(0));FileOutputFormat.setOutputPath(conf, new Path(other_args.get(1)));JobClient.runJob(conf);return 0;}public static void main(String[] args) throws Exception {int res = ToolRunner.run(new Configuration(), new WordCount(), args);System.exit(res);}
}
4、将WordCount.java 打包为jar文件
(1)基本配置
选择完后 Apply–>ok
(2)开始打包
Build–>Build Artifacts–> XXX.jar–> Build
(3)查看生成的jar文件
在文件夹 out–>artifacts–>WordCount_jar里面
5、运行
我这里将WordCount.jar 上传到 /usr/local/hadoop-jar 目录下了
运行命令
重要:程序名前一定要写 包名 这里是 com.test
yarn jar /usr/local/hadoop-jar/WordCount.jar com.test.WordCount /input/word.txt /output/01
6、结束
示例结束,如果想开发其他程序,可以自己另外编写java 文件,打包上传运行即可。
如有转载请标明出处,支持原创。
QQ交流学习群:779133600
hadoop程序开发--- Java相关推荐
- 选课微信小程序开发 java
1.使用技术 java springboot mysql hibernate 微信小程序 2.功能介绍 后台管理 学生管理 课程管理 类型管理 选课管理 操作中心 管理员中心 导入导出学生 微信小程序 ...
- hadoop程序开发 --- python
这里以统计单词为例 1 首先建立mapper.py mkdir /usr/local/hadoop-python cd /usr/local/hadoop-python vim mapper.py m ...
- Java微信小程序开发- 校园报修系统
绪论 随着高校每年的扩大招生,学校人数越来越多,学校后勤报修管理的工作量也越水越繁重.使用传统的管理手段和方法,很难完成大量的信息分析和处理.因此,充分利用网络资源和信息化技术,建设一套基于校园网的学 ...
- PHP程序开发参考手册
/**语句*/ //if语句--条件控制语句 <?php$num = 2011;if(($num%4)==0&&($num%100)!=0){echo "$num&qu ...
- java项目_好程序员Java分享从入门到服务端项目开发的过程
好程序员Java分享从入门到服务端项目开发的过程,对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而 ...
- java程序员的大数据之路(2):创建第一个Hadoop程序
环境 Ubuntu 16.04 + Hadoop 2.7.4 + Intellij idea 2017.2 + jdk 1.8 创建过程 新建工程 新建一个工程 输入工程名 可以随便给工程起一个名字, ...
- 开发Java,市值一度超过两千亿美元,造福无数程序员的Sun公司,也最终“陨落”...
"那些疯狂到认为自己能够改变世界的人,才是真正能够改变世界的人." 这是乔布斯曾说过的话,也是很多技术大佬都会坚守的信念.最突出的表现则在于他们性格方面足够的特立独行,甚至是有些偏 ...
- java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)
原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
前几天,有一个已经有2年不做程序开发的大哥,购买了一套我的程序,其实这个大哥的水平也很厉害,但是由于有1-2年没做开发工作,以前的积累也都放弃了,现在可能是客户找他开发应用程序,要求的时间也比较短,所 ...
最新文章
- cpu和内存之间——地址映射
- IdentityServer4系列 | 资源密码凭证模式
- 7-7 六度空间 (30 分)(BFS遍历详解)(DFS最后一个点过不去)
- 计算几何 —— 欧拉公式
- 【转】Tag的创建和组织
- 字符设备驱动程序之poll机制(韦大仙)
- SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升
- linux向上翻页_Linux下vim编辑器命令大全
- gpasswd 附属组管理,添加用户到附属组中
- 现代控制理论课程实验三:一阶倒立摆的LQR控制器设计
- android 记步功能实现,Android计步(简单Demo)
- 数据库原理实验六——ODBC/JDBC数据库编程
- amd cpu安装osx 10.9.2(同样适应intel构架)
- FineReport 创建报表模板
- 渗透测试、安服等面试资料
- PHP之实现 家谱树,子孙树
- (转载)Linux内核源代码情景分析---第四章 进程与进程调度
- 【电子产品】ThinkPad S5 Intel(R) Dual Band Wireless-AC 3165 网卡驱动莫名其妙挂掉
- 将十进制正整数m转换成k进制(2≤k≤9)数的数字输出
- iNavFlight之MSP DJI协议飞控端请求应答