zoukankan      html  css  js  c++  java
  • 7.4mapreduce任务执行--环境配置、推测执行、outputCommter提交协议

    1.1  任务的执行

    1.1.1         任务执行环境

    Map和reduce的任务会有一些属性,创建任务时传入,可以通过任务的函数(旧版configure()函数)或者对象方法获取这些属性。 

     

    1.1.2         推测执行

    一个作业被分解为多个任务,并发的执行多个任务,提高速度,但是如果某个任务执行的慢就会拖后腿,所以检测到执行慢的任务,就会另起一个系相同的任务作为备份,这就是任务的推测执行。哪一个先执行成功,另外一个会被终止。这种方法不能避免软件本身的缺陷。推测执行会占用额外的资源,影响整体的吞吐量。任意重复的reduce任务,必须获取所有map输出,这会增大网络传输。所以也会关闭推测执行,根据特别作业开启该功能。

     

    1.1.3         outputCommiters提交协议

    提交协议用来确保作业和任务都完成成功或失败,旧版本通过jobconf的setOutputCommitter()或配置中的mapred.output.committter.class来设置。新版本中由OutputFormat通过getOutputCommitter()方法确定,默认值是FileOutputCommitter。可以重新实现OutputCommitter虚拟类,来做一些特殊的设置或清理。

     

    Setupjob()初始化方法,作业运行前调用,设置输出目录(mapreduce.output.fileoutformat.outputdir),建立临时的工作空间_trmporary。这些目录在写任务输出时才被创建。

    Commitjob()作业成功提交方法,将输出结果移动到最后的输出路径(mapreduce.output.fileoutputformat.outputdir)删除临时的工作空间,并且在输出目录中创建_success隐藏的标志文件。

    Abortjob()终止任务方法,意味着作业失败或终止,也会删除作业的临时工作空间。推测任务中,一个任务成功,其它相同的推测任务取消。

    needTaskCommit()判断是否需要提交任务,例如当一个任务没有任何输出,则不必运行分布提交协议,直接跳过提交阶段。

    任务附属文件,每个任务有一个任务附属文件,任务的输出结果先写入附属文件,提交任务时,才将附属文件输出到输出目录(mapreduce.task.output.dir),失败的任务,附属文件删除。OutputCommitter协议避免了同一个任务的多个实例向同一输出目录输出文件。

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

    https://www.cnblogs.com/bclshuai/p/11380657.html

  • 相关阅读:
    页面切换语言包使用session不用cookie
    如何设置unobtrusive的语言包
    .net MVC全球化资源使用心得
    消息队列写入内容后,读出来的自动包裹了<string>标签,自定义格式化器解决该issue
    解决"415 Cannot process the message because the content type 'application/x-www-form-urlencoded' was not the expected type 'text/xml; charset=utf-8'"
    动态sql语句输出参数
    vue数据更改视图不更新问题----深入响应式原理
    实现 页面某些 效果
    自己封装 vue 组件 和 插件
    单页面应用的 打包部署(vue-cli、creat-react-app )
  • 原文地址:https://www.cnblogs.com/bclshuai/p/12233843.html
Copyright © 2011-2022 走看看