public void start() throws IOException {
int rpcHandlerCount = conf.getInt(ProxyConfig.PROXY_HANDLER_COUNT, ProxyConfig.PROXY_HANDLER_COUNT_DEFAULT);
RPC.setProtocolEngine(conf, ClientNamenodeProtocolPB.class,
ProtobufRpcEngine.class);
RPC.setProtocolEngine(conf, NamenodeProtocolPB.class,
ProtobufRpcEngine.class);
this.protocol = (ClientProtocol) Proxy.newProxyInstance(
this.getClass().getClassLoader(),
new Class[]{ClientProtocol.class},
this.invocationHandler);
ClientNamenodeProtocolPB proxy = new ClientNamenodeProtocolServerSideTranslatorPB(this.protocol);
BlockingService clientNNPbService = ClientNamenodeProtocolProtos.ClientNamenodeProtocol.
newReflectiveBlockingService(proxy);
int port = conf.getInt(ProxyConfig.RPC_PORT, ProxyConfig.RPC_PORT_DEFAULT);
this.rpcServer = new RPC.Builder(conf)
.setProtocol(org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolPB.class)
.setInstance(clientNNPbService).setBindAddress("0.0.0.0")
.setPort(port).setNumHandlers(rpcHandlerCount)
.setVerbose(false).build();
this.rpcServer.start();
InetSocketAddress listenAddr = rpcServer.getListenerAddress();
rpcAddress = new InetSocketAddress("0.0.0.0", listenAddr.getPort());
}