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

  • 相关阅读:
    TypeScript中处理大数字(会丢失后面部分数字)
    多行字符串换行符(`) + 模板字符串
    ES6 阮一峰阅读学习
    ms转成00:00:00的时间格式化
    android侧滑效果,SlidingMenu配置
    Android Developers:按需求加载视图
    Python测试代理ip是否有效
    JavaScript去除数组中重复的数字
    Python连接redis
    [已解决]报错: Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
  • 原文地址:https://www.cnblogs.com/bclshuai/p/12233843.html
Copyright © 2011-2022 走看看