コード例 #1
0
        /// <summary>Add multiple resources for the specified interval</summary>
        /// <param name="reservationInterval">
        /// the interval for which the resource is to be
        /// added
        /// </param>
        /// <param name="ReservationRequests">the resources to be added</param>
        /// <param name="clusterResource">the total resources in the cluster</param>
        /// <returns>true if addition is successful, false otherwise</returns>
        public virtual bool AddCompositeInterval(ReservationInterval reservationInterval,
                                                 IList <ReservationRequest> ReservationRequests, Org.Apache.Hadoop.Yarn.Api.Records.Resource
                                                 clusterResource)
        {
            ReservationRequest aggregateReservationRequest = Org.Apache.Hadoop.Yarn.Util.Records
                                                             .NewRecord <ReservationRequest>();

            Org.Apache.Hadoop.Yarn.Api.Records.Resource capacity = Org.Apache.Hadoop.Yarn.Api.Records.Resource
                                                                   .NewInstance(0, 0);
            foreach (ReservationRequest ReservationRequest in ReservationRequests)
            {
                Resources.AddTo(capacity, Resources.Multiply(ReservationRequest.GetCapability(),
                                                             ReservationRequest.GetNumContainers()));
            }
            aggregateReservationRequest.SetNumContainers((int)Math.Ceil(Resources.Divide(resourceCalculator
                                                                                         , clusterResource, capacity, minAlloc)));
            aggregateReservationRequest.SetCapability(minAlloc);
            return(AddInterval(reservationInterval, aggregateReservationRequest));
        }