Apache Whirr (retired)
  1. Apache Whirr (retired)
  2. WHIRR-338

byon cluster with hostnames defined in /etc/hosts

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.6.0
    • Component/s: core
    • Labels:
      None

      Description

      Basically the subject combined with the single-line patch should make it clear, what follows is the long story.

      I am unable to get HBase to work when using BYON nodes due to the following error:

      2011-07-14 14:46:07,837 FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
      java.lang.IllegalArgumentException: Wrong FS: hdfs://192.168.56.11:8020/hbase, expected: hdfs://ubuntutest2
              at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:410)
              at org.apache.hadoop.hdfs.DistributedFileSystem.checkPath(DistributedFileSystem.java:106)
      

      The situation is I'm using two VirtualBox instances whose hostnames I defined manually through /etc/hosts

      In the byon yaml file, I specify the host by IP address:

          - id: ubuntutest2
            hostname: 192.168.56.11
      

      When specifying the hostname instead, I get an error when starting Whirr:

      invalid IP address: ubuntutest2

      This message is produced in the constructor of Cluster.Instance, earlier Whirr got the address by calling NodeMetadata.getPublicAddresses(), so jclouds returns there a hostname rather than an address (which might be considered a bug in jclouds, but even if it returned an ip address, the problem described next stays true).

      Back to the case where I specify the IP address in the byon yaml:

      The address in the hdfs URL is determined in HBaseMasterClusterActionHandler and comes down to:

      instance.getPublicAddress().getHostName()

      which is determined by xbill/dnsjava (see DnsUtil), which does not make use of /etc/hosts.

      As fix (see attached patch), I propose to fall back to Java's getCanonicalHostName() in case dnsjava did not return any results.

        Activity

          People

          • Assignee:
            Bruno Dumon
            Reporter:
            Bruno Dumon
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development