i have google bigtable cluster created. i'm trying connect following this tutorial trying download cli project , build it, when try execute command fails. tried build simpler example of connector. here is:
import org.apache.hadoop.hbase.client.admin; import org.apache.hadoop.hbase.client.connection; import org.apache.hadoop.hbase.client.connectionfactory; import org.apache.log4j.logger; import java.io.ioexception; import java.util.arraylist; public class bigtabletestconnector { private final static logger logger = logger.getlogger(bigtabletestconnector.class); public void testconnection() throws masternotrunningexception, zookeeperconnectionexception { try { connection connection = connectionfactory.createconnection(); string tablename = "testtable"; arraylist<string> columnfamilies = new arraylist<string>(); columnfamilies.add("columnfamily1"); columnfamilies.add("columnfamily2"); columnfamilies.add("juststring"); columnfamilies.add("uhhaha"); admin admin = connection.getadmin(); htabledescriptor tabledescriptor = new htabledescriptor(tablename); (string colfamily : columnfamilies) { tabledescriptor.addfamily(new hcolumndescriptor(colfamily)); } admin.createtable(tabledescriptor); } catch (ioexception e) { e.printstacktrace(); } logger.info("done"); } public static void main(string... args) throws exception { bigtabletestconnector bttc = new bigtabletestconnector(); bttc.testconnection(); } }
but when run on local machine, following exception
java.io.ioexception: java.lang.reflect.invocationtargetexception @ org.apache.hadoop.hbase.client.connectionfactory.createconnection(connectionfactory.java:240) @ org.apache.hadoop.hbase.client.connectionfactory.createconnection(connectionfactory.java:218) @ org.apache.hadoop.hbase.client.connectionfactory.createconnection(connectionfactory.java:90) @ com.zoomdata.thrift.provider.bigtabletestconnector.testconnection(bigtabletestconnector.java:33) @ com.zoomdata.thrift.provider.bigtabletestconnector.main(bigtabletestconnector.java:81) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ com.intellij.rt.execution.application.appmain.main(appmain.java:134) caused by: java.lang.reflect.invocationtargetexception @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:62) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:422) @ org.apache.hadoop.hbase.client.connectionfactory.createconnection(connectionfactory.java:238) ... 9 more caused by: java.io.ioexception: error getting access token metadata server at: http://metadata/computemetadata/v1/instance/service-accounts/default/token @ com.google.cloud.bigtable.hbase.credentialfactory.getcredentialfrommetadataserviceaccount(credentialfactory.java:100) @ com.google.cloud.bigtable.hbase.bigtableoptionsfactory.fromconfiguration(bigtableoptionsfactory.java:236) @ org.apache.hadoop.hbase.client.bigtableconnection.<init>(bigtableconnection.java:120) ... 14 more caused by: java.io.ioexception: computeenginecredentials cannot find metadata server. because code not running on google compute engine. @ com.google.auth.oauth2.computeenginecredentials.refreshaccesstoken(computeenginecredentials.java:63) @ com.google.auth.oauth2.oauth2credentials.refresh(oauth2credentials.java:76) @ com.google.cloud.bigtable.hbase.credentialfactory.getcredentialfrommetadataserviceaccount(credentialfactory.java:98) ... 16 more caused by: java.net.unknownhostexception: metadata @ java.net.abstractplainsocketimpl.connect(abstractplainsocketimpl.java:184) @ java.net.sockssocketimpl.connect(sockssocketimpl.java:392) @ java.net.socket.connect(socket.java:589) @ sun.net.networkclient.doconnect(networkclient.java:175) @ sun.net.www.http.httpclient.openserver(httpclient.java:432) @ sun.net.www.http.httpclient.openserver(httpclient.java:527) @ sun.net.www.http.httpclient.<init>(httpclient.java:211) @ sun.net.www.http.httpclient.new(httpclient.java:308) @ sun.net.www.http.httpclient.new(httpclient.java:326) @ sun.net.www.protocol.http.httpurlconnection.getnewhttpclient(httpurlconnection.java:1168) @ sun.net.www.protocol.http.httpurlconnection.plainconnect0(httpurlconnection.java:1104) @ sun.net.www.protocol.http.httpurlconnection.plainconnect(httpurlconnection.java:998) @ sun.net.www.protocol.http.httpurlconnection.connect(httpurlconnection.java:932) @ com.google.bigtable.repackaged.com.google.api.client.http.javanet.nethttprequest.execute(nethttprequest.java:93) @ com.google.bigtable.repackaged.com.google.api.client.http.httprequest.execute(httprequest.java:965) @ com.google.auth.oauth2.computeenginecredentials.refreshaccesstoken(computeenginecredentials.java:61) ... 18 more
it said:
computeenginecredentials cannot find metadata server. because code not running on google compute engine.
so mean code can run inside compute engine? there way connect local computer? have examples of this?
for running locally, need make sure environment variable google_application_credentials
set key.json
got cloud console. cause in case.
Comments
Post a Comment