Search in sources :

Example 1 with DomainPeerServer

use of org.apache.hadoop.hdfs.net.DomainPeerServer in project hadoop by apache.

the class DataNode method getDomainPeerServer.

private static DomainPeerServer getDomainPeerServer(Configuration conf, int port) throws IOException {
    String domainSocketPath = conf.getTrimmed(DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_KEY, DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_DEFAULT);
    if (domainSocketPath.isEmpty()) {
        if (conf.getBoolean(HdfsClientConfigKeys.Read.ShortCircuit.KEY, HdfsClientConfigKeys.Read.ShortCircuit.DEFAULT) && (!conf.getBoolean(HdfsClientConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL, HdfsClientConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL_DEFAULT))) {
            LOG.warn("Although short-circuit local reads are configured, " + "they are disabled because you didn't configure " + DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_KEY);
        }
        return null;
    }
    if (DomainSocket.getLoadingFailureReason() != null) {
        throw new RuntimeException("Although a UNIX domain socket " + "path is configured as " + domainSocketPath + ", we cannot " + "start a localDataXceiverServer because " + DomainSocket.getLoadingFailureReason());
    }
    DomainPeerServer domainPeerServer = new DomainPeerServer(domainSocketPath, port);
    int recvBufferSize = conf.getInt(DFSConfigKeys.DFS_DATANODE_TRANSFER_SOCKET_RECV_BUFFER_SIZE_KEY, DFSConfigKeys.DFS_DATANODE_TRANSFER_SOCKET_RECV_BUFFER_SIZE_DEFAULT);
    if (recvBufferSize > 0) {
        domainPeerServer.setReceiveBufferSize(recvBufferSize);
    }
    return domainPeerServer;
}
Also used : DomainPeerServer(org.apache.hadoop.hdfs.net.DomainPeerServer)

Example 2 with DomainPeerServer

use of org.apache.hadoop.hdfs.net.DomainPeerServer in project hadoop by apache.

the class DataNode method initDataXceiver.

private void initDataXceiver() throws IOException {
    // find free port or use privileged port provided
    TcpPeerServer tcpPeerServer;
    if (secureResources != null) {
        tcpPeerServer = new TcpPeerServer(secureResources);
    } else {
        int backlogLength = getConf().getInt(CommonConfigurationKeysPublic.IPC_SERVER_LISTEN_QUEUE_SIZE_KEY, CommonConfigurationKeysPublic.IPC_SERVER_LISTEN_QUEUE_SIZE_DEFAULT);
        tcpPeerServer = new TcpPeerServer(dnConf.socketWriteTimeout, DataNode.getStreamingAddr(getConf()), backlogLength);
    }
    if (dnConf.getTransferSocketRecvBufferSize() > 0) {
        tcpPeerServer.setReceiveBufferSize(dnConf.getTransferSocketRecvBufferSize());
    }
    streamingAddr = tcpPeerServer.getStreamingAddr();
    LOG.info("Opened streaming server at " + streamingAddr);
    this.threadGroup = new ThreadGroup("dataXceiverServer");
    xserver = new DataXceiverServer(tcpPeerServer, getConf(), this);
    this.dataXceiverServer = new Daemon(threadGroup, xserver);
    // auto destroy when empty
    this.threadGroup.setDaemon(true);
    if (getConf().getBoolean(HdfsClientConfigKeys.Read.ShortCircuit.KEY, HdfsClientConfigKeys.Read.ShortCircuit.DEFAULT) || getConf().getBoolean(HdfsClientConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC, HdfsClientConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC_DEFAULT)) {
        DomainPeerServer domainPeerServer = getDomainPeerServer(getConf(), streamingAddr.getPort());
        if (domainPeerServer != null) {
            this.localDataXceiverServer = new Daemon(threadGroup, new DataXceiverServer(domainPeerServer, getConf(), this));
            LOG.info("Listening on UNIX domain socket: " + domainPeerServer.getBindPath());
        }
    }
    this.shortCircuitRegistry = new ShortCircuitRegistry(getConf());
}
Also used : TcpPeerServer(org.apache.hadoop.hdfs.net.TcpPeerServer) Daemon(org.apache.hadoop.util.Daemon) DomainPeerServer(org.apache.hadoop.hdfs.net.DomainPeerServer)

Aggregations

DomainPeerServer (org.apache.hadoop.hdfs.net.DomainPeerServer)2 TcpPeerServer (org.apache.hadoop.hdfs.net.TcpPeerServer)1 Daemon (org.apache.hadoop.util.Daemon)1