[
https://issues.apache.org/jira/browse/HBASE-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nitay Joffe updated HBASE-1144:
-------------------------------
Attachment: hbase-1144.patch
I've attached a patch which is an update of the patches from HBASE-546.
Replying to comments from https://issues.apache.org/jira/browse/HBASE-546:
> Jean-Daniel Cryans - 21/Jan/09 07:33 AM
> Nitay,
>
> The config in hbase-default.xml should be expressed as numbers and not
> operations like zookeeper.pause should be 2000 and not 2 * 1000. Also, since
> zookeeper.servers requires to be set for a fully distributed HBase,so you
> should modify the src/java/overview.html file.
Fixed.
> stack - 21/Jan/09 02:46 PM
> For zookeeper.servers, you specify a quorum by listing the quorum members?
Yes. This parameter feeds directly into the ZooKeeper object constructor. For
example, I'm using in my config:
<name>zookeeper.servers</name>
<value>aa0-001-13.u.powerset.com:2181,aa0-000-12.u.powerset.com:2181,aa0-000-13.u.powerset.com:2181,aa0-000-14.u.powerset.com:2181...
> When single-instance of zk that has been started by hbase runs, where does it
> write its logs. Can that be configurable?
>
> What if I specify a full-path for zookeeper.znode.rootserver, will that write
> root region location outside of zookeeper.znode.parent?
Not as it was. Now it will. Fixed.
> (Regards a question you asked on IRC a few days ago) If things like
> DEFAULT_ZOOKEEPER_SERVERS , are only used in one place, I'd say don't need to
> be in HConstants... just do it in place used. If used more than once, its
> good to define HConstants AND they are used by more than one class
> (otherwise, do the define inside that class)
>
> Should below be synchronized nitay?
>
> + private ZooKeeperWrapper getZooKeeperWrapper() throws IOException {
>
> Is there danger that two threads could be asking for it at about same time?
Yes, good call. Fixed.
> This is an interesting change Nitay: - public HServerAddress
> findRootRegion();... removing it from the Master. I like it. ZK rules now!
>
> Below....
> + * Copyright 2008 The Apache Software Foundation
> ... should be 2009
Fixed.
> Below has trailing '\'
>
> + * Wraps a ZooKeeper instance and adds HBase specific functionality.\
Fixed.
> Can these be final in ZKWrapper?
>
> + private ZooKeeper zooKeeper;
> + private WatcherWrapper watcher;
Fixed.
> ... same in HRS:
>
> + private ZooKeeperWrapper zooKeeperWrapper;
Fixed.
> In below...
>
> + rootRegionZNode = parentZNode + "/" + rootServerZNodeName;
>
> ... does ZK have a define for path separator?
Not that I can see in the code. I filed a JIRA for this:
https://issues.apache.org/jira/browse/ZOOKEEPER-277. I put in my own constant
for this with a comment to fix when that issue gets resolved.
> We don't throw exception if we fail to get root:
>
> + try {
> + data = zooKeeper.getData(rootRegionZNode, false, null);
> + } catch (InterruptedException e) {
> + return null;
> + } catch (KeeperException e) {
> + return null;
> + }
>
> ... is that good? Does caller handle null?
Yes. There are two callers to this method:
HConnectionManager:
if (outOfSafeMode) {
rootRegionAddress = zooKeeperWrapper.readRootRegionLocation();
}
if (rootRegionAddress == null) {
try {
if (LOG.isDebugEnabled()) {
LOG.debug("Sleeping " + getPauseTime(tries) +
"ms, waiting for root region.");
}
Thread.sleep(getPauseTime(tries));
} catch (InterruptedException iex) {
// continue
}
localTimeouts++;
}
HRegionServer:
HServerAddress rootServer = zooKeeperWrapper.readRootRegionLocation();
if (rootServer != null) {
// By setting the root region location, we bypass the wait imposed on
// HTable for all regions being assigned.
this.connection.setRootRegionLocation(
new HRegionLocation(HRegionInfo.ROOT_REGIONINFO, rootServer));
haveRootRegion.set(true);
}
> Whats story w/ data in ZK? Its byte arrays? Should they be UTF-8? If so,
> Bytes.toBytes over in hbase util might help. E.g. rather than + String
> addressString = new String(data); ...
> which could give different answers if the client was in different local than
> original writer, be explicit its utf-8 and do Bytes.toBytes(....) when
> writing and Bytes.toString(... when getting?
Good call. I was doing the Bytes.toBytes() side of things, but not the
Bytes.toString() side. Fixed.
> Store the ROOT region location in Zookeeper
> -------------------------------------------
>
> Key: HBASE-1144
> URL: https://issues.apache.org/jira/browse/HBASE-1144
> Project: Hadoop HBase
> Issue Type: Sub-task
> Reporter: Jean-Daniel Cryans
> Assignee: Nitay Joffe
> Attachments: hbase-1144.patch
>
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.