通过sock代理的Hbase API

通过sock代理的Hbase API,hbase,apache-zookeeper,socks,Hbase,Apache Zookeeper,Socks,有没有办法通过sock代理调用HbaseAdmin/Htable?我想使用localhost:1080 socks代理映射到集群中的一个框,然后与Hbase(Zookeeper、Master、RegionServer)对话。有办法吗 谢谢。我也有同样的要求,并且发现ZooKeeper客户端连接是通过NIO(org.apache.ZooKeeper.ClientCnxnSocketNIO)实现的。NIO不支持通过袜子连接 如果有源代码,请在ZooKeeper.java上签出getClientCnx

有没有办法通过sock代理调用HbaseAdmin/Htable?我想使用localhost:1080 socks代理映射到集群中的一个框,然后与Hbase(Zookeeper、Master、RegionServer)对话。有办法吗


谢谢。

我也有同样的要求,并且发现ZooKeeper客户端连接是通过NIO(org.apache.ZooKeeper.ClientCnxnSocketNIO)实现的。NIO不支持通过袜子连接

如果有源代码,请在ZooKeeper.java上签出getClientCnxnSocket()方法

private static ClientCnxnSocket getClientCnxnSocket() throws IOException {
    String clientCnxnSocketName = System
            .getProperty(ZOOKEEPER_CLIENT_CNXN_SOCKET);
    if (clientCnxnSocketName == null) {
        clientCnxnSocketName = ClientCnxnSocketNIO.class.getName();
    }
    try {
        return (ClientCnxnSocket) Class.forName(clientCnxnSocketName)
                .newInstance();
    } catch (Exception e) {
        IOException ioe = new IOException("Couldn't instantiate "
                + clientCnxnSocketName);
        ioe.initCause(e);
        throw ioe;
    }
}

如果您想让它在socks上工作,您需要通过扩展ClientCnxnSocket提供自己的实现,并使用系统变量zookeeper.ClientCnxnSocket指定它。

当前zookeeper实现很烦人。您需要扩展的ClientCnxnSocket类具有“package”作用域,因此如果您想添加自己的实现,您必须将其放在org.apache.zookeer包中。这方面是否有任何变化,或者我们是否仍需要对其进行破解,以通过socks代理使zk/hbase连接正常工作?