How to connect google bigtable outside of google cloud platform -


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