当前位置: 首页>>hadoop 1.0>> 阅读正文

Hadoop MapReduce容错性分析

Category: hadoop 1.0 View: 211,833 Author: Dong
,

  • 评论 (8)
  • 引用通告 (0)
发表评论 发起引用

  • 1楼LGG 回复

    Post: 2012-07-14 15:14

    您好!想询问:假设某job只有1个reduce。在进行reduce task时挂掉了。这是还会尝试一个新的Reduce么?如果尝试那么map端通过HTTP拷贝过来的数据怎么办?(因为map产生输出并通过HTTP将数据拷贝给Reducer就完成使命了)
    例如:3个map 1个reduce。某tasktracker所在的节点硬盘特别小,装不下当前map的中间产生的输出数据,那么当前tasktracker运行reduce肯定要失败。那么这个时候可能会重新挑选一个tasktracker来运行reduce task么?因为中间数据都是存放在本地磁盘的?那么新的tasktracker上并没有map的数据,这时候应该怎么办? <( ̄oo, ̄)/

    [回复]

    Dong 回复:

    (1)如果有一个reduce挂掉仍然会尝试新的reduce。 Hadoop允许用户为map和reduce分别设置一个失败尝试次数(mapred.map.max.attempts和mapred.reduce.max.attempts),默认是4,也就是尝试4次。每次尝试换成另一个新的节点。
    (2)如果某个节点上磁盘空间不够的话,JobTracker可以提前检测到。 因为TaskTracker每隔3s(默认值,可修改)向JobTracker汇报心跳,心跳信息中包含当前磁盘剩余空间,一旦剩余空间超过一定阈值,则不再向该节点分配新的任务
    (3)当前Hadoop已经做了优化,一旦一个任务失败后,会立刻清理它的临时目录。对于reduce task而言,从Map那边拷贝的数据全部放在临时目录中,因而一旦失败后磁盘空间便会被释放。
    (4)对于一个job,它的map task产生的中间结果是不会清理的,直到所有reduce task完成。这是对reduce task容错的需要,也是map task将中间结果写磁盘而不是直接传递给reduce task的原因。

    [回复]

    LGG 回复:

    非常感谢您的回复!自己还需要更细致的读源码啦~~(●′ω`●)

    [回复]

  • 2楼小蚂蚁 回复

    Post: 2012-08-16 07:06

    我想问下就是如何知道是jobTracker挂掉?是会报错给用户么?

    [回复]

  • 3楼Dong 回复

    Post: 2012-08-16 14:07

    JobTracker进程不在了, 提交作业失败或者正在运行的作业全部失败。

    [回复]

  • 4楼虾米 回复

    Post: 2012-11-07 05:53

    运行一个wordcount程序,数据能不能按照自己的要求分布在各个datanode上,源码里MapBlock类里的block与其datanode的映射关系怎么来的?哪些类实现的?

    [回复]

    Dong 回复:

    数据能不能按照自己的要求分布在各个datanode上?
    当前Hadoop还不支持这么细粒度的控制。

    [回复]

    虾米 回复:

    那你知不知道,源码里BlocksMap类里的block与其datanode的映射关系怎么来的?哪些类实现的?

    [回复]

  • 5楼Eric 回复

    Post: 2013-01-11 03:01

    如果JobTask超时啦(10分钟),能保证在此间隔数据不变吗?如果数据变啦,新的JobTask取得数据与其他已经结束的JobTask的Reduce结果一致吗?

    [回复]

    Dong 回复:

    一旦job启动,它运行的整个过程中,输入数据不应该修改,因为数据已经分配给了各个task(处理数据所在的文件,偏移量等信息),如果运行过程中数据进行了修改,会发生不可预计的错误!

    [回复]

    miwa 回复:

    请问一下,如果任务运行失败后,再次调度该任务之前,能否修改一下该任务对应的分片的起始位置与长度?如果可以的话,需要大概在哪个类中做修改?

    [回复]

  • 6楼whpcrs 回复

    Post: 2013-08-08 03:16

    请问:jobtracker挂掉后人工重启,失败的作业是需要重新提交再被运行,还是直接被重启后的jobtracker从头运行?配置参数让jobktracker恢复已完成的task,存在的潜在安全问题好象不能被最下面的解决方法完全解决吧?

    [回复]

    Dong 回复:

    作业恢复有三个级别,一个是作业级别,即作业不用重新提交,但是会从头开始运行;一个是任务级别,即运行完成的任务无需重新运行,但是正在运行或者未运行的需从头开始运行;最后一个是record级别,即重启后,所有任务状态不变,正在运行的还在运行,Hadoop 1.0只做了第一个级别,2.0做到了第二个级别。什么潜在的安全问题?

    [回复]

    whpcrs 回复:

    jobtracker章下有个链接,设置job recovery让作业恢复到已完成任务无须重新运行,但由于缓存原因会出现BUG,最下面的解决方法是周期刷log到硬盘,我觉得这个解决方法并不能完全解决缓存带来的问题。但根据你的回复,我在想:如果Hadoop1.0里jobtracker接点所在的机器挂了,就没办法重启了,整个Hadoop机群就不能用了,是吗?

    [回复]

    Dong 回复:

    是这样的,MapReduce这种计算框架,跟HDFS不一样,恢复可靠性要求没那么高,如果一个已经完成的任务没有恢复成功,我们再重新算一次行不,这个代价不是太大吧,相比HDFS,完全可忍受 ,你觉得呢?
    Hadoop 1.0中jobtracker挂了 整个集群是不可用。 CDH3版本解决了jobtracker单点故障,下一代Hadoop完全解决了。

    [回复]

    whpcrs 回复:

    企业只愿用免费的稳定的hadoop1.2.1,不会选择下一代Hadoop。等上面的人问:jobtracker单点怎么解决啊?答:重启就好了。想想就觉得搞笑 T.T
    谢谢您的解惑

    [回复]

    Dong 回复:

    下一代马上会出稳定版,最迟年末, 不会太久了。

    [回复]

  • 7楼Alethea 回复

    Post: 2013-10-15 01:42

    I have to thank you for the efforts you have put in penning this blog.
    I’m hoping to view the same high-grade blog posts from you
    later on as well. In fact, your creative writing abilities has motivated
    me to get my own, personal blog now ;)

    [回复]

  • 8楼Tod's Pas Cher 回复

    Post: 2014-06-12 23:52

    For a student, Chaussures Tod’s Pas Cher Chaussures Tod’s Pas Cher, a situation like this would be the ideal time to Tod’s Pas Cher introduce the necessary skills for writing a research paper. You must first find an area where you would like to place the pond. We always need to know what vision we’re headi Mocassins Ferrari Femme ng towards.
    Also you may wan

    [回复]

目前还没有任何Trackbacks和Pingbacks.
发表评论