pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelVersion>4.0.0</modelVersion> <groupId>com.kovansys.test</groupId> <version>1.1.0</version> <artifactId>hadoop_test</artifactId> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <hadoop.version>3.2.0</hadoop.version> <java.encoding>UTF-8</java.encoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <directory>target</directory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>${hadoop.version}</version> </dependency> </dependencies> </project>
WordCountStarter类
package hadoop; 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; import org.apache.hadoop.util.GenericOptionsParser; public class WordCountStarter { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: WordCountStarter <in> <out>"); System.exit(2); } Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCountStarter.class); job.setMapperClass(WordCountMapper.class); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
WordCountMapper类
package hadoop; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class WordCountMapper extends Mapper<Object, Text, Text, LongWritable> { private static final LongWritable one = new LongWritable(1); private Text word = new Text(); public void map(Object key, Text value, Mapper<Object, Text, Text, LongWritable>.Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { this.word.set(itr.nextToken()); context.write(this.word, one); } } }
WordCountReducer类
package hadoop; import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class WordCountReducer extends Reducer<Text, LongWritable, Text, LongWritable> { private LongWritable result = new LongWritable(); public void reduce(Text key, Iterable<LongWritable> values, Reducer<Text, LongWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException { int sum = 0; for (LongWritable val : values) { sum += val.get(); } this.result.set(sum); context.write(key, this.result); } }
#打包
$mvn clean install
#将生成的jar包放到服务器上 如/opt/temp/hadoop_test-1.1.0.jar
#运行mapreducer任务
bin/hadoop jar /opt/temp/hadoop_test-1.1.0.jar hadoop.WordCountStarter input output
#查看结果
bin/hdfs dfs -cat output/*
相关推荐
- Eclipse和IntelliJ IDEA等IDE提供了Hadoop插件,便于调试和测试Hadoop应用程序。 5. Hadoop集群部署: - 单机模式:用于开发和测试,所有Hadoop进程都在一台机器上运行。 -伪分布式模式:在一个节点上模拟多...
在Windows 7操作系统中,使用Eclipse开发Hadoop应用程序的过程涉及多个步骤,涵盖了从环境配置到实际编程的各个层面。以下是对这个主题的详细讲解: 首先,我们需要了解Hadoop和Eclipse的基础。Hadoop是一个开源的...
通过学习和实践这个入门源码,你可以了解Hadoop基本的编程流程,为后续更深入的Hadoop应用打下坚实的基础。同时,这个源码也可以作为调试和测试Hadoop集群功能的有效工具,确保集群环境的正确配置和运行。在实际项目...
"基于Eclipse的Hadoop应用开发环境配置" 基于 Eclipse 的 Hadoop 应用开发环境配置是指在 Eclipse 中配置 Hadoop 开发环境,以便开发和运行 Hadoop 应用程序。本节将对基于 Eclipse 的 Hadoop 应用开发环境配置进行...
本标题表明本文档的主要内容是关于在Ubuntu操作系统下使用Eclipse开发Hadoop应用程序。 描述: 本文档详细记录了如何在ubuntu下安装eclipse,以及如何在eclipse中安装hadoop插件,最后运行程序。 本描述明确了本...
而Eclipse作为Java开发的主流IDE,结合Hadoop可以为开发者提供高效便捷的开发环境。本篇将详细介绍如何配置基于Eclipse的Hadoop应用开发环境。 首先,我们需要了解Hadoop的基本构成。Hadoop主要由两个核心部分组成...
标题中的“Hadoop应用程序”指的是基于Hadoop框架开发的应用,这个框架主要用于大数据处理。Hadoop是Apache软件基金会下的一个开源项目,它提供了分布式文件系统(HDFS)和数据处理工具(MapReduce)来处理和存储大...
为了方便开发者在Windows环境下进行Hadoop应用程序的开发,本篇指南将详细介绍如何使用Eclipse集成开发环境(IDE)来编写、编译并在Hadoop集群上运行简单的Hadoop应用程序。 #### 创建Java项目 1. **启动Eclipse**...
理解这些基本概念和API,你就能编写出能与Hadoop集群有效交互的Java应用程序,进行大数据的处理和分析。在实际开发中,还需要考虑错误处理、性能优化以及集群的管理和监控等方面,这些都是成为Hadoop开发大师的...
Java Web程序调用Hadoop 2.6是一个关键的技术整合,它允许Web应用程序与Hadoop分布式文件系统(HDFS)和MapReduce框架交互,以处理大规模数据。在本示例中,我们将深入探讨如何实现这一集成,以及涉及的关键概念和...
Hadoop MapReduce Client则提供了与MapReduce框架交互的接口,使得Java开发者可以在自己的应用程序中调用MapReduce任务。Hadoop HDFS模块提供了对HDFS的编程接口,让开发者可以编写代码来操作文件系统。 使用这些...
在Windows环境下,开发Hadoop程序通常涉及到与操作系统不完全兼容的问题,因为Hadoop主要设计时考虑的是Linux系统。为了在Windows上顺利进行开发,我们需要解决一些关键问题,其中包括配置正确的本地库文件。这个名...
Java JDK是开发Java应用程序的基础,包含了Java编译器、调试工具和Java运行环境。在这里,我们使用的是JDK 1.8的Linux版本,即`jdk-8u161-linux-x64.tar.gz`。这个文件是一个压缩包,包含了适用于64位Linux系统的...
在Windows环境下开发Hadoop 2.4.1程序时,可能会遇到与本地库文件相关的兼容性和依赖性问题。Hadoop最初是为Linux环境设计的,因此在Windows上运行Hadoop时,需要对某些库文件进行调整以确保正常运行。本文将深入...
总的来说,Hadoop的Java开发离不开对相关jar包的引用。正确地引入和使用这些jar包,可以使你在分布式环境下编写高效的数据处理程序。而随着Hadoop生态的不断扩展,了解并掌握不同模块的jar包使用,将有助于你更好地...
在本Hadoop教程的第一部分,我们将探讨如何利用Java语言有效地开发和优化Hadoop应用程序,以及在实际工作中积累的一些Java编程技巧。这份资料共分为六页,涵盖了基础理论和实践经验,旨在帮助开发者提升在大数据处理...
例如,一个简单的WordCount程序可以如下编写: ```java // 定义Mapper类 public static class TokenizerMapper extends Mapper, Text, Text, IntWritable> { private final static IntWritable one = new ...
6. **Eclipse集成开发环境**:Eclipse是一种流行的Java开发工具,支持插件扩展。对于Hadoop开发,可以安装Hadoop-Eclipse插件,方便在Eclipse中直接编写、调试和运行Hadoop MapReduce程序。 7. **Hadoop-Eclipse...
总的来说,搭建Hadoop集群和开发MapReduce程序是一个系统性的工程,涉及到操作系统管理、网络配置、Java编程以及大数据处理原理。对于初学者来说,遵循详尽的步骤和代码示例是非常有益的,而逐步熟悉并理解这些过程...