`
zhoupinheng
  • 浏览: 36148 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java开发简单Hadoop程序

阅读更多

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/*

   

    

分享到:
评论

相关推荐

    Hadoop集群程序设计与开发教材最终代码.zip

    - Eclipse和IntelliJ IDEA等IDE提供了Hadoop插件,便于调试和测试Hadoop应用程序。 5. Hadoop集群部署: - 单机模式:用于开发和测试,所有Hadoop进程都在一台机器上运行。 -伪分布式模式:在一个节点上模拟多...

    win7下Eclipse开发Hadoop应用程序环境搭建

    在Windows 7操作系统中,使用Eclipse开发Hadoop应用程序的过程涉及多个步骤,涵盖了从环境配置到实际编程的各个层面。以下是对这个主题的详细讲解: 首先,我们需要了解Hadoop和Eclipse的基础。Hadoop是一个开源的...

    Hadoop入门程序java源码

    通过学习和实践这个入门源码,你可以了解Hadoop基本的编程流程,为后续更深入的Hadoop应用打下坚实的基础。同时,这个源码也可以作为调试和测试Hadoop集群功能的有效工具,确保集群环境的正确配置和运行。在实际项目...

    基于Eclipse的Hadoop应用开发环境配置

    "基于Eclipse的Hadoop应用开发环境配置" 基于 Eclipse 的 Hadoop 应用开发环境配置是指在 Eclipse 中配置 Hadoop 开发环境,以便开发和运行 Hadoop 应用程序。本节将对基于 Eclipse 的 Hadoop 应用开发环境配置进行...

    Ubuntu下开发Eclipse下的Hadoop应用

    本标题表明本文档的主要内容是关于在Ubuntu操作系统下使用Eclipse开发Hadoop应用程序。 描述: 本文档详细记录了如何在ubuntu下安装eclipse,以及如何在eclipse中安装hadoop插件,最后运行程序。 本描述明确了本...

    基于Eclipse的Hadoop应用开发环境的配置

    而Eclipse作为Java开发的主流IDE,结合Hadoop可以为开发者提供高效便捷的开发环境。本篇将详细介绍如何配置基于Eclipse的Hadoop应用开发环境。 首先,我们需要了解Hadoop的基本构成。Hadoop主要由两个核心部分组成...

    Hadoop应用程序

    标题中的“Hadoop应用程序”指的是基于Hadoop框架开发的应用,这个框架主要用于大数据处理。Hadoop是Apache软件基金会下的一个开源项目,它提供了分布式文件系统(HDFS)和数据处理工具(MapReduce)来处理和存储大...

    在Windows上使用eclipse编写Hadoop应用程序

    为了方便开发者在Windows环境下进行Hadoop应用程序的开发,本篇指南将详细介绍如何使用Eclipse集成开发环境(IDE)来编写、编译并在Hadoop集群上运行简单的Hadoop应用程序。 #### 创建Java项目 1. **启动Eclipse**...

    Java访问Hadoop集群源码

    理解这些基本概念和API,你就能编写出能与Hadoop集群有效交互的Java应用程序,进行大数据的处理和分析。在实际开发中,还需要考虑错误处理、性能优化以及集群的管理和监控等方面,这些都是成为Hadoop开发大师的...

    java web程序调用hadoop2.6

    Java Web程序调用Hadoop 2.6是一个关键的技术整合,它允许Web应用程序与Hadoop分布式文件系统(HDFS)和MapReduce框架交互,以处理大规模数据。在本示例中,我们将深入探讨如何实现这一集成,以及涉及的关键概念和...

    java项目Hadoop依赖包

    Hadoop MapReduce Client则提供了与MapReduce框架交互的接口,使得Java开发者可以在自己的应用程序中调用MapReduce任务。Hadoop HDFS模块提供了对HDFS的编程接口,让开发者可以编写代码来操作文件系统。 使用这些...

    windows下开发hadoop程序需要覆盖的本地库文件.zip

    在Windows环境下,开发Hadoop程序通常涉及到与操作系统不完全兼容的问题,因为Hadoop主要设计时考虑的是Linux系统。为了在Windows上顺利进行开发,我们需要解决一些关键问题,其中包括配置正确的本地库文件。这个名...

    Hadoop教学使用java_jdk

    Java JDK是开发Java应用程序的基础,包含了Java编译器、调试工具和Java运行环境。在这里,我们使用的是JDK 1.8的Linux版本,即`jdk-8u161-linux-x64.tar.gz`。这个文件是一个压缩包,包含了适用于64位Linux系统的...

    windows下开发hadoop2.4.1程序需要覆盖的本地库文件

    在Windows环境下开发Hadoop 2.4.1程序时,可能会遇到与本地库文件相关的兼容性和依赖性问题。Hadoop最初是为Linux环境设计的,因此在Windows上运行Hadoop时,需要对某些库文件进行调整以确保正常运行。本文将深入...

    java下hadoop开发使用jar包

    总的来说,Hadoop的Java开发离不开对相关jar包的引用。正确地引入和使用这些jar包,可以使你在分布式环境下编写高效的数据处理程序。而随着Hadoop生态的不断扩展,了解并掌握不同模块的jar包使用,将有助于你更好地...

    Hadoop教程(一)Java开发Java经验技巧共6页

    在本Hadoop教程的第一部分,我们将探讨如何利用Java语言有效地开发和优化Hadoop应用程序,以及在实际工作中积累的一些Java编程技巧。这份资料共分为六页,涵盖了基础理论和实践经验,旨在帮助开发者提升在大数据处理...

    Java操作Hadoop Mapreduce基本实践源码

    例如,一个简单的WordCount程序可以如下编写: ```java // 定义Mapper类 public static class TokenizerMapper extends Mapper, Text, Text, IntWritable&gt; { private final static IntWritable one = new ...

    hadoop远程访问资料

    6. **Eclipse集成开发环境**:Eclipse是一种流行的Java开发工具,支持插件扩展。对于Hadoop开发,可以安装Hadoop-Eclipse插件,方便在Eclipse中直接编写、调试和运行Hadoop MapReduce程序。 7. **Hadoop-Eclipse...

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    总的来说,搭建Hadoop集群和开发MapReduce程序是一个系统性的工程,涉及到操作系统管理、网络配置、Java编程以及大数据处理原理。对于初学者来说,遵循详尽的步骤和代码示例是非常有益的,而逐步熟悉并理解这些过程...

Global site tag (gtag.js) - Google Analytics