Managing resource allocation in a stream processing framework
First Claim
1. A method, comprising:
- operating, by at least one processor, a computing grid that includes machine resources;
identifying, by the at least one processor, a container configured to include at least one machine configured to use an allocated amount of the machine resources;
initially allocating, by the at least one processor, a set of machines to the container;
initially allocating, by the at least one processor, a set of machine resources to the container, for use by the set of machines;
initially allocating, by the at least one processor, a task sequence to the container;
running, by the at least one processor, the task sequence,wherein the task sequence is configured to be run as multiplexed units of work in the container under control of a container-scheduler, andwherein a multiplexed unit of work of the multiplexed units of work is configured to be run to completion in the container, within a predetermined time, using the set of machine resources;
performing, by the at least one processor, data stream analysis, of a continuous data stream for processing by the task sequence;
determining, by the at least one processor, based on the data stream analysis, that a data volume for the task sequence is expected to decrease after a surge in the data volume; and
responsive to the determining, automatically changing, by the at least one processor, the container'"'"'s allocation of task sequences, machines, or machine resources, based on the data stream analysis.
1 Assignment
0 Petitions
Accused Products
Abstract
The technology disclosed relates to managing resource allocation to task sequences in a stream processing framework. In particular, it relates to operating a computing grid that includes machine resources, with heterogeneous containers defined over whole machines and some containers including multiple machines. It also includes initially allocating multiple machines to a first container, initially allocating first set of stateful task sequences to the first container, running the first set of stateful task sequences as multiplexed units of work under control of a container-scheduler, where each unit of work for a first task sequence runs to completion on first machine resources in the first container, unless it overruns a time-out, before a next unit of work for a second task sequence runs multiplexed on the first machine resources. It further includes automatically modifying a number of machine resources and/or a number assigned task sequences to a container.
226 Citations
19 Claims
-
1. A method, comprising:
-
operating, by at least one processor, a computing grid that includes machine resources; identifying, by the at least one processor, a container configured to include at least one machine configured to use an allocated amount of the machine resources; initially allocating, by the at least one processor, a set of machines to the container; initially allocating, by the at least one processor, a set of machine resources to the container, for use by the set of machines; initially allocating, by the at least one processor, a task sequence to the container; running, by the at least one processor, the task sequence, wherein the task sequence is configured to be run as multiplexed units of work in the container under control of a container-scheduler, and wherein a multiplexed unit of work of the multiplexed units of work is configured to be run to completion in the container, within a predetermined time, using the set of machine resources; performing, by the at least one processor, data stream analysis, of a continuous data stream for processing by the task sequence; determining, by the at least one processor, based on the data stream analysis, that a data volume for the task sequence is expected to decrease after a surge in the data volume; and responsive to the determining, automatically changing, by the at least one processor, the container'"'"'s allocation of task sequences, machines, or machine resources, based on the data stream analysis. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method, comprising:
-
operating by at least one processor, a computing grid that includes machine resources; identifying, by the at least one processor, a container configured to include at least one machine configured to use an allocated amount of the machine resources; initially allocating, by the at least one processor, a set of machines to the container; initially allocating, by the at least one processor, a set of machine resources to the container, for use by the set of machines; initially allocating, by the at least one processor, a task sequence to the container; running, by the at least one processor, the task sequence, wherein the task sequence is configured to be run as multiplexed units of work in the container under control of a container-scheduler, and wherein a multiplexed unit of work of the multiplexed units of work is configured to be run to completion in the container, within a predetermined time, using the set of machine resources; performing, by the at least one processor, data stream analysis, of a continuous data stream for processing by the task sequence; determining, by the at least one processor, based on the data stream analysis, that a data volume for the task sequence is expected to surge and that the set of machines allocated to the container have not yet reached a predetermined maximum; and responsive to the determining, automatically changing, by the at least one processor, the container'"'"'s allocation of task sequences, machines, or machine resources, based on the data stream analysis. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A method, comprising:
-
identifying, by at least one processor, a container configured to include at least one machine configured to use an allocated amount of machine resources; initially allocating, by the at least one processor, a set of machines to the container; initially allocating, by the at least one processor, a set of machine resources to the container, for use by the set of machines; initially allocating by the at least one processor, a set of task sequences to the container; receiving, by the at least one processor, input from a replayable input source; triggering, by the at least one processor, the set of task sequences to process the input; running, by the at least one processor, the set of task sequences, wherein the set of task sequences is configured to be run as multiplexed units of work in the container under control of a container-scheduler, wherein a multiplexed unit of work of the multiplexed units of work is configured to be run to completion in the container, within a predetermined time, using the set of machine resources; during the running, persisting, by the at least one processor, state information of the set of task sequences; detecting, by the at least one processor, runtime of a unit of work in a faulty task sequence, of the set of task sequences, exceeding a predetermined timeout threshold; restarting, by the at least one processor, the faulty task sequence by automatically reloading persisted state information of the faulty task sequence; automatically rewinding, by the at least one processor, the input from the replayable input source to the faulty task sequence to a point preceding the detecting and synchronized with the persisted state information for the faulty task sequence; and rerunning, by the at least one processor, the faulty task sequence to completion of the unit of work without exceeding the predetermined timeout threshold. - View Dependent Claims (13, 14)
-
-
15. A system including at least one processor coupled to memory, the memory loaded with computer instructions that, when executed by the at least one processor, cause the at least one processor to perform actions comprising:
-
operating a computing grid that includes machine resources; identifying a container configured to include at least one machine configured to use an allocated amount of the machine resources; initially allocating a set of machines to the container; initially allocating a set of machine resources to the container, for use by the set of machines; initially allocating a task sequence to the container; running the task sequence, wherein the task sequence is configured to be run as multiplexed units of work in the container under control of a container-scheduler, wherein a multiplexed unit of work of the multiplexed units of work is configured to be run to completion in the container, within a predetermined time, using the set of machine resources; performing data stream analysis, of a continuous data stream for processing by the task sequence; determining based on the data stream analysis, that a data volume for the task sequence is expected to decrease after a surge in the data volume; and responsive to the determining, automatically changing the container'"'"'s allocation of task sequences, machines, or machine resources, based on the data stream analysis. - View Dependent Claims (16, 17, 18, 19)
-
Specification