That sounds like a bug in TRUNK. Please file an issue Charles. Thanks, St.Ack
On Mon, Oct 11, 2010 at 3:32 PM, Charles Thayer <[email protected]> wrote: > We're using a pre-existing zookeeper cluster (HBASE_MANAGES_ZK=false), > and trying to port some code from 0.20 to 0.89, but hbase fails > to start with > > Couldnt start ZK at requested address of 2181 [..blah..] 2182 > (from ./src/main/java/org/apache/hadoop/hbase/master/HMaster.java) > > Because port 2181 is already running our separate zk instance. > > I commented out (and used if(false)) to work around the issue > and now "hbase shell" appears to work (see below). > > Is anyone else seeing this problem? or does anyone know if it's repaired > in trunk or being worked on, before I file a ticket? > > Thanks, > /charles > > PS. Around line HMaster.java:1291 (0.89.20100726) > > if (cmd.getArgList().contains("start")) { > try { > // Print out vm stats before starting up. > RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); > if (runtime != null) { > LOG.info("vmName=" + runtime.getVmName() + ", vmVendor=" + > runtime.getVmVendor() + ", vmVersion=" + > runtime.getVmVersion()); > LOG.info("vmInputArguments=" + runtime.getInputArguments()); > } > // If 'local', defer to LocalHBaseCluster instance. Starts master > // and regionserver both in the one JVM. > if (LocalHBaseCluster.isLocal(conf)) { > if (false) { > final MiniZooKeeperCluster zooKeeperCluster = > new MiniZooKeeperCluster(); > File zkDataPath = new > File(conf.get("hbase.zookeeper.property.dataDir")); > int zkClientPort = > conf.getInt("hbase.zookeeper.property.clientPort", 0); > if (zkClientPort == 0) { > throw new IOException("No config value for > hbase.zookeeper.property.clientPort"); > } > > zooKeeperCluster.setTickTime(conf.getInt("hbase.zookeeper.property.tickTime", > 3000)); > zooKeeperCluster.setClientPort(zkClientPort); > int clientPort = zooKeeperCluster.startup(zkDataPath); > if (clientPort != zkClientPort) { > String errorMsg = "Couldnt start ZK at requested address of " > + > zkClientPort + ", instead got: " + clientPort + ". > Aborting. > Why? " + > "Because clients (eg shell) wont be able to find this ZK > quorum"; > System.err.println(errorMsg); > throw new IOException(errorMsg); > } > conf.set("hbase.zookeeper.property.clientPort", > Integer.toString(clientPort)); > } > // Need to have the zk cluster shutdown when master is shutdown. > // Run a subclass that does the zk cluster shutdown on its way > out. > LocalHBaseCluster cluster = new LocalHBaseCluster(conf, 1, > LocalHMaster.class, HRegionServer.class); > // > ((LocalHMaster)cluster.getMaster()).setZKCluster(zooKeeperCluster); > cluster.startup(); > } else { > HMaster master = constructMaster(masterClass, conf); > if (master.shutdownRequested.get()) { > LOG.info("Won't bring the Master up as a shutdown is > requested"); > return; > } > master.start(); > } > } catch (Throwable t) { > LOG.error("Failed to start master", t); > System.exit(-1); > } > >
