Hadoop基本流程与应用开发

2019-03-28 14:11|来源: 网络

Hadoop基本流程

Map Task执行流程:

Reduce Task执行流程:

一个图片太大了,只好分割成为两部分。根据流程图来说一下具体一个任务执行的情况。

  1. 在分布式环境中客户端创建任务并提交。
  2. InputFormat做Map前的预处理,主要负责以下工作:
    1. 验证输入的格式是否符合JobConfig的输入定义,这个在实现Map和构建Conf的时候就会知道,不定义可以是Writable的任意子类。
    2. 将input的文件切分为逻辑上的输入InputSplit,其实这就是在上面提到的在分布式文件系统中blocksize是有大小限制的,因此大文件会被划分为多个block。
    3. 通过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汇总后的结果。

相关问答

更多
  • 虽然没有做过网页游戏,不过你可以考虑用as3来写客户端,用java来写服务器 因为flash用来做2D动画很好,结合as3可以做出画面精美的游戏。如果你用别的语言来写客户端,总要考虑graphic library的问题,而flash的mc就可以很好地满足画面的要求。而且flash跟浏览器的结合是很好的,因为它完全没有浏览器兼容性问题,只要求客户端安装flash player 其实用JSP应该也可以写服务器,这方面我没有研究过,不过跟别人探讨的时候,认为JSP写的服务器效率不如java写的好 不知道你们小组是 ...
  • 虽然没有做过 网页游戏,不过你可以考虑用as3来写 客户端,用java来写 服务器 因为flash用来做2D 动画很好,结合as3可以做出画面精美的游戏。如果你用别的语言来写客户端,总要考虑graphic library的问题,而flash的mc就可以很好地满足画面的要求。而且flash跟 浏览器的结合是很好的,因为它完全没有浏览器兼容性问题,只要求客户端安装flash player 其实用JSP应该也可以写服务器,这 方面我没有研究过,不过跟别人探讨的时候,认为JSP写的服务器效率不如java写的好 不知 ...
  • 网站开发流程[2023-04-16]

    你好!我是ASP.NET网站程序员!对于你提的问题我想向对你说!这跟不属于什么问题……因为每个网站开发人员来说,像QQ空间那样跟本不算什么…… 计算机语言(c语言)+js+NET开发……就可以实现!
  • 从个人做开发多年的感受来看,技术都不是问题,总是能实现的,关键还是需求,需求要讲清楚,设计的时候,要留有可扩展的空间,因为需求总是在不断增加的,前台好看不好看,还是要看总体需要 所以我觉得软件工程的知识要有,写ASP么,最好能有比较好的C功底,美术略知一二即可(除非你做专业的视觉网站),其实最重要的还是经验,做多了就熟门熟路了
  • 我的eclipse是装在WINDOWS下的,HADOOP在CENTOS生产环境。 但原理是一样额 http://club.sm160.com/showtopic-937269.aspx HADOOP 版本是hadoop1.0.0(和你的hadoop1.0.4配置相同)
  • APP开发流程[2023-05-23]

    用户需求分析 1用户需求分析是整个APP开发流程中最重要的一环,相当于企业中决策者的地位,一款APP成功与否也尽数决定于此。此处的用户需求分析是基于用户的要求进行APP功能的梳理。注意此处是用户,因为很多公司要求开发出来的APP是给其用户使用,因此在整理APP开发需求时,不仅要了解开发企业的需求,也要了解其客户群体的需求。最终将这些需求进行梳理、分类,整理出大体的APP功能框架。此过程中需要与客户密切的进行沟通,力求做到没有任何疑问,以免开发出不实用的APP。 产品原型设计 在进行一轮用户需求分析之后,将整 ...
  • Hadoop本事是用java开发的,但是我们在用的时候不限于java,python也可以。相对于java,python的优势在于开发效率高,维护成本低,所以很多公司也会用python,像八斗学院的大数据课程主要用到python,java、scala语言在某些情况下使用
  • 开发的流程总结的话起来就三步,第一步:进入公众平台注册公众号,而且把它升级成服务类型的公众号,之后完成微信认证。第二步:到公众平台的服务中心里面申请开通它,这里的话就不是那么简单了,需要提交到一些基本资料,而且还需要经过审核,一般为三到七个工作日就可以完成审核,在审核过程中可以在开发环境先模拟一下支付,第三步:审核通过后登录到商户平台验证(平台账户会通过联系邮箱发给你的)验证完成后就可以在线签订协议了,之后就可以正常使用了。
  • Android现在现在已经接近饱和了,新手毕业也面临着很大的压力,不过入门简单点,但相对而言前景不好,因为开发者会越来越多,而且已经很多了。oracle不错数据库是一个可以挖的很深的方向,厉害的人前景真的一片光明,绝对可以成为企业的脊梁骨,但难度会高很多,入门也难。hadoop大数据开发,真的非常的火,同样的入门难度高,建议可以多投资点时间学习,不要培训个几个月然后就出来找工作。
  • Teradata为Cloudera( 链接 )和Hortonworks( 链接 )提供连接器,便于在平台之间移动数据。 QueryGrid是Teradata提供的产品,可让您在Teradata平台上创建“链接服务器”。 使用这些“链接服务器”,您可以从Teradata查询Hadoop平台上的数据。 目前,这些类型的工作负载旨在降低并发性。 这种情况发展得相当快,随着技术的发展和成熟,并发率可能会提高。 Teradata offers connectors for Cloudera (link) and Ho ...