WordCount实例是大数据学习过程中的入门,相当于学习各种编程语言时打印“Hello World”的一样。本次实验是通过Java代码来实现的。

  1. 数据准备
    任意创建一个文本文件,在其中写入一些单词,并用空格隔开。
  2. Mapper阶段:
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*** WordCount程序 Mapper类** 自定义的xxxMapper类,需要继承Hadoop提供的Mapper类,并重写map方法** 按照当前WordCount程序来分析:* 四个泛型: 两组kv对* 输入数据的kv类型:*  KEYIN   : LongWritable   表示文件读取数据的偏移量,简单理解为每次从文件的哪个位置开始读取数据.*  VALUEIN : Text   实际从文件中读取的一行数据* 输出数据的kv类型:*  KEYOUT   : Text, 表示一个单词*  VALUEOUT : IntWritable, 表示这个单词出现了1次.*/
    public class WordCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {// 定义输出的k(单词) 和 v(单词数,1)private Text outk = new Text();private IntWritable outv = new IntWritable(1);/*** Map阶段处理的业务逻辑* @param key   KEYIN  输入数据的key* @param value VALUEIN  输入数据的value* @param context 上下文对象,负责整个Mapper类指定过程的调度.*/@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//1. 获取到输入的一行数据String line = value.toString();//2. 切割String[] words  = line.split(" ");//3. 将每个单词拼成kv写出for (String word : words) {//封装k 和 voutk.set(word);//写出context.write(outk,outv);}}
    }
    

    mapper阶段结束后,数据将会被拆分成一个个<单词, 1>的键值对形式。经过shuffle过程后,形成<单词, <1, 1, 1, 1, ……>>形式,而后传递给reducer处理。

  3. Reducer阶段
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/*** WordCount程序的 Reducer类** 自定义的xxxReducer类需要继承Hadoop提供的Reducer类,重写reduce方法** 按照当前wordCount程序来分析:* 4个泛型 : 两组kv对* 输入数据的kv类型:  Reducer输入数据的kv对象要对应Mapper输出数据的kv类型*   KEYIN   :  Text    表示一个单词*   VALUEIN :  IntWritable 表示该单词出现了1次* 输出数据的kv类型:*   KEYOUT  :  Text    表示一个单词*   VALUEOUT:  IntWritable  表示该单词总共出现的次数*/
    public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {//定义输出的vprivate IntWritable outv = new IntWritable();/*** Reduce阶段的业务逻辑处理* @param key   KEYIN , 表示一个单词* @param values  迭代器对象, 表示一个相同的单词(相同key)出现的次数的封装. 能够表明当前   的单词出现了多少次.* @param context 上下文对象, 负责Reducer类执行过程的调度*/@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {// 定义变量求和int sum  = 0;// 1. 将当前的单词出现的次数进行汇总.for (IntWritable value : values) {sum += value.get();}// 2. 封装k和voutv.set(sum);// 3. 写出context.write(key,outv);}
    }
    

    Reducer阶段主要是对shuffle阶段的value-list进行处理,类加求和,最终以<k, v>对的形式输出

  4. Driver阶段:
    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.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/*** WordCount程序的 Driver类*/
    public class WordCountDriver {public static void main(String[] args) throws Exception {//1.获取Job对象Configuration conf = new Configuration();Job job = Job.getInstance(conf);//2.关联jar,设置驱动类job.setJarByClass(WordCountDriver.class);//3.关联Mapper 和 Reducerjob.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);//4.设置Mapper 输出的key 和 value的类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);//5.设置最终输出的key 和 value的类型//  如果有reducer,就写reducer输出的kv类型,如果没有reducer,就写mapper输出的kv类型.job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);//6.设置输入和输出路径FileInputFormat.setInputPaths(job,new Path("文件所在路径"));FileOutputFormat.setOutputPath(job,new Path("结果输出路径"));  // 输出目录不能存在,否则会报异常//7.提交Jobjob.waitForCompletion(true);}
    }
    

hadoop初体验——WordCount实例相关推荐

  1. hadoop初体验Linux指令学习

    知识点一 Hadoop简介 知识点二 Hadoop简介2 知识点三 HDFS和MapReduce简介 知识点四 Linux命令回顾 查看网卡信息 ifconfig 查看文件(不包括隐藏) ls 查看文 ...

  2. python hadoop wordcount_Hadoop之wordcount实例-MapReduce程序

    实验目的 利用搭建好的大数据平台 Hadoop,对 HDFS 中的文本文件进行处理,采用 Hadoop Steaming 方式,使用 Python 语言实现英文单词的统计功能,并输出单词统计结果. 实 ...

  3. Hadoop集群启动、初体验

    1. 启动方式 要启动Hadoop集群,需要启动HDFS和YARN两个集群. 注意:首次启动HDFS时,必须对其进行格式化操作.本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的. h ...

  4. Hadoop3——集群搭建以及初体验

    1. 匹配主机名 2.下载安装hadoop 3. 配置Hadoop环境 4. 启动Hadoop环境 5. Hadoop初体验 建议先整体浏览一遍再做 (关于创建虚拟机的操作日后有需要的话我再补上) 1 ...

  5. 三、Hadoop系统应用之Hadoop集群测试及初体验(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

    Hadoop集群搭建前安装准备参考: 一.Hadoop系统应用之安装准备(一)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7) 一.Ha ...

  6. Hadoop伪分布式配置和搭建,hadoop单机安装,wordcount实例测试,hadoop安装java目录怎么找,问题及问题解决方法

    Hadoop伪分布式配置和搭建,hadoop单机安装,wordcount实例测试,hadoop安装java目录怎么找,问题及问题解决方法 环境说明 系统:ubuntu18.04 主机名:test1 用 ...

  7. hadoop运行wordcount实例,hdfs简单操作

    1.查看hadoop版本 [hadoop@ltt1 sbin]$ hadoop version Hadoop 2.6.0-cdh5.12.0 Subversion http://github.com/ ...

  8. java tls 实例_grpc加密TLS初体验(go、java版本)

    grpc加密TLS初体验(go.java版本) grpc-go.java的安装编译helloworld可以参考如下文章 openssl的安装.生成秘钥证书可以参考如下文章 示例代码go版本 服务端代码 ...

  9. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  10. yii schema.mysql.sql_YII学习,初体验 ,对YII的一些理解.

    先说点没用的: 不会选择,选择后不坚持,不断的选择.这是人生中的一个死循环,前两一直迷茫.觉得自己前进方向很不明朗.想去学的东西有很多.想学好YII,想学PYTHON 想学学hadoop什么的,又想研 ...

最新文章

  1. getRotationMatrix2D函数
  2. HashMap两种遍历数据的方式
  3. 基于QGIS初探PostgreSQL的PostGIS插件,包括YUM和编译安装PostGIS
  4. 2压缩备份数据库_达梦数据库备份与还原
  5. 原型模式(Prototype )
  6. Scala下载安装和环境变量配置
  7. JMeter使用教程(一)
  8. 卫星电话是直接与卫星通信还是通过地面站?
  9. 360加固签名验证_android - 使用360加固的方法(需要在windows下面,先加固,再签名)...
  10. Unity LineRenderer 画运动轨迹
  11. 整理的java基础知识点笔记
  12. u盘连接计算机找不到,重装系统后U盘插入电脑怎么没反应?找不到U盘盘符解决办法...
  13. PHP开发环境搭建和phpinfo函数
  14. @Inject 注解的使用
  15. 基于FPGA的密码锁开发——(1)密码锁驱动
  16. 实验A---- ADFA的可判定性
  17. 数商云:把握数字化核心趋势,推动煤炭企业数字化转型布局
  18. 经典DP:测试鸡蛋承受力
  19. win7打印机提示无法保存设置错误0x00006cc的处理方法
  20. 集成电路中电流镜的分析与布局设计

热门文章

  1. 基于51单片机的LED彩灯控制器设计
  2. 搜狐公司董事局主席兼首席执行官——张朝阳名言3
  3. Wallpaper (18)
  4. flutter | 悬浮窗解决方案 flutter_floating
  5. ArcGIS JS之 identify接口之 exceededTransferLimit属性
  6. current account(经常账户)
  7. 四个问题,判断自己是否适合学习编程
  8. 【WB32库开发】第13章(上)DMA直接存储器访问——存储器到存储器
  9. 蒸烤一体机哪个品牌好性价比高,盘点国内消费者呼声最高的品牌推荐
  10. 解决混淆报错问题-打包签名出现问题的解决方法