@Override public GetQueryHistoryResponse getQueryHistory(RpcController controller, QueryIdRequest request) throws ServiceException { GetQueryHistoryResponse.Builder builder = GetQueryHistoryResponse.newBuilder(); try { QueryId queryId = new QueryId(request.getQueryId()); QueryHistory queryHistory = workerContext.getQueryMaster().getQueryHistory(queryId); if (queryHistory != null) { builder.setQueryHistory(queryHistory.getProto()); } builder.setState(ReturnStateUtil.OK); } catch (Throwable t) { LOG.error(t.getMessage(), t); builder.setState(ReturnStateUtil.returnError(t)); } return builder.build(); } }
@Override public void killQuery(RpcController controller, TajoIdProtos.QueryIdProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new QueryEvent(queryId, QueryEventType.KILL)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void serviceInit(Configuration conf) throws Exception { TajoConf tajoConf = TUtil.checkTypeAndGet(conf, TajoConf.class); // Setup RPC server InetSocketAddress initIsa = new InetSocketAddress("0.0.0.0", port); if (initIsa.getAddress() == null) { throw new IllegalArgumentException("Failed resolve of " + initIsa); } int workerNum = tajoConf.getIntVar(TajoConf.ConfVars.QUERY_MASTER_RPC_SERVER_WORKER_THREAD_NUM); this.rpcServer = new AsyncRpcServer(QueryMasterProtocol.class, this, initIsa, workerNum); this.rpcServer.start(); this.bindAddr = NetUtils.getConnectAddress(rpcServer.getListenAddress()); this.addr = bindAddr.getHostName() + ":" + bindAddr.getPort(); this.port = bindAddr.getPort(); queryMaster = new QueryMaster(workerContext); addService(queryMaster); // Get the master address LOG.info("QueryMasterManagerService is bind to " + addr); tajoConf.setVar(TajoConf.ConfVars.WORKER_QM_RPC_ADDRESS, addr); super.serviceInit(conf); }
@Override public void executeQuery(RpcController controller, QueryExecutionRequest request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getQueryId()); LOG.info("Receive executeQuery request:" + queryId); queryMaster.handle(new QueryStartEvent(queryId, new Session(request.getSession()), new QueryContext(workerContext.getQueryMaster().getContext().getConf(), request.getQueryContext()), request.getExprInJson().getValue(), request.getLogicalPlanJson().getValue(), new NodeResource(request.getAllocation().getResource()))); done.run(TajoWorker.NULL_PROTO); }
QueryMasterTask queryMasterTask = new QueryMasterTask(qm.getContext(), queryId, session, defaultContext, expr.toJson(), NodeResources.createResource(512), dispatch);
@Override public void serviceStart() throws Exception { startQuery(); List<TajoProtos.WorkerConnectionInfoProto> workersProto = queryMasterContext.getQueryMaster().getAllWorker(); for (TajoProtos.WorkerConnectionInfoProto worker : workersProto) { workerMap.put(worker.getId(), new WorkerConnectionInfo(worker)); } super.serviceStart(); }
@Override public Integer getValue() { if(queryMasterManagerService != null) { return queryMasterManagerService.getQueryMaster().getQueryMasterTasks().size(); } else { return 0; } } });
@Override public void serviceInit(Configuration conf) throws Exception { this.systemConf = TUtil.checkTypeAndGet(conf, TajoConf.class); this.manager = RpcClientManager.getInstance(); this.rpcClientParams = RpcParameterFactory.get(this.systemConf); querySessionTimeout = systemConf.getIntVar(TajoConf.ConfVars.QUERY_SESSION_TIMEOUT); queryMasterContext = new QueryMasterContext(systemConf); clock = new SystemClock(); finishedQueryMasterTasksCache = new LRUMap(systemConf.getIntVar(TajoConf.ConfVars.HISTORY_QUERY_CACHE_SIZE)); this.dispatcher = new AsyncDispatcher(); addIfService(dispatcher); globalPlanner = new GlobalPlanner(systemConf, workerContext); dispatcher.register(QueryStartEvent.EventType.class, new QueryStartEventHandler()); dispatcher.register(QueryStopEvent.EventType.class, new QueryStopEventHandler()); super.serviceInit(conf); LOG.info("QueryMaster inited"); }
@Override public void executeQuery(RpcController controller, QueryExecutionRequest request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getQueryId()); LOG.info("Receive executeQuery request:" + queryId); queryMaster.handle(new QueryStartEvent(queryId, new Session(request.getSession()), new QueryContext(workerContext.getQueryMaster().getContext().getConf(), request.getQueryContext()), request.getExprInJson().getValue(), request.getLogicalPlanJson().getValue(), new NodeResource(request.getAllocation().getResource()))); done.run(TajoWorker.NULL_PROTO); }
QueryMasterTask queryMasterTask = new QueryMasterTask(qm.getContext(), queryId, session, defaultContext, expr.toJson(), NodeResources.createResource(512), dispatch);
@Override public void serviceStart() throws Exception { startQuery(); List<TajoProtos.WorkerConnectionInfoProto> workersProto = queryMasterContext.getQueryMaster().getAllWorker(); for (TajoProtos.WorkerConnectionInfoProto worker : workersProto) { workerMap.put(worker.getId(), new WorkerConnectionInfo(worker)); } super.serviceStart(); }
private void initWorkerMetrics() { workerSystemMetrics = new TajoSystemMetrics(systemConf, Node.class, workerContext.getWorkerName()); workerSystemMetrics.start(); workerSystemMetrics.register(Node.QueryMaster.RUNNING_QM, () -> queryMasterManagerService != null ? queryMasterManagerService.getQueryMaster().getQueryMasterTasks().size() : 0); workerSystemMetrics.register(Node.Tasks.RUNNING_TASKS, () -> taskExecutor != null ? taskExecutor.getRunningTasks() : 0); }
@Override public void serviceInit(Configuration conf) throws Exception { this.systemConf = TUtil.checkTypeAndGet(conf, TajoConf.class); this.manager = RpcClientManager.getInstance(); this.rpcClientParams = RpcParameterFactory.get(this.systemConf); querySessionTimeout = systemConf.getIntVar(TajoConf.ConfVars.QUERY_SESSION_TIMEOUT); queryMasterContext = new QueryMasterContext(systemConf); clock = new SystemClock(); finishedQueryMasterTasksCache = new LRUMap(systemConf.getIntVar(TajoConf.ConfVars.HISTORY_QUERY_CACHE_SIZE)); this.dispatcher = new AsyncDispatcher(); addIfService(dispatcher); globalPlanner = new GlobalPlanner(systemConf, workerContext); dispatcher.register(QueryStartEvent.EventType.class, new QueryStartEventHandler()); dispatcher.register(QueryStopEvent.EventType.class, new QueryStopEventHandler()); super.serviceInit(conf); LOG.info("QueryMaster inited"); }
public QueryHistory getQueryHistory(QueryId queryId) throws IOException { QueryMasterTask queryMasterTask = getQueryMasterTask(queryId, true); if(queryMasterTask != null) { return queryMasterTask.getQuery().getQueryHistory(); } else { return workerContext.getHistoryReader().getQueryHistory(queryId.toString()); } }
@Override public GetQueryHistoryResponse getQueryHistory(RpcController controller, QueryIdRequest request) throws ServiceException { GetQueryHistoryResponse.Builder builder = GetQueryHistoryResponse.newBuilder(); try { QueryId queryId = new QueryId(request.getQueryId()); QueryHistory queryHistory = workerContext.getQueryMaster().getQueryHistory(queryId); if (queryHistory != null) { builder.setQueryHistory(queryHistory.getProto()); } builder.setState(ReturnStateUtil.OK); } catch (Throwable t) { LOG.error(t.getMessage(), t); builder.setState(ReturnStateUtil.returnError(t)); } return builder.build(); } }
@Override public void serviceInit(Configuration conf) throws Exception { TajoConf tajoConf = TUtil.checkTypeAndGet(conf, TajoConf.class); // Setup RPC server InetSocketAddress initIsa = tajoConf.getSocketAddrVar(TajoConf.ConfVars.WORKER_QM_RPC_ADDRESS); if (initIsa.getAddress() == null) { throw new IllegalArgumentException("Failed resolve of " + initIsa); } int workerNum = tajoConf.getIntVar(TajoConf.ConfVars.QUERY_MASTER_RPC_SERVER_WORKER_THREAD_NUM); this.rpcServer = new AsyncRpcServer(QueryMasterProtocol.class, this, initIsa, workerNum); this.rpcServer.start(); this.bindAddr = NetUtils.getConnectAddress(rpcServer.getListenAddress()); this.queryMaster = new QueryMaster(workerContext); addService(queryMaster); // Get the master address LOG.info("QueryMasterManagerService is bind to " + bindAddr); tajoConf.setVar(TajoConf.ConfVars.WORKER_QM_RPC_ADDRESS, NetUtils.getHostPortString(bindAddr)); super.serviceInit(tajoConf); }
public QueryHistory getQueryHistory(QueryId queryId) throws IOException { QueryMasterTask queryMasterTask = getQueryMasterTask(queryId, true); if(queryMasterTask != null) { return queryMasterTask.getQuery().getQueryHistory(); } else { return workerContext.getHistoryReader().getQueryHistory(queryId.toString()); } }
public QueryHistory getQueryHistory(QueryId queryId) throws IOException { QueryHistory queryHistory = null; for (TajoWorker worker : getTajoWorkers()) { queryHistory = worker.getWorkerContext().getQueryMaster().getQueryHistory(queryId); if (queryHistory != null) { break; } } return queryHistory; } }
@Override public void killQuery(RpcController controller, TajoIdProtos.QueryIdProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new QueryEvent(queryId, QueryEventType.KILL)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void fatalError(RpcController controller, TaskFatalErrorReport report, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(report.getId().getTaskId().getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { queryMasterTask.handleTaskFailed(report); } else { LOG.warn("No QueryMasterTask: " + new TaskAttemptId(report.getId())); } done.run(TajoWorker.NULL_PROTO); }