hadoop版helloworld之wordcount运行示例

向前展望,倒后推理      2022-02-08     179

关键词:

1.编写一个统计单词数量的java程序,并命名为wordcount.java,代码如下:

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {

  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

2.声明java环境变量:

export JAVA_HOME=/usr/java/default
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

其中JAVA_HOME根据自己安装java的实际路径进行配置。

注意:如果不声明以上环境变量,那么在以后运行时,将会收到错误提示:

3.编译并创建jar包。

bin/hadoop com.sun.tools.javac.Main WordCount.java
jar cf wc.jar WordCount*.class

4.运行第三步骤生成的wc.jar包。此时要注意,output文件夹不要手工创建,系统运行后会自动创建。

bin/hadoop jar wc.jar WordCount /user/root/wordcount/input /user/root/wordcount/output

正常运行结束后,会在outPut文件夹下生成part-r-00000及__SUCCESS两个文件,其中part-r-00000存储分析结果。运行命令:

bin/hadoop fs -cat /user/root/wordcount/output/part-r-00000

即可查看分析结果,如下图所示:

至此,本示例完成。

hadoop大数据平台架构之dkhadoop详解

hadoop大数据平台架构之DKhadoop详解大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战。Hadoop作为一个开源的分布式并行处理平台,以其高拓展、高效率、高可靠等优点越来越受... 查看详情

hadoop基础之《—hadoop概述》

一、Hadoop是什么1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。2、主要解决,海量数据的存储和海量数据的分析计算问题。3、广义上来说,Hadoop通常是指一个更广泛的概念—Hadoop生态圈。二、Hadoop的三大发... 查看详情

大数据hadoop入门之hadoop家族详解

大数据hadoop入门之hadoop家族详解大数据这个词也许几年前你听着还会觉得陌生,但我相信你现在听到hadoop这个词的时候你应该都会觉得“熟悉”!越来越发现身边从事hadoop开发或者是正在学习hadoop的人变多了。作为一个hadoop入门... 查看详情

hadoop的第一个helloworld程序(wordcount)(代码片段)

在hadoop生态中,wordcount是hadoop世界的第一个helloworld程序。wordcount程序是用于对文本中出现的词计数,从而得到词频,本例中的词以空格分隔。关于mapper、combiner、shuffler、reducer等含义请参照Hadoop权威指南里的说明。1、hadoop平台... 查看详情

Hadoop ResourceManager 不显示任何作业记录

...er-setup/安装HadoopMultiNode集群然后我尝试在我的环境中运行wordcou 查看详情

大数据hadoop入门之hadoop家族详解

...词也许几年前你听着还会觉得陌生,但我相信你现在听到hadoop这个词的时候你应该都会觉得“熟悉”!越来越发现身边从事hadoop开发或者是正在学习hadoop的人变多了。作为一个hadoop入门级的新手,你会觉得哪些地方很难呢?运行... 查看详情

openstack之r版(代码片段)

hadoop的基本概念伪分布式hadoop集群安装hdfs、MapReduce演示互联网正在从IT走向DT时代。大数据应用分析1、统计类的分析2、推荐类的分析3、机器学习(分类,聚类)4、人工智能、预测(算法)一、什么是hadoop官网:http://hadoop.apache.... 查看详情

springboot之helloworld

本文使用IDEA开发。createnewprojectmaven信息依赖lombokweb项目目录Controller@RestControllerpublicclassHelloWorldController{@GetMapping("hello-world")publicStringhelloWorld(){return"helloworld";}}ur 查看详情

springboot之helloworld详解

SpringBoot介绍~<暂时假装有>配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http: 查看详情

cas之helloworld(代码片段)

CAS之HelloWorld(二)标签(空格分隔):CASsso-examples-guides源码Intro(介绍)由上节可知ApereoCAS官方推荐使用WAROverlay的方式进行部署:ItisrecommendedtodeployCASlocallyusingtheWAROverlaymethod.那么我们就使用这种方式进行的相关的构建和部署。... 查看详情

java入门之helloworld

打开eclipse新建文件info.java代码:publicclassinfo{     publicstaticvoidmain(String[]args){        System.out.print("helloworld");}保存   查看详情

初探mybatis之helloworld

 官方地址:https://github.com/mybatis/mybatis-3准备:官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-started.html1、导入MyBatis的jar包和mysql连接驱动(maven):<!--https://mvnrepository.com/artifact/org.mybat 查看详情

springboot之helloworld

...我也会给出参考地址:话不多说,先搞个官网给的demo之helloworld开发工具使用:IDEA,这个IDE比较方便,谁用谁知道http://start.spring.io/ 1.Group 和Artifact是Maven确定依赖唯一的标识,这里我们写上图中所示即可,然后点击Generate... 查看详情

yoctobitbake入门之镜像中的helloworld(代码片段)

说明前一篇【Yocto】BitBake入门之HelloWorld中通过bitbake来打印HelloWorld,而本篇将打印HelloWorld的工作放到了镜像中完成。准备使用的环境是Ubuntu18.04:jw@X1C:~/code/poky$uname-aLinuxX1C5.4.0-84-generic#94~18.04.1-UbuntuSMPThuAug2 查看详情

hadoop之hadoop2.xhafederation

HDFS2.0之HA主备NameNode:  1、主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换;  2、主NameNode的信息发生变化后,会将信息写到共享数据存储系统中让备NameNode合并到自己的内存中;  3、所有DataNode同时向两... 查看详情

elasticsearch之helloworld

...evTools项,在Console栏输入POST_analyze{"analyzer":"standard","text":"HelloWorldElasticSearch"} & 查看详情

vue入门之helloworld

...新学习一门技术,一门语言比如JAVA、Python等都是从编写HelloWorld开始的,这样一来有益于初学者的人门,并给予初学者一定的信心,所以我也从HelloWorld开始讲起。 干货:  对于学习新的一门技术最好都是重从它的官网开始... 查看详情

hadoop数仓建设之指标管理

...,往期的内容大家可以查看下面👇:第一篇:Hadoop之数据仓库概述.第二篇:hadoop数仓建设之日志采集.第三篇:Hadoop数仓建设之数据同步.第四篇:Hadoop数仓建设之数据模型.🐱最近实习里自己负责 查看详情