2011-09-14 3 views
5

Java 클라이언트를 사용하여 cloudera-VM의 일부인 hbase에 연결하려했습니다. HBase 연결 및 지속

내가 호스트 전용 네트워크 설정으로 가상 상자를 사용하여 (192.168.56.102는 VM의 INET의 IP입니다).

그래서 내가 http://192.168.56.102:60010/master.jsp 또한

내 자바 클라이언트 @ HBase를 마스터의 웹 UI에 액세스 할 수 있습니다 192.168.56.102:2181

에 설정된 연결합니다 (VM 자체에 잘 작동)하지만 getMaster를 호출 할 때

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(); 
    } 
} 

는 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

적어도 Tumbleweed-Badge를 받았습니다 ^^ –

답변

11

많은 지루한 연구 끝에 나는 다른 사람들을 구할 수있는 해결책을 제공 할 수있다. 두통의 ot.

문제의 근원은 우분투의 IPV6 지원 (나는 여기에서 사용하고있다)이다. 그러나 네트워크 관리에서 IPV6을 비활성화하는 것만으로는 충분하지 않았습니다. 재부팅 후

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

/etc/sysctl.conf에 당신이 IPV6에 의해 정말 꺼져 있는지 확인해야합니다 :

는 대신이 파일에 다음을 추가해야

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

(0 = IPV6에 1 = IPV6 오프)

감사

에 많은210

이것은 중요한 힌트를주었습니다.