Подключение и сохранение в HBase - PullRequest
5 голосов
/ 14 сентября 2011

Я только что попытался подключиться к hbase, который является частью cloudera-vm, с помощью Java-клиента.

(192.168.56.102 - IP-адрес виртуальной машины виртуальной машины)

Я использую виртуальный ящик с настройками сети только для хоста.

Так что я могу получить доступ к веб-интерфейсу мастера hbase @ http://192.168.56.102:60010/master.jsp

Также мой java-клиент (хорошо работал на самой виртуальной машине) установил соединение с 192.168.56.102:2181

Но когда он вызывает 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();
    }
}

просто добавление сетевых служб, работающих на виртуальной машине (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 

1 Ответ

11 голосов
/ 27 сентября 2011

После многих утомительных дней исследований я могу предложить решение .. может спасти других от многих головных болей ..

Корень проблемы - поддержка Ubuntu в IPV6 (я использую здесь). Но простой деактивации IPV6 в сетевом администрировании было недостаточно.

Вместо этого вы должны добавить в файл следующее: /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

После перезагрузки вы должны проверить, что IPV6 действительно отключен:

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

(0 = IPV6 включен; 1 = IPV6 выключен)

Большое спасибо

http://www.michael -noll.com / учебники / погонный-Hadoop-на-Ubuntu-Linux-одноузловых кластера / # отключив-ipv6

, который дал мне решающий намек.

...