Details
Description
At present there are few configs which needs to be present in hbase-site or default xml for it to work. following are the list.
hbase.canary.threads.num
hbase.canary.sink.class
hbase.client.keytab.file
hbase.client.kerberos.principal
Execution in secure expects keytab and princ to be present
2016-02-05 05:58:44,024 ERROR [main] hbase.AuthUtil - Error while trying to perform the initial login: Running in secure mode, but config doesn't have a keytab java.io.IOException: Running in secure mode, but config doesn't have a keytab at org.apache.hadoop.security.SecurityUtil.login(SecurityUtil.java:236) at org.apache.hadoop.hbase.security.User$SecureHadoopUser.login(User.java:392) at org.apache.hadoop.hbase.security.User.login(User.java:259) at org.apache.hadoop.hbase.security.UserProvider.login(UserProvider.java:116) at org.apache.hadoop.hbase.AuthUtil.launchAuthChore(AuthUtil.java:64) at org.apache.hadoop.hbase.tool.Canary.main(Canary.java:1146) Exception in thread "main" java.io.IOException: Running in secure mode, but config doesn't have a keytab at org.apache.hadoop.security.SecurityUtil.login(SecurityUtil.java:236) at org.apache.hadoop.hbase.security.User$SecureHadoopUser.login(User.java:392) at org.apache.hadoop.hbase.security.User.login(User.java:259) at org.apache.hadoop.hbase.security.UserProvider.login(UserProvider.java:116) at org.apache.hadoop.hbase.AuthUtil.launchAuthChore(AuthUtil.java:64) at org.apache.hadoop.hbase.tool.Canary.main(Canary.java:1146)
public static void main(String[] args) throws Exception { final Configuration conf = HBaseConfiguration.create(); AuthUtil.launchAuthChore(conf); int numThreads = conf.getInt("hbase.canary.threads.num", MAX_THREADS_NUM); ExecutorService executor = new ScheduledThreadPoolExecutor(numThreads); Class<? extends Sink> sinkClass = conf.getClass("hbase.canary.sink.class", StdOutSink.class, Sink.class); Sink sink = ReflectionUtils.newInstance(sinkClass); int exitCode = ToolRunner.run(conf, new Canary(executor, sink), args); executor.shutdown(); System.exit(exitCode); }
In main class these params should be parsed and updated. else for any change to these value hbase-stie.xml needs to be updated