Package com.alipay.bluewhale.core.daemon

Examples of com.alipay.bluewhale.core.daemon.NodePort


    for(Integer tid:taskids)
    {
      try{
      TaskInfoContainer con=new TaskInfoContainer();
      con.setStarttime(taskStartTimeSecs.get(tid));
      NodePort np=taskToNodeport.get(tid);
      con.setNp(np);
      if(np!=null)
      {
        con.setHostname(nodeHost.get(np.getNode()));
      }else{
        con.setHostname("nohost");
      }
      con.setTaskId(tid);
      con.setTaskInfo(stat.task_info(stormId, tid));
View Full Code Here


    Map<NodePort, List<Integer>> aliveAssigned = new HashMap<NodePort, List<Integer>>();
 
    if (existingAssignment != null){
       //��ȡ�ѱ������NodePort��task�б���Ϣ
        for (Entry<NodePort, List<Integer>> entry:existingAssigned.entrySet()) {
          NodePort np=entry.getKey();
          List<Integer> tasks=entry.getValue();
          if (aliveIds != null && aliveIds.containsAll(tasks)) {     
            //�����һ��taskid��������aliveIds�У����NodePort����task���ᱻ���·��䡣
            aliveAssigned.put(np, tasks);
          }
        }
    }

    //��ȡTOPOLOGY_WORKERS
    Integer workers = 0;
    if (topology_conf.get(Config.TOPOLOGY_WORKERS) instanceof Long){
        Long tmp = (Long) topology_conf.get(Config.TOPOLOGY_WORKERS);
        workers  = Integer.parseInt(tmp.toString());
    }else{
        workers = (Integer) topology_conf.get(Config.TOPOLOGY_WORKERS);
    }

    //��ȡ�ܵ�slotsʹ����
    int totalSlotsToUse = Math.min(workers,
        availableSlots.size() + aliveAssigned.size());

    IAssignment customAssignment=CustomAssignment.getAssignmentInstance(topology_conf);

    Map<NodePort, List<Integer>> keepAssigned =null;
    if (!isScratch && allTaskIds!= null) {
      //��ȡ���־����nodeport��task�ķ�����Ϣ
          if (customAssignment != null) {
            keepAssigned=customAssignment.keeperSlots(aliveAssigned, allTaskIds.size(),totalSlotsToUse);
          }else{
            keepAssigned = keeperSlots(aliveAssigned, allTaskIds.size(),totalSlotsToUse);// <NodePort, List>
          }
    }
    //���·�����
    int reassign_num=totalSlotsToUse;
    if(keepAssigned!=null){
      for (Entry<NodePort, List<Integer>> entry:keepAssigned.entrySet()) {
        aliveAssigned.remove(entry.getKey());
      }
      reassign_num=totalSlotsToUse-keepAssigned.size();
    }
    //��ȡ���п��е�slot
    Set<NodePort> freedSlots = new HashSet<NodePort>();
    Set<NodePort> freedSlotstmp = aliveAssigned.keySet();
    if (freedSlotstmp.size() == 0){
        freedSlotstmp = new HashSet<NodePort>();
    }
    freedSlots.addAll(freedSlotstmp);
    freedSlots.addAll(availableSlots);
        if (customAssignment != null) {
            customAssignment.setup(topology_conf, topologyid, stormClusterState, keepAssigned,supInfos);
        }


    Collection<List<Integer>> keepAssignedTaskSet = null;
    if (keepAssigned != null){
        keepAssignedTaskSet=keepAssigned.values();
    }
    Set<Integer> reassignIds = null;
    if (allTaskIds != null){
        reassignIds = new HashSet<Integer>(allTaskIds);
    }
    if (keepAssignedTaskSet != null && reassignIds != null){
        //FIXME ����ֱ�Ӷ�keepAssignedTaskSet����removeAll,��Ч�� yannian add
        for(List<Integer> rm:keepAssignedTaskSet)
        {
          reassignIds.removeAll(rm);
        }
    }
    //����δkeep��task����Ӧ��slot���档
    Map<Integer, NodePort> reassignment = new HashMap<Integer, NodePort>();
    List<NodePort> reassignSlots=null;
    List<NodePort> sortedFreeSlots = sortSlots(freedSlots);
            //��ȡ�������Ҫ�������slots�ڵ�
            if (customAssignment != null) {
                reassignSlots = customAssignment.slotsAssignment(sortedFreeSlots, reassign_num,reassignIds);
            } else {
               
                if (sortedFreeSlots != null) {
                    reassignSlots = sortedFreeSlots.subList(0, reassign_num);
                }
            }
        //����δkeep��task����Ӧ��slot���档
        if(customAssignment!=null)
        {
            reassignment=customAssignment.tasksAssignment(reassignSlots, reassignIds);
        }else{
          
        int index = 0;
        if (reassignIds != null && reassignSlots != null && reassignSlots.size() != 0)
        {      
            for (Iterator<Integer> it = reassignIds.iterator(); it.hasNext();) {
          Integer entry = it.next();
          if (index >= reassignSlots.size()) {
            index = 0;
          }
          reassignment.put(entry, reassignSlots.get(index));
          index++;
            }
        }
        }

    //ת����ȡkeepAssigned���õ�keyΪtaskid��valueΪNodePort��map
    Map<Integer, NodePort> stayAssignment = new HashMap<Integer, NodePort>();
    if(keepAssigned!=null){
        for (Entry<NodePort, List<Integer>> entry:keepAssigned.entrySet()) {
        NodePort np = entry.getKey();
        List<Integer> tasks = entry.getValue();
        for (Integer taskid : tasks) {
          stayAssignment.put(taskid, np);
        }
        }
View Full Code Here

    if(allSlots!=null){
      Map<String, List<NodePort>> tmp = new HashMap<String, List<NodePort>>();

      // group by first,����node������
      for (Iterator<NodePort> it = allSlots.iterator(); it.hasNext();) {
        NodePort np =it.next();
        if (tmp.containsKey(np.getNode())) {
          List<NodePort> lst = tmp.get(np.getNode());
          lst.add(np);
          tmp.put(np.getNode(), lst);
        } else {
          List<NodePort> lst = new ArrayList<NodePort>();
          lst.add(np);
          tmp.put(np.getNode(), lst);
        }
      }

      // interleave
      List<List<NodePort>> splitup=new ArrayList<List<NodePort>>(tmp.values());
View Full Code Here

    if (numWorkers != 0) {
      keepers = new HashMap<NodePort, List<Integer>>();
      Map<Integer, Integer> distribution = StormUtils.integer_divided(numTaskIds, numWorkers);

      for (Entry<NodePort, List<Integer>> entry:aliveAssigned.entrySet()) {
        NodePort nodeport = entry.getKey();
        List<Integer> tasklist = entry.getValue();
        Integer taskCount = tasklist.size();
        Integer val = distribution.get(taskCount);
        if (val != null && val > 0) {
            keepers.put(nodeport, tasklist);
View Full Code Here

        if (e != null){
            s.removeAll(e);
        }
      }
      for (Integer port:s) {
        rtn.add(new NodePort(supervisorid,port));
     
    }
    return rtn;
  }
View Full Code Here

        }
        //����:task->node+port {1 ["b8f1664d-5555-4950-8139-5098fb109a81" 6702], 2 ["4b83cd41-e863-4bd6-b26d-3e27e5ff7799" 6701]}
        Map<Integer, NodePort> taskNodePort = assignment.getTaskToNodeport();
        if(taskNodePort!=null){
          for (Entry<Integer, NodePort> entry:taskNodePort.entrySet()) {
            NodePort np =entry.getValue();
            Set<Integer> ports = rtn.get(np.getNode());
            if(ports==null)
            {
              ports=new HashSet<Integer>();
              rtn.put(np.getNode(), ports);
            }
            ports.add(np.getPort());
          }
        }
      }
    }
    return rtn;
View Full Code Here

    Assignment assignmentInfo = zkCluster.assignment_info(topologyid, null);
    if (assignmentInfo != null) {
      tasks = new HashSet<Integer>();
      Map<Integer, NodePort> taskToNodeport = assignmentInfo.getTaskToNodeport();
      for (Entry<Integer, NodePort> taskNode : taskToNodeport.entrySet()) {
        NodePort loc = taskNode.getValue();
        if (loc != null && loc.getNode().equals(supervisorId)&& loc.getPort() == port) {
          tasks.add(taskNode.getKey());
        }
      }
      LOG.info("readWorkerTaskids topologyid=" + topologyid + ",port="
          + port + ",supervisorId=" + supervisorId + ",tasks.size="
View Full Code Here

          transferQueue.drainTo(drainer);
          for (TransferData o : drainer) {
            int taskId = o.getTaskid();
            byte[] tuple = o.getData();

            NodePort nodePort = taskNodeport.get(taskId);
            if (nodePort == null) {
              String errormsg = "can`t not found IConnection";
              LOG.warn("DrainerRunable warn", new Exception(
                  errormsg));
              continue;
View Full Code Here

          Entry<Integer, NodePort> entry = it.next();

          Integer taskId = entry.getKey();

          NodePort nodePort = entry.getValue();

          int port = nodePort.getPort();

          String node = nodePort.getNode();

          if (!node.equals(supervisorId)) {
            // not localhost
            continue;
          }
View Full Code Here

    Set<NodePort> rtn = new HashSet<NodePort>();
    for (Entry<String, List<Integer>> entry : allSlots.entrySet()) {
      String supervisorid = entry.getKey();
      List<Integer> s = entry.getValue();
      for (Integer port : s) {
        NodePort nodeport = new NodePort(supervisorid, port);
        rtn.add(nodeport);
      }
    }
    return rtn;
  }
View Full Code Here

TOP

Related Classes of com.alipay.bluewhale.core.daemon.NodePort

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.