zoukankan      html  css  js  c++  java
  • hadoop如何处理长时间运行不完成的map/reduce 任务?

    如果某一个任务在某个节点上长时间不完成,怎么手动干预来处理这种情况?
    董西成博客上找到的回答:
    hadoop中有三种特殊的任务,failed task,killed task和speculative task.
    其中,failed task是由于硬件、程序bug等原因异常退出的任务,比如磁盘空间不足等,
     killed task是Hadoop主动将其杀死的任务,比如一个任务占用过多的内存,为了不影响其他作业的正常运行,
     Hadoop需将这种恶心的任务杀死,以保证为所有作业提供一个“和谐”的任务执行环境。
     failed task再次调度时不会在那些曾经失败的节点上运行,而killed task则可能被再次调度到任何一个节点上(包括曾经失败多的节点),
     因此,如果你目测一个作业的任务运行很慢,你可以使用“bin/hadoop job -fail-task xxx”让这个任务换一个节点重新运行,
     而不是使用“bin/hadoop job -kill-task xxx”。 speculative task是Hadoop针对那些慢任务(慢任务会拖慢一个作业的完成时间),
     为他们额外启动一个备份任务,一起处理同一份数据,哪个先执行完,则采用哪个的处理结果,同时将另外一个任务杀死。
     也就是说,推测执行是Hadoop对慢任务的一种优化机制(实际上就是“空间换时间”的经典优化思想),不属于容错调度范畴。

  • 相关阅读:
    C# STUDY
    C# 通过线程来控制进度条(转)--讲解多线程对界面的操作
    Android开发问题笔记
    win7 Android环境搭配
    Git-Flow
    Synchronizing with Remote Repositories
    smartgit document merge
    smartgit document Rebase
    手把手教你玩转Git分布式版本控制系统!
    (二)代理模式详解(包含原理详解)
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/5035246.html
Copyright © 2011-2022 走看看