2011-09-14 18 views
5

Po prostu próbowałem połączyć się z hbase, która jest częścią cloudera-vm za pomocą klienta java.Łączenie się i przetrwanie do HBase

(192.168.56.102 jest ip inet od VM)

używam wirtualnego hosta tylko pudełko z ustawieniem sieci.

Więc mogę otworzyć WebUI mistrza HBase @http://192.168.56.102:60010/master.jsp

także mojego klienta Java (działa dobrze na samym VM) nawiązanego połączenia do 192.168.56.102:2181

Ale kiedy nazywa getMaster uzyskać odmowa połączenia see log:

11/09/14 11:19:30 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=192.168.56.102:2181 sessionTimeout=180000 watcher=hconnection 
11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Opening socket connection to server /192.168.56.102:2181 
11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Socket connection established to cloudera-vm/192.168.56.102:2181, initiating session 
11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Session establishment complete on server cloudera-vm/192.168.56.102:2181, sessionid = 0x13267157f930009, negotiated timeout = 40000 
11/09/14 11:19:32 INFO client.HConnectionManager$HConnectionImplementation: getMaster attempt 0 of 10 failed; retrying after sleep of 1000 
java.net.ConnectException: Connection refused: no further information 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) 
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:404) 
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:311) 
    at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:865) 
    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:732) 
    at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:257) 
    at $Proxy9.getProtocolVersion(Unknown Source) 
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419) 
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393) 
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:358) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:90) 
    at org.datanucleus.store.hbase.HBaseUtils$1.run(HBaseUtils.java:432) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.datanucleus.store.hbase.HBaseUtils.createSchemaForClass(HBaseUtils.java:428) 
    at org.datanucleus.store.hbase.HBaseMetaDataListener.loaded(HBaseMetaDataListener.java:74) 
    at org.datanucleus.store.hbase.HBaseStoreManager.<init>(HBaseStoreManager.java:76) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:677) 
    at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:287) 
    at org.datanucleus.NucleusContext.createStoreManagerForProperties(NucleusContext.java:453) 
    at org.datanucleus.NucleusContext.initialise(NucleusContext.java:264) 
    at org.datanucleus.api.jpa.JPAEntityManagerFactory.initialiseNucleusContext(JPAEntityManagerFactory.java:746) 
    at org.datanucleus.api.jpa.JPAEntityManagerFactory.<init>(JPAEntityManagerFactory.java:422) 
    at org.datanucleus.api.jpa.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:91) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:150) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:70) 
    at de.syrtec.jpa2hbase.start.TestDAO.main(TestDAO.java:13) 

HBase-site.xml:

<configuration> 
    <property> 
     <name>hbase.zookeeper.quorum</name> 
     <value>192.168.56.102</value> 
    </property> 
    <property> 
     <name>hbase.zookeeper.property.clientPort</name> 
     <value>2181</value> 
    </property> 
    <property> 
     <name>hbase.master</name> 
     <value>192.168.56.102:60010</value> 
    </property> 
</configuration> 

persistence.xml:

<persistence 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
    version="1.0"> 

    <persistence-unit name="hbase-addressbook" 
     transaction-type="RESOURCE_LOCAL"> 

     <properties> 
      <property name="datanucleus.ConnectionURL" value="hbase:192.168.56.102:60010" /> 
      <property name="datanucleus.ConnectionUserName" value="" /> 
      <property name="datanucleus.ConnectionPassword" value="" /> 
      <property name="datanucleus.autoCreateSchema" value="true" /> 
      <property name="datanucleus.validateTables" value="false" /> 
      <property name="datanucleus.Optimistic" value="false" /> 
      <property name="datanucleus.validateConstraints" value="false" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

TestDAO.java:

public class TestDAO { 
    public static void main(String[] args) { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("hbase-addressbook"); 
     EntityManager em = emf.createEntityManager(); 
     EntityTransaction tx = null; 

     Account a2 = new Account("myPre3", "mySur3", 2, new Login("e", "f")); 

     tx = em.getTransaction(); 
     tx.begin(); 
      em.persist(a2); 
     tx.commit(); 
    } 
} 

tylko dodawanie usług sieciowych uruchomionych na VM (netstat -ntpl):

tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  563/sshd   
tcp  0  0 127.0.0.1:631   0.0.0.0:*    LISTEN  909/cupsd  
tcp  0  0 0.0.0.0:8088   0.0.0.0:*    LISTEN  2004/python2.6 
tcp  0  0 127.0.0.1:8001   0.0.0.0:*    LISTEN  2345/python2.6 
tcp6  0  0 :::39087    :::*     LISTEN  1327/java  
tcp6  0  0 :::54162    :::*     LISTEN  1411/java  
tcp6  0  0 127.0.0.1:8020   :::*     LISTEN  1411/java  
tcp6  0  0 127.0.0.1:8021   :::*     LISTEN  1327/java  
tcp6  0  0 :::50070    :::*     LISTEN  1411/java  
tcp6  0  0 :::22     :::*     LISTEN  563/sshd   
tcp6  0  0 ::1:631     :::*     LISTEN  909/cupsd  
tcp6  0  0 :::11000    :::*     LISTEN  2077/java  
tcp6  0  0 :::43738    :::*     LISTEN  858/java   
tcp6  0  0 :::50010    :::*     LISTEN  858/java   
tcp6  0  0 :::51258    :::*     LISTEN  858/java   
tcp6  0  0 :::50075    :::*     LISTEN  858/java   
tcp6  0  0 :::60030    :::*     LISTEN  1726/java  
tcp6  0  0 127.0.0.1:44446   :::*     LISTEN  1642/java  
tcp6  0  0 127.0.1.1:41246   :::*     LISTEN  1726/java  
tcp6  0  0 :::8002     :::*     LISTEN  2009/java  
tcp6  0  0 :::8003     :::*     LISTEN  2009/java  
tcp6  0  0 127.0.1.1:58915   :::*     LISTEN  1726/java  
tcp6  0  0 :::59203    :::*     LISTEN  1491/java  
tcp6  0  0 :::50020    :::*     LISTEN  858/java   
tcp6  0  0 127.0.0.1:8005   :::*     LISTEN  2077/java  
tcp6  0  0 :::2181     :::*     LISTEN  1726/java  
tcp6  0  0 :::9290     :::*     LISTEN  1327/java  
tcp6  0  0 :::60010    :::*     LISTEN  1726/java  
tcp6  0  0 :::50090    :::*     LISTEN  1491/java  
tcp6  0  0 :::10090    :::*     LISTEN  1411/java  
tcp6  0  0 :::50060    :::*     LISTEN  1642/java  
tcp6  0  0 :::50030    :::*     LISTEN  1327/java 
+0

przynajmniej mam Tumbleweed-Badge^^ –

Odpowiedz

11

Po wielu żmudnych dniach badań mogę zapewnić rozwiązanie ... może uratować innych przed ot bólów głowy ..

Źródłem problemu jest obsługa Ubuntu przez IPV6 (używam tutaj). Ale samo dezaktywowanie IPV6 w administrowaniu siecią było niewystarczające.

Zamiast tego trzeba dołączyć następujące do pliku: /etc/sysctl.conf

#disable ipv6 
net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1 
net.ipv6.conf.lo.disable_ipv6 = 1 

po restarcie należy potwierdzić, że IPv6 jest naprawdę wyłączone:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6 

(0 = IPv6; 1 = IPV6 off)

Wielkie dzięki

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/#disabling-ipv6

co dało mi kluczową wskazówkę.