| package org.apache.hadoop.yarn.server.api.impl.pb.client; |
| |
| import java.io.IOException; |
| import java.lang.reflect.UndeclaredThrowableException; |
| import java.net.InetSocketAddress; |
| |
| import org.apache.hadoop.conf.Configuration; |
| import org.apache.hadoop.ipc.RPC; |
| import org.apache.hadoop.yarn.exceptions.YarnRemoteException; |
| import org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine; |
| import org.apache.hadoop.yarn.proto.ResourceTracker.ResourceTrackerService; |
| import org.apache.hadoop.yarn.proto.YarnServerCommonServiceProtos.NodeHeartbeatRequestProto; |
| import org.apache.hadoop.yarn.proto.YarnServerCommonServiceProtos.RegisterNodeManagerRequestProto; |
| import org.apache.hadoop.yarn.server.api.ResourceTracker; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatResponse; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.RegisterNodeManagerRequest; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.RegisterNodeManagerResponse; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.NodeHeartbeatRequestPBImpl; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.NodeHeartbeatResponsePBImpl; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RegisterNodeManagerRequestPBImpl; |
| import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RegisterNodeManagerResponsePBImpl; |
| |
| import com.google.protobuf.ServiceException; |
| |
| public class ResourceTrackerPBClientImpl implements ResourceTracker { |
| |
| private ResourceTrackerService.BlockingInterface proxy; |
| |
| public ResourceTrackerPBClientImpl(long clientVersion, InetSocketAddress addr, Configuration conf) throws IOException { |
| RPC.setProtocolEngine(conf, ResourceTrackerService.BlockingInterface.class, ProtoOverHadoopRpcEngine.class); |
| proxy = (ResourceTrackerService.BlockingInterface)RPC.getProxy( |
| ResourceTrackerService.BlockingInterface.class, clientVersion, addr, conf); |
| } |
| |
| @Override |
| public RegisterNodeManagerResponse registerNodeManager( |
| RegisterNodeManagerRequest request) throws YarnRemoteException { |
| RegisterNodeManagerRequestProto requestProto = ((RegisterNodeManagerRequestPBImpl)request).getProto(); |
| try { |
| return new RegisterNodeManagerResponsePBImpl(proxy.registerNodeManager(null, requestProto)); |
| } catch (ServiceException e) { |
| if (e.getCause() instanceof YarnRemoteException) { |
| throw (YarnRemoteException)e.getCause(); |
| } else if (e.getCause() instanceof UndeclaredThrowableException) { |
| throw (UndeclaredThrowableException)e.getCause(); |
| } else { |
| throw new UndeclaredThrowableException(e); |
| } |
| } |
| } |
| |
| @Override |
| public NodeHeartbeatResponse nodeHeartbeat(NodeHeartbeatRequest request) |
| throws YarnRemoteException { |
| NodeHeartbeatRequestProto requestProto = ((NodeHeartbeatRequestPBImpl)request).getProto(); |
| try { |
| return new NodeHeartbeatResponsePBImpl(proxy.nodeHeartbeat(null, requestProto)); |
| } catch (ServiceException e) { |
| if (e.getCause() instanceof YarnRemoteException) { |
| throw (YarnRemoteException)e.getCause(); |
| } else if (e.getCause() instanceof UndeclaredThrowableException) { |
| throw (UndeclaredThrowableException)e.getCause(); |
| } else { |
| throw new UndeclaredThrowableException(e); |
| } |
| } |
| } |
| |
| } |