Search in sources :

Example 1 with SpeedTestRequest

use of alluxio.hub.proto.SpeedTestRequest in project alluxio by Alluxio.

the class ManagerProcessContext method startSpeedTestListener.

/**
 * Starts a request stream observer for {@link HostedManagerServiceGrpc} SpeedTest RPC calls.
 */
public void startSpeedTestListener() {
    HostedManagerServiceGrpc.HostedManagerServiceStub asyncStub = getHostedAsyncStub();
    RequestStreamObserver requestObserver = new RequestStreamObserver<SpeedTestRequest, SpeedTestResponse>() {

        @Override
        public SpeedTestResponse exec(SpeedTestRequest req) {
            return SpeedTestResponse.newBuilder().setHubMetadata(mHubMetadata).setPayload(speedTest(req)).build();
        }

        @Override
        public void restart() {
            startSpeedTestListener();
        }

        @Override
        public void handleError(String message, Throwable t) {
            handleStatusRuntimeException(message, t);
        }
    };
    StreamObserver<SpeedTestResponse> responseObserver = asyncStub.speedTest(requestObserver);
    requestObserver.start(responseObserver, SpeedTestResponse.newBuilder().setHubMetadata(mHubMetadata).build());
    LOG.info("Started SpeedTest async listener", asyncStub);
}
Also used : SpeedTestResponse(alluxio.hub.proto.SpeedTestResponse) RequestStreamObserver(alluxio.hub.manager.rpc.observer.RequestStreamObserver) SpeedTestRequest(alluxio.hub.proto.SpeedTestRequest) HostedManagerServiceGrpc(alluxio.hub.proto.HostedManagerServiceGrpc) ByteString(com.google.protobuf.ByteString)

Example 2 with SpeedTestRequest

use of alluxio.hub.proto.SpeedTestRequest in project alluxio by Alluxio.

the class ManagerProcessContext method speedTest.

/**
 * speed test for ufs.
 *
 * @param request ufs speed test request
 * @return result of the test
 */
public SpeedTestResponse.Payload speedTest(SpeedTestRequest request) {
    SpeedTestRequest.Payload req = request.getPayload();
    String dataSize = req.getDataSize();
    String mountPoint = req.getMountPoint();
    String relativePath = req.getPath();
    int clusterParallelism = req.getClusterParallelism();
    int nodeParallelism = req.getNodeParallelism();
    List<String> errors = new ArrayList<>();
    MountPointInfo mountInfo = null;
    try {
        mountInfo = getFileSystem().getMountTable().get(mountPoint);
    } catch (IOException | AlluxioException e) {
        errors.add("Failed to retrieve mount point information");
        errors.add(ValidationUtils.getErrorInfo(e));
    }
    if (mountInfo == null) {
        errors.add("Failed to retrieve mount point information for " + mountPoint);
        return SpeedTestResponse.Payload.newBuilder().addAllError(errors).build();
    }
    if (clusterParallelism > mAlluxioCluster.size()) {
        errors.add("Can not set cluster parallelism to be " + clusterParallelism + " which is greater than cluster size " + mAlluxioCluster.size());
        return SpeedTestResponse.Payload.newBuilder().addAllError(errors).build();
    }
    if (relativePath.isEmpty()) {
        relativePath = "/";
    }
    String ufsPath = PathUtils.normalizePath(PathUtils.concatPath(mountInfo.getUfsUri(), relativePath), AlluxioURI.SEPARATOR);
    List<String> argList = new ArrayList<>();
    String[] args = new String[] { "--io-size", dataSize, "--threads", String.valueOf(nodeParallelism), "--path", ufsPath, "--cluster-limit", String.valueOf(clusterParallelism), "--cluster", "--use-mount-conf" };
    Collections.addAll(argList, args);
    UfsIOBench bench = getIOBench();
    try {
        String output = bench.run(argList.toArray(new String[0]));
        IOTaskSummary result = (IOTaskSummary) JsonSerializable.fromJson(output);
        SpeedTestResponse.Payload.Builder builder = SpeedTestResponse.Payload.newBuilder();
        if (result.getErrors() != null) {
            builder.addAllError(result.getErrors());
        }
        if (result.getParameters() != null) {
            UfsIOParameters param = result.getParameters();
            builder.setParameters(SpeedTestParameter.newBuilder().setDataSize(param.mDataSize).setPath(param.mPath).setThreads(param.mThreads).putAllProperties(param.mConf).build());
        }
        builder.setReadSpeedStat(convertToProto(result.getReadSpeedStat())).setWriteSpeedStat(convertToProto(result.getWriteSpeedStat()));
        return builder.build();
    } catch (Exception e) {
        errors.add("UfsIOBench failed due to " + ValidationUtils.getErrorInfo(e));
    }
    return SpeedTestResponse.Payload.newBuilder().addAllError(errors).build();
}
Also used : SpeedTestRequest(alluxio.hub.proto.SpeedTestRequest) ArrayList(java.util.ArrayList) ByteString(com.google.protobuf.ByteString) IOException(java.io.IOException) UfsIOParameters(alluxio.stress.worker.UfsIOParameters) AlluxioException(alluxio.exception.AlluxioException) IOException(java.io.IOException) InvalidPathException(alluxio.exception.InvalidPathException) FileDoesNotExistException(alluxio.exception.FileDoesNotExistException) AlluxioStatusException(alluxio.exception.status.AlluxioStatusException) IOTaskSummary(alluxio.stress.worker.IOTaskSummary) MountPointInfo(alluxio.wire.MountPointInfo) HDFSMountPointInfo(alluxio.hub.proto.HDFSMountPointInfo) UfsIOBench(alluxio.stress.cli.UfsIOBench) AlluxioException(alluxio.exception.AlluxioException)

Aggregations

SpeedTestRequest (alluxio.hub.proto.SpeedTestRequest)2 ByteString (com.google.protobuf.ByteString)2 AlluxioException (alluxio.exception.AlluxioException)1 FileDoesNotExistException (alluxio.exception.FileDoesNotExistException)1 InvalidPathException (alluxio.exception.InvalidPathException)1 AlluxioStatusException (alluxio.exception.status.AlluxioStatusException)1 RequestStreamObserver (alluxio.hub.manager.rpc.observer.RequestStreamObserver)1 HDFSMountPointInfo (alluxio.hub.proto.HDFSMountPointInfo)1 HostedManagerServiceGrpc (alluxio.hub.proto.HostedManagerServiceGrpc)1 SpeedTestResponse (alluxio.hub.proto.SpeedTestResponse)1 UfsIOBench (alluxio.stress.cli.UfsIOBench)1 IOTaskSummary (alluxio.stress.worker.IOTaskSummary)1 UfsIOParameters (alluxio.stress.worker.UfsIOParameters)1 MountPointInfo (alluxio.wire.MountPointInfo)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1