The directory where hbase-site.xml is located should be in your client
side classpath. Can you check if this is the case (dump your classpath
right before you call to check if the directory is present).

Here's the HBaseConfiguration.addHBaseResources code.
http://javasourcecode.org/html/open-source/hbase/hbase-0.90.3/org/apache/hadoop/hbase/HBaseConfiguration.java.html#line.85
  public static Configuration addHbaseResources(Configuration conf) {
    conf.addResource("hbase-default.xml");
    conf.addResource("hbase-site.xml");

    checkDefaultsVersion(conf);
    checkForClusterFreeMemoryLimit(conf);
    return conf;
  }

As you can see ... it expects hbase-site.xml to be in the classpath.

If your file is located in some subdirectory of your classpath base,
you would have to give the full path. Or use getResourceAsStream() to
get it as an InputStream and then use your
Configuration.addResource(InputStream) approach to load it.

--Suraj


On Mon, Nov 26, 2012 at 5:02 PM, Mohit Anchlia <mohitanch...@gmail.com> wrote:
> Thanks! This is the client code I was referring to. The below code doesn't
> seem to work. Also I tried HBaseConfiguration.addHBaseResrouce and that
> didn't work either. Is there any other way to make it configurable outside
> the resource?
>
> On Mon, Nov 26, 2012 at 2:39 PM, Stack <st...@duboce.net> wrote:
>
>> On Mon, Nov 26, 2012 at 2:16 PM, Mohit Anchlia <mohitanch...@gmail.com>
>> wrote:
>> > I have a need to move hbas-site.xml to an external location. So in order
>> to
>> > do that I changed my configuration as shown below. But this doesn't seem
>> to
>> > be working. It picks up the file but I get error, seems like it's going
>> to
>> > the localhost. I checked hbase-site.xml in the directory and the
>> zookeeper
>> > nodes are correctly listed.
>> >
>> >
>> > [11/26/2012 14:09:31,480] INFO apache.zookeeper.ClientCnxn
>> >
>> [[web-analytics-ci-1.0.0-SNAPSHOT].AsyncFlow.async2.02-SendThread(localhost.localdomain:2181)]():
>> > Opening socket connection to server localhost.localdomain/127.0.0.1:2181
>> >
>> > -----
>> >
>> > changed from
>> >
>> > HBaseConfiguration.create()
>> >
>> > to
>> >
>> >
>> > config = *new* Configuration();
>> >
>> > config.addResource(*new* Path(*CONF_FILE_PROP_NAME*));
>> >
>> > *log*.info("Config location picked from:" + prop);
>>
>>
>> The above looks basically right but IIRC, this stuff can be tricky
>> adding in new resources and making sure stuff is applied in order --
>> and then there is 'final' configs that are applied after yours.
>>
>> You could try copying the hbase conf dir to wherever, amending it to
>> suit your needs and then when starting hbase, add '--config
>> ALTERNATE_CONF_DIR'.
>>
>> St.Ack
>>

Reply via email to