前面4篇文章介绍了如何编写一个简单的日志提取程序,读取HDFS share/logs目录下的所有csv日志文件,然后提取数据后,最终输出到share/output目录下。
本篇停留一下,梳理一下主要过程,然后提出新的改进目标。
首先声明一下,所有的代码都是maven工程的,没有使用任何IDE。 这是我一贯的编程风格,用Emacs + JDEE开发。需要使用IDE的只需要学习如何在IDE中使用maven即可。
可比较的序列化
第一个是序列化,这是各种编程技术中常用的。MapReduce的特别之处在于由于key用来排序,所有它既要支持序列化和反序列化,同时也要支持比较大小的操作。因此通常使用的都是接口WritableComparable<T>,这个接口分别从Writable接口和java.lang.Comparable<T>接口继承。前者负责序列化,实现的就是类似流(stream)的功能,后者负责比较。
MapReduce计算流程
这里只是概括的介绍主要步骤:
1. 通过InputFormat读取HDFS目录的日志文件的所有行,进行内容分块。然后每个块都会对应一个mapper
2. 调用每个Mapper的map函数, 将内容块的数据按照行变成<key, value>格式,作为参数传递. map函数的代码由程序员自己实现,通常key是数据,value是整数,便于做统计。这样,也就将参数<key, value>改成了另一种符合业务逻辑的<key, value>, 通过Context.write方法
写出去,随后会被框架交给Reducer.
3. Partitioner目前我的程序中没有实现自己的类,只是简单使用了Reducer,后面会增加这部分的说明
4. 框架会根据key进行分组,组成<key, values>对, 调用Reducer的reduce函数,函数接受到Mapper传递来的<key, values>后再做统计
5. 输出成什么样的格式文件由OutputFormat来控制。
注意上面的几个粗体字,就是5大MapReduce组件。每个组件都是我们可以继承的类,然后MapReduce框架通过多态的方式来回调我们的子类实现的方法。
MapReduce Job的配置
有了上面的实现,还需要配置Job,并且在hadoop命令行中提交。
配置的话,直接new一个Job类,调用set方法进行相应的设置即可。 Job的父类是JobContext。
就在这里可以设置上面的5大组件类,用自己的类来替换。还可以设置Reducer的数量。
分析就到这里,后面会陆续进行更多的编程实践。
比如,定制自己的3大组件, InputFormat,Partitioner和OutputFormat。
分享到:
相关推荐
4 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后查看 MapReduce Web 界面。 5. 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后练习 MapReduce Shell 常用命令。 。。
MapReduce goole MapReduce编程模型
大数据技术基础实验报告-MapReduce编程
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
MapReduce编程实例浅析,讲述如何进行M/R程序开发。
Mapreduce编程模型是Google采用的云计算编程模式,本论文阐述了Mapreduce编程模型
大数据分析技术基础PPT课件(共9单元)4-MapReduce 编程.pdf大数据分析技术基础PPT课件(共9单元)4-MapReduce 编程.pdf大数据分析技术基础PPT课件(共9单元)4-MapReduce 编程.pdf大数据分析技术基础PPT课件(共9单元)4-...
MapReduce 初级编程实践 姓名: 实验环境: 操作系统:Linux(建议Ubuntu16.04); Hadoop版本:3.2.2; 实验内容与完成情况: (一)编程实现文件合并和去重操作 对于两个输入文件,即文件 A 和文件 B,请...
四川大学IT企业实训,拓思爱诺大数据第二次作业,MapReduce编程,包括Hadoop wordcount程序,及flowcount流量统计程序,包括重写排序及分区函数
在前面《MapReduce实例分析:单词计数》教程中已经介绍了用 MapReduce 实现单词计数的基本思路和具体执行过程。下面将介绍如何编写具体实现代码及如何运行程序。 首先,在本地创建 3 个文件:file00l、file002 和 ...
(实践一)数值概要中combiner的作用 在前述数值概要的运用中,加入不同的combiner,测试不同环境下系统的性能,并给出分析、...(实践五)去重的用户—针对ctrip数据集去重 对ctrip数据集中的product-id进行去重操作
详细介绍基于hadoop的mapreduce编程,基本原理。hadoop架构,map的处理方式,reduce的处理输入输出等。
08.mapreduce编程案例--流量统计求和--自定义数据类型.mp4
MapReduce编程实践: 使用MapReduce实现多个文本文件中WordCount词频统计功能,实验编写Map处理逻辑、编写Reduce处理逻辑、编写main方法。 二.实验目的 1、通过实验掌握基本的MapReduce编程方法。 2、实现统计HDFS...
基于MapReduce编程模型的分布式并行计算系统的设计和实现,何皓星,李昕,大数据处理技术对互联网应用本身和企业都具有非常重大的意义。随着互联网业务数量的快速增长,系统中积累的数据也越来越多。如何
大数据及MapReduce编程模型94.pptx
使用Hadoop MapReduce实现两个矩阵相乘算法
此文档用于指导在hadoop完全分布式环境上做mapreduce开发,包括了11个mapreduce实例,讲解详细,适合初步接触mapreduce开发的同学,希望对大家有帮助
实验3MapReduce编程初级实践
一本讲得非常细致的MapReduce编程资料,是初学者的必备材料。