Uploaded image for project: 'Hadoop YARN'
  1. Hadoop YARN
  2. YARN-11736

Enhance MultiNodeLookupPolicy to allow configuration of extended comparators for better usability.

    XMLWordPrintableJSON

Details

    Description

      Currently when multi-nodes is enabled, there is only 1 implementation of MultiNodeLookupPolicy interface: ResourceUsageMultiNodeLookupPolicy, which will sort nodes by allocated resources in ascending order. 

      If cluster has nodes with different resource-spec, the resource utilization of smaller nodes will be significantly high, while larger nodes will experience low resource utilization. This may rise the hotspot risk and reduce the scheduling effectiveness.

      So I propose to add a new policy called MultiComparatorPolicy to meet requirements from some complex scenarios, which should contains serveral inherit comparators and can be extended later, and supports configuring specified comparators for different policy instances.

       

      Implementation Details:
      1. MultiNodeSorter#initPolicy will pass the policyConf which is cloned from scheduler configuration and attached the name of current policy, so that we can fetch the specified configuration for this policy inside the implementations of MultiNodeLookupPolicy.
      2. new implementation of MultiNodeLookupPolicy: MultiComparatorPolicy
         2.1) contains several inherit comparators and can be extendable later. comparator keys: ALLOCATED_RESOURCE / UNALLOCATED_RESOURCE / DOMINANT_RESOURCE_RATIO / NODE_ID,  order-directions: ASC / DESC.
         2.2) supports configuring specified comparators with order-direction(ASC/DESC) for different policy instances via conf-key: yarn.scheduler.capacity.multi-node-sorting.policy.<policy-name>.comparators, value format is "<comparator_key_1>[:<order_direction_1>],<comparator_key_2>[:<order_direction_2>],...".  For example, "DOMINANT_ALLOCATED_RATIO,NODE_ID:DESC" means that for policy test, nodes should be sorted by dominant-resource-ratio in ascending order, by nodeID desc in descending order.

      3. Refactor variable names in AbstractCSQueue/CSQueue/FiCaSchedulerApp/AppPlacementAllocator after supporting multiple policy instances with the same policy class.

      Attachments

        Issue Links

          Activity

            People

              Tao Yang Tao Yang
              Tao Yang Tao Yang
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated: