设为首页 收藏本站
查看: 1320|回复: 0

[经验分享] Hadoop教程汇总连载之Hadoop基本流程和代码范例

[复制链接]

尚未签到

发表于 2016-12-6 07:36:20 | 显示全部楼层 |阅读模式

  • 为何有些公司在机器学习业务方面倾向使用 R + Hadoop方案?
  • 你不知道的十个Hadoop的应用场景
  • Hadoop教程:Hadoop的源起和体系架构
  • Hadoop教程:Hadoop核心架构详细解析
  • Hadoop教程:Hadoop集群和网络的基本原理(一)
  • Hadoop教程:Hadoop集群和网络的基本原理(二)
  • Hadoop教程:Hadoop集群和网络的基本原理(三)
  • Hadoop教程:Hadoop基本流程和代码范例
  • Hadoop教程:SQL Server+Hadoop变身大数据解决方案
  • Hadoop教程:谈百度是如何使用hadoop的,并做了哪些改进
  • Hadoop教程:Smartbi在Hadoop大数据分析中的应用
  • Hadoop教程:PayPal的Hadoop迭代式计算框架--Guagua
  • Hadoop教程:8个值得关注的SQL-on-Hadoop框架
  • Hadoop教程:四个方案将OpenStack部署到Hadoop
  • Hadoop教程:Hadoop的技术生态圈
  • Oracle大数据SQL使SQL、Hadoop和NoSQL融合互通
  • Hadoop教程:Hadoop集群环境下的网络架构设计与优化
  • Hadoop教程:9款Hadoop商业发行版的调研报告
  • Hadoop教程:Hadoop分布式环境搭建
  • Hadoop教程:Teradata Aster在Hadoop和R上的进展
  • Hadoop和大数据是合并还是冲突?
  • Hadoop教程:Hadoop数据传输工具Sqoop
  • Hadoop教程:大数据处理平台Hadoop能为企业带来什么?
  • Hadoop教程:Hadoop和大数据在电信业里的典型应用
  • Hadoop教程:Hadoop在大数据中的角色
  • Hadoop教程:Hadoop平台的基本组成与生态系统
  • Hadoop教程:当机器大数据遇见Hadoop
  • Hadoop教程:Hadoop系统分布式存储与并行计算构架
  • Hadoop教程:用外部存储构建Hadoop
  • Hadoop教程:用hadoop计算PI值
  • Hadoop教程:Hadoop扩展过程中的潜在危机

基本流程:

DSC0000.jpg
  

DSC0001.jpg
 一个图片太大了,只好分割成为两部分。根据流程图来说一下具体的一个任务执行的情况。
1. 分布式环境中客户端创建任务并提交。
2. InputFormat做Map前的预处理,主要负责以下工作:
a) 验证输入的格式是否符合JobConfig的输入定义,这个在实现Map和构建Conf的时候就会知道,不定义可以是Writable的任意子类。
b) 将input的文件split为逻辑上的输入InputSplit,其实这就是在上面提到的在分布式文件系统中blocksize是有大小限制的,因此大文件会被划分为多个block。
c) 通过RecordReader来再次处理inputsplit为一组records,输出给Map。(inputsplit只是逻辑切分的第一步,但是如何根据文件中的信息来切分还需要RecordReader来实现,例如最简单的默认方式就是回车换行的切分)
3. RecordReader处理后的结果作为Map的输入,Map执行定义的Map逻辑,输出处理后的key,value对到临时中间文件。
4. Combiner可选择配置,主要作用是在每一个Map执行完分析以后,在本地优先作Reduce的工作,减少在Reduce过程中的数据传输量。
5. Partitioner可选择配置,主要作用是在多个Reduce的情况下,指定Map的结果由某一个Reduce处理,每一个Reduce都会有单独的输出文件。(后面的代码实例中有介绍使用场景)
6. Reduce执行具体的业务逻辑,并且将处理结果输出给OutputFormat。
7. OutputFormat的职责是,验证输出目录是否已经存在,同时验证输出结果类型是否如Config中配置,最后输出Reduce汇总后的结果。
代码范例:
业务场景描述:
可设定输入和输出路径(操作系统的路径非HDFS路径),根据访问日志分析某一个应用访问某一个API的总次数和总流量,统计后分别输出到两个文件中。
仅仅为了测试,因此没有去细分很多类,将所有的类都归并于一个类便于说明问题。

DSC0002.jpg
图4 测试代码类图
LogAnalysiser就是主类,主要负责创建,提交任务,并且输出部分信息。内部的几个子类用途可以参看流程中提到的角色职责。具体的看看几个类和方法的代码片断:
LogAnalysiser::MapClass
public static class MapClass extends MapReduceBase
implements Mapper<longwritable, text,="" longwritable="" style="box-sizing: border-box;">
 {
public void map(LongWritable key, Text value, OutputCollector<text, longwritable="" style="box-sizing: border-box;"> output, Reporter reporter)
 throws IOException
&

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310158-1-1.html 上篇帖子: hadoop开发方式总结及操作指导 下篇帖子: hadoop调优
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表