Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HBase ERROR: hbase-default.xml file seems to be for and old version of HBase (null)

Tags:

hadoop

hbase

I am trying to write a program to connect to HBase. However when I execute following command HBaseConfiguration.create(); I get following error: .

"hbase-default.xml file seems to be for and old version of HBase (null), this version is 0.92.1-cdh4.1.2. When I dig deep and debug inside observe following:

    class HBaseConfiguration
        private static void checkDefaultsVersion(Configuration conf) {
            if (conf.getBoolean("hbase.defaults.for.version.skip", Boolean.FALSE))return;                                                                                                 
            String defaultsVersion = conf.get("hbase.defaults.for.version");
            String thisVersion = VersionInfo.getVersion();
            if (!thisVersion.equals(defaultsVersion)) {
                    throw new RuntimeException(
                    "hbase-default.xml file seems to be for and old version of HBase (" +
                        defaultsVersion + "), this version is " + thisVersion);
            }
        }

In my case HBase returns default version as null, I am not sure why its returning as null as I checked the corresponding entry in hbase-default.xml packaged with the HBase.jar it has correct entry.

When I try the same thing from a standalone program it works as expected.

Guyz, Please let me know if you have any questions.

Thanks in advance, Rohit

like image 656
Rohit Avatar asked May 11 '13 13:05

Rohit


3 Answers

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property>
        <name>hbase.defaults.for.version.skip</name>
        <value>true</value>
    </property>
</configuration>

Add this to a hbase-default.xml and put the file in the classpath or resource foldr. I got it when i ran from within spring hadoop environment. By adding above file to reosurce folder of the job jar i was able to solve tis-

like image 111
user373480 Avatar answered Nov 17 '22 12:11

user373480


I've been getting this error using HBase1.1.1. I created a simple HBase client and it worked fine. Then I built a simple RMI service, and that worked fine. But when I tried putting my simple HBase query code into RMI service I started getting this error on the HBaseConfiguration.create() call. After playing a bit, I found that the HBaseConfiguration.create() call works OK if placed before the security manager stuff that is in my main(). I get the error if the call is placed after block of code containing security manager calls...

Configuration conf = HBaseConfiguration.create(); // This works
if(System.getSecurityManager() == null)
{
  System.setSecurityManager(new SecurityManager());
} // End if
// Configuration conf = HBaseConfiguration.create(); // This fails

I get the error if the create() call happens in main() after that security manager block, or in code within the class that is instantiated by main(). I don't get the error if create() is called within a static{ } block in my RMI service class (which I believe gets called before main()), or in main() before the security manager block, as shown.

BTW, the jar files that I include in my class path in order to get a minimal client to run are the following: commons-codec-1.9.jar, commons-collections-3.2.1.jar, commons-configuration-1.6.jar, commons-lang-2.6.jar, commons-logging-1.2.jar, guava-12.0.1.jar, hadoop-auth-2.5.1.jar, hadoop-common-2.5.1.jar, hbase-client-1.1.1.jar, hbase-common-1.1.1.jar, hbase-hadoop2-compat-1.1.1.jar, hbase-it-1.1.1-tests.jar, hbase-protocol-1.1.1.jar, htrace-core-3.1.0-incubating.jar, log4j-1.2.17.jar, netty-all-4.0.23.Final.jar, protobuf-java-2.5.0.jar, slf4j-api-1.7.7.jar, slf4j-log4j12-1.7.5.jar

like image 32
Jim Robertson Avatar answered Nov 17 '22 11:11

Jim Robertson


finally found the workaround to this problem...

The problem is hbase-default.xml is not included in your classpath.

I added hbase-default.xml in target/test-classes ( it will vary in your case ), you can just add hbase-default.xml in various folder and see what works for you.

NOTE : This is just workaround, not the solution

Solution will be load the proper jars ( which I haven't figured out yet )

like image 1
Abhishek Goel Avatar answered Nov 17 '22 12:11

Abhishek Goel