Jim,

The HdfsZooInstance looks for accumulo-site.xml on the classpath to find
the directory in HDFS to look for the instance ID. If accumulo-site.xml is
not on the classpath then it will default to /accumulo, which is probably
different from the directory you are using. accumulo-site.xml also includes
a shared secret which is used to construct the system credentials. This is
the standard way that servers communicate with each other.

Clients, however, typically don't use HdfsZooInstance. You might try
replacing that with ZooKeeperInstance, and then construct your own AuthInfo
object (i.e. new
AuthInfo("user",ByteBuffer.wrap("password".getBytes()),zkInstance.getInstanceID())
) instead of trying to use the system credentials.

Cheers,
Adam

On Sun, Jul 15, 2012 at 10:52 PM, Jim Klucar <klu...@gmail.com> wrote:

> I'm trying to get the master stats in the same way the monitor server
> does, but I keep having issues.
>
> The code I'm using is from the GetMasterStats.java program:
>
>     MasterClientService.Iface client = null;
>     MasterMonitorInfo stats = null;
>     try {
>       client =
> MasterClient.getConnectionWithRetry(HdfsZooInstance.getInstance());
>       stats = client.getMasterStats(null,
> SecurityConstants.getSystemCredentials());
>     } finally {
>       if (client != null)
>         MasterClient.close(client);
>     }
>
> The problem is that the HdfsZooInstance can never find the instance
> data, even though it's there. I can create a ZooKeeperInstance just
> fine, but passing that into the MasterClient fails the same way.
>
> Caused by: java.lang.RuntimeException: Accumulo not initialized, there
> is no instance id at /accumulo/instance_id
>         at
> org.apache.accumulo.core.client.ZooKeeperInstance.getInstanceIDFromHdfs(ZooKeeperInstance.java:263)
>         at
> org.apache.accumulo.server.conf.ZooConfiguration.getInstance(ZooConfiguration.java:65)
>         at
> org.apache.accumulo.server.conf.ServerConfiguration.getZooConfiguration(ServerConfiguration.java:49)
>         at
> org.apache.accumulo.server.conf.ServerConfiguration.getSystemConfiguration(ServerConfiguration.java:58)
>         at
> org.apache.accumulo.server.client.HdfsZooInstance.<init>(HdfsZooInstance.java:62)
>         at
> org.apache.accumulo.server.client.HdfsZooInstance.getInstance(HdfsZooInstance.java:70)
>         at
> org.apache.accumulo.server.security.SecurityConstants.makeSystemPassword(SecurityConstants.java:58)
>         at
> org.apache.accumulo.server.security.SecurityConstants.<clinit>(SecurityConstants.java:43)
>         ... 91 more
>
> Any ideas as to what I'm missing?
>

Reply via email to