Hadoop HDFS
  1. Hadoop HDFS
  2. HDFS-1384

NameNode should give client the first node in the pipeline from different rack other than that of excludedNodes list in the same rack.

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Incomplete
    • Affects Version/s: 0.20.1, 0.20-append
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      We saw a case that NN keeps giving client nodes from the same rack, hence an exception
      from client when try to setup the pipeline. Client retries 5 times and fails.

      Here is more details. Support we have 2 rack

      • Rack 0: from dn1 to dn7
      • Rack 1: from dn8 to dn14

      Client asks for 3 dns and NN replies with dn1, dn8 and dn9, for example.
      Because there is network partition, so client doesn't see any node in Rack 0.
      Hence, client add dn1 to excludedNodes list, and ask NN again.
      Interestingly, NN picks a different node (from those in excludedNodes) in Rack 0,
      and gives back to client, and so on. Client keeps retrying and after 5 times of retrials,
      write fails.

      This bug was found by our Failure Testing Service framework:
      http://www.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-98.html
      For questions, please email us: Thanh Do (thanhdo@cs.wisc.edu) and
      Haryadi Gunawi (haryadi@eecs.berkeley.edu)

        Activity

        Hide
        dhruba borthakur added a comment -

        This bug has been fixed in trunk because the client sends the excluded list to the namenode with the addBlock RPC. The NN ensures that it does not return a datanode from the excluded list.

        This bug is still present in the 0.20-append branch

        Show
        dhruba borthakur added a comment - This bug has been fixed in trunk because the client sends the excluded list to the namenode with the addBlock RPC. The NN ensures that it does not return a datanode from the excluded list. This bug is still present in the 0.20-append branch
        Hide
        Thanh Do added a comment -

        Dhruba,

        I think I make a bad description of the bug.
        The excludedList does the job.
        But in this case, the excludedList contains only nodes from rack 0,
        and when client retries, NN give it the first dn in the pipe which is
        also in rack 0 too. Hence when client tries to create the pipe,
        it contacts the first dn and fails (because of network partition).
        So the problem here is that NN keeps giving client node that
        from the same rack (in this case, i.e rack 0). And because
        client cannot see any node in rack 0, it retries 5 times and fail.

        Show
        Thanh Do added a comment - Dhruba, I think I make a bad description of the bug. The excludedList does the job. But in this case, the excludedList contains only nodes from rack 0, and when client retries, NN give it the first dn in the pipe which is also in rack 0 too. Hence when client tries to create the pipe, it contacts the first dn and fails (because of network partition). So the problem here is that NN keeps giving client node that from the same rack (in this case, i.e rack 0). And because client cannot see any node in rack 0, it retries 5 times and fail.
        Hide
        dhruba borthakur added a comment -

        in ur example, is the client also in rack 0?

        Show
        dhruba borthakur added a comment - in ur example, is the client also in rack 0?
        Hide
        Allen Wittenauer added a comment -

        Closing as stale.

        Show
        Allen Wittenauer added a comment - Closing as stale.

          People

          • Assignee:
            Unassigned
            Reporter:
            Thanh Do
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development