Hadoop Common
  1. Hadoop Common
  2. HADOOP-4603

Installation on Solaris needs additional PATH setting

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 0.18.2
    • Fix Version/s: None
    • Component/s: fs
    • Labels:
      None
    • Environment:

      Solaris 10 x86

    • Hadoop Flags:
      Incompatible change

      Description

      A default installation as outlined in the docs won't start on Solaris 10 x86. The "whoami" utility is in path "/usr/ucb" on Solaris 10, which isn't in the standard PATH environment variable unless the user has added that specifically. The documentation should reflect this.

      Solaris 10 also seemed to throw NPEs if you didn't explicitly set the IP address to bind the servers to. Simply overriding the IP address fixes the problem.

      1. id_instead_of_whoami.diff
        2 kB
        Kai Mosebach
      2. HADOOP-4603
        1 kB
        Kohsuke Kawaguchi

        Issue Links

          Activity

          Hide
          steve_l added a comment -

          Stack traces of any NPEs would be handy.

          Show
          steve_l added a comment - Stack traces of any NPEs would be handy.
          Hide
          Kai Mosebach added a comment -

          Uses sh, id, sed, cut instead of whoami

          Show
          Kai Mosebach added a comment - Uses sh, id, sed, cut instead of whoami
          Hide
          Tsz Wo Nicholas Sze added a comment -

          Currently, we don't require sh, cut and sed. These changes may break existing systems. BTW, we do assume bash.

          Show
          Tsz Wo Nicholas Sze added a comment - Currently, we don't require sh, cut and sed. These changes may break existing systems. BTW, we do assume bash.
          Hide
          Kai Mosebach added a comment -

          ok, good to know...

          bash might be missing on systems like Solaris and BSD though and/or in a different path.

          Show
          Kai Mosebach added a comment - ok, good to know... bash might be missing on systems like Solaris and BSD though and/or in a different path.
          Hide
          Kohsuke Kawaguchi added a comment -

          I think a better change is for Hadoop to simply try /usr/ucb/whoami if exec whoami fails. This code executes only once, so I don't see any downside of trying multiple locations for better user experience.

          Another possibility is to use JNA (http://jna.dev.java.net/) and make a libc call from within Java.

          Show
          Kohsuke Kawaguchi added a comment - I think a better change is for Hadoop to simply try /usr/ucb/whoami if exec whoami fails. This code executes only once, so I don't see any downside of trying multiple locations for better user experience. Another possibility is to use JNA ( http://jna.dev.java.net/ ) and make a libc call from within Java.
          Hide
          Kohsuke Kawaguchi added a comment -
          Show
          Kohsuke Kawaguchi added a comment - A patch to call /usr/ucb/whoami is at http://github.com/kohsuke/hadoop/commit/0fe42e97df3a3d4fec9bb503f3eee266eadd1e02
          Hide
          Kohsuke Kawaguchi added a comment -

          Patch extracted from Git

          Show
          Kohsuke Kawaguchi added a comment - Patch extracted from Git
          Hide
          Allen Wittenauer added a comment -

          Calling /usr/ucb/whoami directly is definitely the way to go, IMO. It is going to exist on all but the most hardened of Solaris boxes.

          Show
          Allen Wittenauer added a comment - Calling /usr/ucb/whoami directly is definitely the way to go, IMO. It is going to exist on all but the most hardened of Solaris boxes.
          Hide
          Harsh J added a comment -

          Hey Allen, if you can +1, we can commit changes similar to Kohsuke's into the trunk to at least have whoami working on Solaris (its a start…).

          Let me know if there really is no better way for sure.

          Show
          Harsh J added a comment - Hey Allen, if you can +1, we can commit changes similar to Kohsuke's into the trunk to at least have whoami working on Solaris (its a start…). Let me know if there really is no better way for sure.
          Hide
          Allen Wittenauer added a comment -

          This is essentially fixed by using the native libraries in newer releases of Hadoop. The problem is that the native code is completely non-portable and the committer community has shown no real desire to make that code portable. I don't believe we should encourage folks to run without the native code because the performance is likely to be seriously horrendous. (My anecdotal experience says the NN in 0.20.20x is 10-15% slower compared to 0.20.2).

          At this point, I'd close this as won't fix, just like I did all of my portability JIRAs (including some with patches). I think pretending that we care about portability is sort of silly at this point when it has been demonstrated over and over that we don't.

          Show
          Allen Wittenauer added a comment - This is essentially fixed by using the native libraries in newer releases of Hadoop. The problem is that the native code is completely non-portable and the committer community has shown no real desire to make that code portable. I don't believe we should encourage folks to run without the native code because the performance is likely to be seriously horrendous. (My anecdotal experience says the NN in 0.20.20x is 10-15% slower compared to 0.20.2). At this point, I'd close this as won't fix, just like I did all of my portability JIRAs (including some with patches). I think pretending that we care about portability is sort of silly at this point when it has been demonstrated over and over that we don't.

            People

            • Assignee:
              Unassigned
              Reporter:
              Jon Brisbin
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:

                Development