Computer-implemented method, computer program, and system (distributed multi-environment stream computing)
The system optimizes stream computing workloads across multiple environments by using a stream processing manager to distribute and manage processing units with machine learning, improving cost, performance, and reliability.
Patent Information
- Application Number
- JP2021201847
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-15
- Filing Date
- 2021-12-13
- Publication Date
- 2025-08-19
- Estimated Expiration
- 2041-12-13
Smart Images

Figure 0007725141000001 
Figure 0007725141000002 
Figure 0007725141000003
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to the field of stream computing, and more particularly to distributed stream computing jobs across multiple computing environments. [Background technology]
[0002] Stream computing (also referred to as "stream processing," "streaming processing," "multiple stream processing," etc.) is a known technique for running queries on continuous streams of data, such as data from sensors, cameras, news feeds, etc. In a stream processing job, operators perform operations on data streams, and individual pieces of data in a data stream are generally referred to as "tuples." Operators are generally contained within individual execution units, sometimes called "processing units" or "processing elements."
[0003] A stream computing system may be implemented in a single computing environment, such as a single cloud computing environment or data center, or in a distributed environment, where individual parts of a stream processing job, such as processing elements, are distributed across multiple computing environments, such as multiple cloud computing environments operated by different cloud vendors. Summary of the Invention [Problem to be solved by the invention]
[0004] Many existing stream computing service and product offerings are designed to operate in a single environment, such as a particular cloud computing environment or data center. However, enterprises or other entities may choose to run workloads in multi-cloud environments for a variety of reasons. [Means for solving the problem]
[0005] According to an aspect of the invention, there is a method, computer program product, or system, or combination thereof, that performs the following operations (not necessarily in this order): (i) establishing, by a stream processing manager node, data communication between the stream processing manager node and multiple stream processing instances executing on respective computing environments in a multi-environment computing system, (ii) distributing, by the stream processing manager node, one or more processing units of a stream processing job to a first set of stream processing instances of the multiple stream processing instances, (iii) receiving, by the stream processing manager node, processing results associated with one or more processing units of the stream processing job from one or more stream processing instances of the first set of stream processing instances, and (iv) performing, by the stream processing manager node, a machine learning-based stream management operation based at least in part on the received processing results. [Brief explanation of the drawings]
[0006] [Figure 1] 1 illustrates a cloud computing node used in a first embodiment of the system according to the present invention;
[0007] [Figure 2] 1 illustrates an embodiment of a cloud computing environment (also referred to as a "first embodiment system") in accordance with the present invention.
[0008] [Figure 3] 1 illustrates abstraction model layers used in the system of the first embodiment.
[0009] [Figure 4] 3 is a flowchart illustrating a method of the first embodiment that is performed at least in part by a system of the first embodiment.
[0010] [Figure 5] FIG. 2 is a block diagram showing the machine logic (for example, software) portion of the system of the first embodiment.
[0011] [Figure 6] 1 is a diagram illustrating an example of a conventional stream computing system, according to an embodiment of the present invention.
[0012] [Figure 7] 1 is a diagram illustrating an example of a multi-cloud stream computing environment, according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION
[0013] Stream computing is a growing field of near-real-time data analysis. Many existing stream computing service and product offerings are designed to operate in a single environment, such as a specific cloud computing environment or data center. However, enterprises or other entities may choose to run workloads in a multi-cloud environment for a variety of reasons. Distributing stream computing workloads across environments allows enterprises to utilize capabilities from different vendors to optimize cost and performance and also increases reliability through redundancy. Furthermore, distributing stream computing workloads across cloud data centers in different geographic regions helps meet data sovereignty requirements and reduces latency for users to access data. Various embodiments of the present invention provide a stream computing system configured for deployment across multiple cloud environments modified to manage, optimize, and improve problem determination and increase the resiliency of stream computing workloads using various techniques, including machine learning.
[0014] This detailed description section is divided into the following subsections: (i) Hardware and Software Environment, (ii) Exemplary Embodiments, (iii) Further Comments or Embodiments or Combinations thereof, and (iv) Definitions. I. Hardware and Software Environment
[0015] The present invention may be a system, method, or computer program product, or combination thereof, at any possible level of integration of technical detail. The computer program product may include computer-readable storage medium(s) having computer-readable program instructions for causing a processor to carry out aspects of the present invention.
[0016] A computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium itself should not be construed as a transitory signal, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over an electrical wire.
[0017] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device, or may be downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0018] The computer-readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk® or C++, and procedural programming languages such as the “C” programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, to carry out aspects of the present invention, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry.
[0019] Aspects of the present invention are described herein with reference to flowchart illustrations or block diagrams, or combinations thereof, of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations or block diagrams, or combinations thereof, and combinations of blocks in the flowchart illustrations or block diagrams, or combinations thereof, can be implemented by computer-readable program instructions.
[0020] These computer-readable program instructions may be provided to a computer processor or other programmable data processing apparatus to produce a machine, which, when executed by the computer processor or other programmable data processing apparatus, forms means for implementing the functions / acts specified in the flowchart or block diagram block(s), or combinations thereof. These computer-readable program instructions may also be stored in a computer-readable storage medium, which may instruct a computer, programmable data processing apparatus, or other device, or combinations thereof, to function in a particular manner, such that the computer-readable storage medium having instructions stored thereon comprises a product including instructions that implement aspects of the functions / acts specified in the flowchart or block diagram block(s), or combinations thereof.
[0021] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device and executed on the computer, other programmable apparatus, or other device to produce a series of operational steps to generate a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / operations specified in the flowchart or block diagram block(s) or combinations thereof.
[0022] The flowcharts and block diagrams in these figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur in a different order than that shown in the figures. For example, two blocks shown in succession may actually be performed as a single step, in parallel, substantially in parallel, partially or fully overlapping in time, or in some cases the blocks may be performed in reverse order, depending on the functionality involved. It should also be noted that each block of a block diagram or flowchart diagram, or combination thereof, and combinations of blocks in a block diagram or flowchart diagram, or combination thereof, may be implemented by a special-purpose hardware-based system that performs the specified function or operation or executes a combination of special-purpose hardware and computer instructions.
[0023] Although this disclosure includes detailed descriptions related to cloud computing, it should be understood in advance that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.
[0024] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processes, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0025] The characteristics are as follows:
[0026] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically and as needed without requiring human interaction with the service provider.
[0027] Wide network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, mobile phones, laptops, and PDAs).
[0028] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. Although consumers generally have no control or knowledge of the exact location of the resources provided, there is an implication of location independence in that the location may be specifiable at a higher level of abstraction (e.g., country, state, or data center).
[0029] Rapid Elasticity: Capacity can be quickly and elastically provisioned, in some cases automatically, to quickly scale out, and quickly released to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased in any amount at any time.
[0030] Metered Services: Cloud systems automatically control and optimize resource usage using metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.
[0031] The service model is as follows:
[0032] Software as a Service (SaaS): The consumer is offered the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0033] Platform as a Service (PaaS): The ability offered to consumers is to deploy consumer-generated or ingested applications, created using programming languages and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, application hosting environment configuration.
[0034] Infrastructure as a Service (IaaS): The ability offered to consumers is to provision processing, storage, network, and other underlying computing resources. Consumers can deploy and run any software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but do have control over the operating system, storage, deployed applications, and possibly limited control of selected network components (e.g., host firewalls).
[0035] The deployment model is as follows:
[0036] Private Cloud: Cloud infrastructure is run exclusively for an organization. It may be managed by that organization or a third party and may reside on-premise or off-premise.
[0037] Community Cloud: Cloud infrastructure is shared by multiple organizations to support a specific community of shared interests (e.g., mission, security requirements, policies, and compliance considerations). It may be managed by the organization or a third party and may exist on-premises or off-premises.
[0038] Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by organizations that sell cloud services.
[0039] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain their own entities but are tied together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting to balance load between clouds).
[0040] Cloud computing environments are service-oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0041] 1, a schematic diagram of an example cloud computing node is shown. Cloud computing node 10 is merely one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the inventive embodiments described herein. In any event, cloud computing node 10 is capable of implementing or performing any or a combination of the functions described above.
[0042] Cloud computing node 10 includes computer system / server 12 that operates in conjunction with many other general-purpose or application-specific computing system environments or configurations. Examples of well-known computing systems, environments, or configurations, or combinations thereof, that may be suitable for use with computer system / server 12 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.
[0043] The computer system / server 12 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 12 may be practiced in a distributed cloud computing environment, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0044] 1, computer system / server 12 in cloud computing node 10 is shown in the form of a general-purpose computing device. Components of computer system / server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 coupling various system components, including system memory 28, to processor 16.
[0045] Bus 18 represents any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures, such as, by way of example and not limitation, an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.
[0046] Computer system / server 12 typically includes a variety of computer system-readable media, which may be any available media that can be accessed by computer system / server 12, including both volatile and nonvolatile media, removable and non-removable media.
[0047] The system memory 28 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 30 or cache memory 32, or a combination thereof. The computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, the storage system 34 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown, typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical medium. In such cases, each may be connected to the bus 18 by one or more data medium interfaces. As further shown and described below, the memory 28 may include at least one program product including a set (e.g., at least one) of program modules configured to perform the functions of embodiments of the present invention.
[0048] By way of example and not limitation, a program / utility 40 including a set (at least one) of program modules 42 may be stored in memory 28, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may comprise an implementation of a network environment. The program modules 42 generally perform the functions or methods, or combinations thereof, of embodiments of the present invention described herein.
[0049] The computer system / server 12 may communicate with one or more external devices 14, such as a keyboard, pointing device, display 24, etc., one or more devices that allow a user to interact with the computer system / server 12, or any device (e.g., network card, modem, etc.) that allows the computer system / server 12 to communicate with one or more other computing devices, or a combination thereof. Such communication may occur via an input / output (I / O) interface 22. Furthermore, the computer system / server 12 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), or a public network (e.g., the Internet), or a combination thereof, via a network adapter 20. As shown, the network adapter 20 communicates with other components of the computer system / server 12 via a bus 18. While not shown, it should be understood that other hardware or software components, or combinations thereof, may be used with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, data archive storage systems, etc.
[0050] Referring now to FIG. 2, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 comprises one or more cloud computing nodes 10 that may communicate with local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or a combination thereof. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as the private, community, public, or hybrid clouds described above, or a combination thereof. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or a combination thereof, as a service without the cloud consumer having to maintain resources on their local computing device. It should be understood that the types of computing devices 54A-N shown in FIG. 2 are intended for illustrative purposes only, and that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device over any type of network or network-addressable connection, or a combination thereof (e.g., using a web browser).
[0051] Referring now to Figure 3, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 2) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 3 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0052] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (Minimum Instruction Set Computer) architecture-based server 62, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0053] The virtualization layer 70 provides an abstraction layer from which examples of virtual entities such as virtual servers 71, virtual storage devices 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75 can be sourced.
[0054] In one example, management layer 80 may provide the following functions: Resource provisioning 81 provides dynamic procurement of computing resources and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and charging or billing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and achievement 85 provides advance arrangement and procurement of cloud computing resources in anticipation of future requirements according to SLAs.
[0055] The workload layer 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and stream processing management 96, which are described in more detail below in the following subsections of this detailed description section.
[0056] The programs described herein are identified based on the application for which they are implemented in a particular embodiment of the invention. However, it should be understood that any particular program names herein are used merely for convenience, and that the present invention should not be limited to use in only any particular application identified or suggested by such names, or in any combination thereof.
[0057] The description of various embodiments of the present invention is presented for illustrative purposes and is not intended to be exhaustive or to be limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over commercially available technologies, or to enable those skilled in the art to understand the embodiments disclosed herein. II. Illustrative Embodiments
[0058] Figure 4 shows a flowchart 250 illustrating a method in accordance with the present invention. Figure 5 shows a program 300 of the stream processing manager 96 (see Figure 3) for performing at least a portion of the operations of the method of flowchart 250. The method and associated software will now be described throughout the following paragraphs with broad reference to Figure 4 (method operation blocks) and Figure 5 (software blocks).
[0059] Generally, in this exemplary embodiment (also referred to in this subsection as “this embodiment,” “this example,” “this exemplary embodiment,” etc.), program 300, and more broadly, stream processing management 96, perform management operations related to the execution of one or more stream processing jobs. Stream processing jobs generally include processing units (or “processing elements”) that may be distributed across various stream processing instances executing on various computing environments of a multi-environment computing system. Such multi-cloud systems have cloud computing environments provided by at least two different cloud computing vendors. Note that this exemplary embodiment is used herein, for example, to help illustrate the scope of the invention. Accordingly, other embodiments (such as those described in the following further comments or embodiments subsections or combinations thereof) may be configured differently or may refer to other features, advantages, or characteristics, or combinations thereof, not fully described in this subsection.
[0060] While the description of this exemplary embodiment generally focuses on processing units / elements as execution units of stream processing jobs, it should be noted that the processing elements of this embodiment may be replaced by any other possible stream processing execution units known or not yet known in the art. For example, while stream processing operators that operate on input streams of tuple data and produce corresponding output streams are typically contained within a processing element, the term "operator" generally can often be substituted for the broader term "processing element," since the stream processing operations performed by a processing element are typically performed by respective operators contained within that processing element.
[0061] The processing elements of a stream processing job may be located, either physically or virtually, individually or collectively on respective nodes (e.g., "stream processing instances") of cloud computing environment 50. Furthermore, the processing elements of a stream processing job may also be located on nodes / stream processing instances of different environments, for example, from vendors other than the vendor of cloud computing environment 50. An example of such a configuration with multiple cloud computing environments is illustrated in FIG. 7 below and described below.
[0062] For purposes of this disclosure, a stream processing instance may be any computing construct capable of containing processing elements for stream processing jobs and having computing resources (e.g., CPU cores and memory) allocated to it for processing those stream processing jobs. In some embodiments, a stream processing instance is a virtual machine. In other embodiments, a stream processing unit is a cloud container, such as a Docker container. In still other embodiments, a stream processing unit is a Kubernetes pod (which may itself contain one or more cloud containers). In still other embodiments, a stream processing instance includes a combination of the above, or other known or unknown computing constructs that meet the above requirements. (Note: The terms "DOCKER" or "KUBERNETES" or combinations thereof) may be subject to trademark rights in various jurisdictions worldwide and are used herein only to refer to products or services appropriately designated by such marks, to the extent such trademark rights may exist.
[0063] In this exemplary embodiment, a program 300 of the stream processing management 96 (also referred to as a "stream processing management node") manages the distribution of stream computing job processing elements across various cloud computing environments and performs various other management-related tasks by communicating with multiple stream processing instances running on respective cloud computing environments in the multi-cloud computing system. The interactions between the stream processing management node and the stream processing instances on the various cloud computing environments are described throughout the following paragraphs.
[0064] Processing begins with operation S255, where a configuration ("config") module ("mod") 355 (see FIG. 5) establishes data communication between a stream processing management node and multiple stream processing instances. In this embodiment, the multiple stream processing instances are stored in respective cloud computing environments of a multi-cloud computing system. For example, in one case, (i) a first stream processing instance is stored in a public cloud environment provided by a first cloud vendor, (ii) a second stream processing instance is stored in a private cloud environment provided by a second cloud vendor, and (iii) a third stream processing instance is stored in a hybrid cloud environment provided by a third cloud vendor. By establishing data communication between the stream processing management node and the stream processing instances in each cloud environment, module 355 of program 300 can configure each stream processing instance to operate as if they were all running in the same, single cloud computing environment. For a description of how various environments can be created and configured to interact with each other, e.g., with respect to a particular stream processing job, see the further comments or embodiments subsections or combinations of this detailed description below.
[0065] Processing continues at operation S260, where the I / O module 360 distributes one or more processing units of a stream processing job to a first set of stream processing instances of a plurality of stream processing instances. That is, in this operation, the program 300 identifies a stream processing job to be executed (e.g., via the configuration module 355), identifies the job's corresponding processing elements, determines which stream processing instances to assign to which processing elements, and communicates those assignments and their associated data to the respective stream processing instances using the I / O module 360. The initial distribution of processing units to stream processing instances may be based on any number of wide-ranging factors, ranging from specific rules based on processing or memory requirements, or a combination thereof, to cost assessments associated with using each available stream processing instance. Furthermore, while processing units generally need to be distributed to at least one stream processing instance for execution, any number of possible combinations of stream processing instances may be used, and in some cases, a single processing unit may be assigned to multiple stream processing instances for redundancy or to spread a particular workload across multiple instances / environments, or a combination thereof. Also, for further explanation of how embodiments of the present invention distribute processing units to stream processing instances, please see the Further Comments and / or Embodiments subsections of this Detailed Description below.
[0066] Processing continues at operation S265, where the I / O module 360 receives processing results associated with one or more processing units of the stream processing job from one or more stream processing instances of the first set of stream processing instances. The processing results may include any data related to the processing of the stream computing job by the respective stream processing instance, including various data processing results (e.g., operator results), system information about the stream processing instance (e.g., available processing power, memory), or various analytics, or a combination thereof. All of these are described in further detail below, both in this subsection and in the Further Comments or Embodiments subsections of this Detailed Description, or a combination thereof.
[0067] Processing continues to operation S270, where the configuration module 355 performs a stream management operation based at least in part on the received processing results, utilizing the machine learning (ML) module 365. Any of a wide variety of stream management operations may be performed in this operation, including, for example, distributing processing units for new stream processing jobs, redistributing processing units for current stream processing jobs, and using / modifying parallel regions for stream processing jobs, as described below.
[0068] In various embodiments, the stream management operations are based on machine learning. That is, the stream management operations are selected using a machine learning-based selection strategy. In various embodiments, a machine learning model is trained to make this selection by utilizing processing results received as at least a portion of the training data for the training process. The training process can be any of a wide variety of training processes, for example, (i) a supervised training process, such as a process that uses labels for the training data (the labels are received from a human user, a digital annotator, or a combination thereof), (ii) an unsupervised process, such as a process that identifies patterns in the training data using cluster analysis or principal component analysis, (iii) a reinforcement learning process, such as a process that utilizes a Markov decision process or dynamic programming techniques, or a combination thereof, or (iv) a combination thereof.
[0069] Generally, the objective of the training process is to produce results that meet a particular goal or set of goals, regardless of the particular type of process employed. In the present embodiment, in which a machine learning model is used to select various stream management operations, the machine learning model is trained to select stream management operations based on how well they meet the goals. The goals may be any one or more of a wide range of possible goals, whether technical or business in nature. For example, some common technical goals may include (i) keeping CPU load to a minimum or below a certain amount, (ii) keeping RAM utilization to a minimum or below a certain amount, (iii) minimizing the amount of processing unit “wait time,” or (iv) maximizing throughput (e.g., tuple overflow rate), or a combination thereof. Some common business objectives include (i) general costs, (ii) costs that apply to specific time frames (e.g., during off hours, end of month / quarter), (iii) minimizing usage during specific "peak" or otherwise undesirable time frames, (iv) data sovereignty requirements in various jurisdictions, or (v) minimizing processing costs while maintaining a defined Quality of Service (QoS) performance rating, or a combination thereof.
[0070] Various other factors related to optimizing stream management jobs may also be considered in training the machine learning model. For example, in various embodiments, a machine learning model may be trained to optimize how external services (such as databases) are accessed. In these embodiments, if a stream processing job requires access to a database, for example, the machine learning model may be trained to identify which computing environment can access the database at the optimal cost and performance level. Another factor that may be considered is proximity to the source data. For example, if the input data for a stream processing job comes from a network of sensors in a region, the computing environment closest to the region may be selected for processing because that computing environment may have the most favorable cost and performance metrics for the job. Yet another factor that may be considered is the stability of the computing environment. For example, a machine learning model may be trained to identify which computing environment has the lowest number of power outages over a period of time and select that environment to run critical processing units for the job.
[0071] As mentioned above, in various embodiments, stream management operations fall into three general categories: initial distribution / allocation of processing units for a new stream processing job, redistribution of processing units for a current stream processing job, and use / modification of parallel regions for a stream processing job. For example, in various embodiments, a stream management operation includes distributing one or more processing units of a new stream processing job to a different set of stream processing instances than those used in the initial stream processing job. In these embodiments, the different set of stream processing instances may include some overlap with the initial set of stream processing instances used for the initial stream processing job, but this is not always the case, because in many situations, a set of goals may be best met by using different stream processing instances altogether. Furthermore, in some cases, the stream processing management node may identify that none of the available stream processing instances are suitable for meeting the goals of a stream processing job and may issue requests to various cloud computing environments of a multi-cloud computing system to create new stream processing instances with specifications that meet or are likely to meet the goals.
[0072] As described above, in various embodiments, a stream management operation includes instructing a first processing unit of one or more distributed processing units to be moved from a first stream processing instance to a second stream processing instance during execution of a stream processing job. In various embodiments, decisions similar to those described in the preceding paragraph may be made, such as reallocating some but not all of the processing units or requesting the creation of one or more new stream processing instances that better meet desired goals. Additionally, the decision to move a processing unit between stream processing instances may also depend on real-time metrics about how the stream processing job is performing. For example, if the ML module 365 determines, based on real-time processing results received by the I / O module 360, that a first stream processing instance no longer meets its cost target by more than a certain amount, the configuration module 355 may instruct the redistribution of one or more of the processing elements of the first stream processing instance to a second stream processing instance that processes the processing elements at a cost that is at least a certain amount lower than the cost of the first stream processing instance, such that the combined total cost of processing using the first and second stream processing instances meets the cost target. In another example, if the real-time processing results indicate that the first stream processing instance has terminated or is likely to terminate, the ML module 365 may redistribute the processing elements of the first stream processing instance to one or more other available stream processing instances that have not terminated or are not likely to terminate.
[0073] Finally, as mentioned above, in various embodiments, stream management operations include the use / modification of parallel regions for stream processing jobs. Generally, parallel regions allow a stream processing job to replicate certain operators within processing units / elements, split streams going to those operators, and process different tuples in parallel at the replicated operators, where the replicated operators and their respective streams are considered “parallel regions” or “channels.” For example, one example of a stream management operation involving parallel regions is to increase the width of the parallel region and further replicate the operator so that more parallel regions are created. In various embodiments, the parallel regions may all remain within the same processing unit; in other (or the same) embodiments, the parallel regions may be distributed to different processing units or stream processing instances, or a combination thereof, as desired / needed to meet identified goals. Thus, in some cases, stream management operations include the ML module 365 determining that more channels are needed and instructing the creation of one or more new channels associated with certain operators to run on a new (e.g., third) set of stream processing instances. III. Further Comments or Embodiments or Combinations
[0074] Various embodiments of the present invention provide a system for distributing stream computing workloads across multiple cloud computing regions and vendors. For example, in some embodiments, a stream manager incorporates the following techniques to better manage streaming workloads running in multiple clouds: (i) integration, i.e., centralized and remote management of instance and job objects in multiple clouds; (ii) problem determination, i.e., deeper integration with cloud and system monitoring tools; (iii) high availability, i.e., instance and job failover across clouds; or (iv) cost and job performance optimization through machine learning, including job submission to clouds, job migration across clouds, and enhanced parallel regions and other programmatic concepts for running channels in optimal cloud configurations, or a combination thereof.
[0075] In various embodiments, the multi-cloud stream manager learns the best or optimal cloud environment to run a particular job. In various embodiments, to determine the best cloud environment to run a streaming workload, the stream manager continuously collects cost rates and performance metrics. These metrics are used to determine which optimal cloud environment to submit a stream computing job to, when to relocate a job to a different cloud environment, and when to use program techniques, including parallel regions, to run a job on multiple clouds.
[0076] In various embodiments, where a stream computing job is running is hidden from the end user. In various embodiments, an end user or developer simply uses or writes a distributed stream computing application. In various embodiments, the developer deploys the application to a multi-cloud stream manager that places the application's jobs to optimally meet goals (or service level agreements (SLAs)). In various embodiments, debugging and unified viewing techniques are incorporated for administrators and developers to debug applications from a single pane of glass or portal. From the end user's perspective, the application runs as if it were running in a single location, and the multi-cloud distribution is invisible.
[0077] 6 shows a diagram 600 illustrating an example of a conventional stream computing system, according to an embodiment of the present invention. In this embodiment, a stream computing system 602 runs in a single managed environment (e.g., a single cloud, an on-site / private cloud deployment, or a set of managed hosts, or a combination thereof), where processing units 606A-N (such as the "stream processing instances" described above) are located in various hosts 604A-N, and placement and resource management is performed by a management service 608. In this embodiment, distributed technologies are optimized to function well in a single managed environment, providing, for example, high availability and redundancy.
[0078] However, while operating a stream computing system in a single, managed environment has various advantages, the field of stream computing is moving into a world where applications run across multiple environments, where multiple cloud environments and deployment models are used to optimally deploy and execute stream computing applications. Existing stream computing system designs are not sufficient to meet this technological advancement. For example, while it may be possible to write complex streaming applications that interact across multiple cloud environments, such work is tedious and requires non-trivial development effort and management. What is needed is a solution that addresses the problems developers and administrators face when developing and deploying jobs in stream computing environments that run across multiple cloud environments.
[0079] Various embodiments of the present invention provide a novel approach for changing the distribution paradigm of stream computing systems from a single environment to a multi-cloud environment. In various embodiments, this approach includes multiple components: (i) integration, i.e., centralized management of stream computing jobs; (ii) problem determination, i.e., centralized problem determination tools for debugging stream jobs across multiple environments; (iii) high availability, i.e., extending real-time failover to multiple environments; and (iv) optimization, i.e., machine learning-based solutions based on per-environment time-series performance data and SLAs for performing various core stream computing functions, including job submission (where should a stream application be deployed initially?), job relocation (is there a more optimal environment available to run the current job? If so, where?), and job parallelization (e.g., extending a parallel region to multiple environments to handle workload spikes).
[0080] FIG. 7 shows a diagram 700 illustrating an example of a multi-cloud stream computing environment (i.e., a stream computing system 702) according to an embodiment of the present invention. As shown in FIG. 7, stream processing instances 710A-C are hosted on cloud environment A 704, cloud environment B 706, and cloud environment C 708, respectively, and are managed by a stream manager 712. In this embodiment, the stream manager 712 provides centralized stream processing services and collects metadata from each stream processing instance 710A-C. Furthermore, while the stream manager 712 is illustrated as being hosted outside of cloud environment A 704, cloud environment B 706, and cloud environment C 708, it should be appreciated that in various embodiments, the stream manager 712 may be hosted in any or all of cloud environment A 704, cloud environment B 706, and cloud environment C 708, and failover or other high availability options, or a combination thereof, may also be utilized.
[0081] In various embodiments, a stream computing application may be deployed to a multi-cloud environment (e.g., stream computing system 702) in one (or both) of two different ways. In some embodiments where a stream manager (e.g., stream manager 712) is configured to provision services in a multi-cloud environment, the stream manager may select a cloud type and deploy new stream processing instances of the selected type to each cloud environment. In other (or the same) embodiments where stream processing instances may be created at the environment level, an administrator of a cloud environment in a multi-cloud environment may create stream processing instances for the cloud environment, and the created stream processing instances may communicate with the stream manager to provide metadata about the stream processing instance's respective environment.
[0082] In various embodiments, stream processing instances are grouped into higher-level multi-cloud instances. For example, in these embodiments, metadata for various running stream processing instances may be integrated into a stream manager graphical user interface (GUI), where data across multiple stream processing instances and environments is collected and presented in a single cloud view.
[0083] In various embodiments, a stream computing job is submitted to a multi-cloud stream manager (e.g., stream manager 712). In these embodiments, the multi-cloud stream manager evaluates placement options to occur in a single cloud environment. Exceptionally, instead of considering metrics associated with a single cloud environment, it evaluates all registered cloud environments. Furthermore, in these embodiments, the job may be divided into processing elements, including operators, and may be executed while appearing to an end user or developer as occurring in a single environment.
[0084] In various embodiments, developers and administrators can view applications running in a multi-cloud environment (such as stream computing system 702) from a single GUI. In these embodiments, stream processing elements may run in multiple different cloud environments, but the single view provides a virtualized abstraction layer to optimize debugging and development.
[0085] In various embodiments, a stream manager that provides centralized, remote management of stream computing instances and job objects across multiple clouds recognizes the following features, characteristics, or advantages, or a combination thereof: (i) providing a single view of all instances, jobs, and processing elements, which may be grouped by user, region, vendor, type of cloud environment (private, public, etc.), and the like; (ii) communicating with each stream processing instance to obtain instance characteristics and information about running jobs and processing elements, which may then be aggregated and displayed using filters, groups, and sorts; (iii) enabling each stream processing instance to register for event notifications, such as health alerts when an instance or job becomes unhealthy according to various metrics; (iv) enabling custom create, read, update, and delete (CRUD) operations across clouds (e.g., create identical instances in clouds A and B, or get unhealthy jobs for all instances in clouds A and B); or (v) enabling queries with predicates to be sent to instances across clouds to obtain specific information or send targeted commands, or a combination thereof.
[0086] Problem determination in a multi-cloud environment can be significantly more difficult than in a single environment because a multi-cloud environment may use a wide range of different technologies in the underlying infrastructure (various container technologies, virtual machines, physical hosts, and custom implementations). Information about the specific infrastructure of a cloud environment may be available via application program interface (API) calls.
[0087] Despite the various different technologies that may be employed in a multi-cloud environment, the fundamental fault detection of stream computing applications remains largely the same. For example, regardless of the infrastructure platform, stream computing applications may encounter job failures, storage issues, network issues, bandwidth issues, and the like. Nevertheless, in each environment, debugging can be tedious because administrators need to know which APIs to use, which tools to load, and the like.
[0088] Thus, various embodiments of the present invention integrate multiple cloud platform problem determination API technologies to provide a single problem determination. In various embodiments, problems are associated with underlying environmental issues (derived from available APIs) and presented to an administrator or developer in a single view, as if in a single environment, effectively virtualizing problem determination across multiple clouds.
[0089] In various embodiments, the stream manager (e.g., stream manager 712) may integrate with existing cloud and system monitoring tools to help determine the likely causes when an instance or job becomes unhealthy. When a stream health alert is issued, for example, the stream manager searches for and correlates other alerts that occur at that time. In some cases, an instance that remains unhealthy may be related to underlying issues such as a downed host, a network partition issue, high memory / CPU, insufficient disk space, a disk failure, and the like. For each instance or job, the stream manager collects system information, such as the host being used. When an instance or job becomes unhealthy, the stream manager may query monitoring systems to check for any open alerts that may be related.
[0090] Existing stream processing systems may be built for high availability, but this is typically limited to a single environment rather than a multi-cloud environment. Additionally, single-environment systems risk datacenter issues that can result in the termination or otherwise shutdown of stream processing jobs. Various embodiments of the present invention, which enable multiple stream processing instances across multiple clouds, where a stream manager stores global configurations, job configurations, and application bundles, allow processing units / elements that are shut down in different cloud regions of the same provider or entirely separate cloud providers to automatically restart in a different cloud environment. By using data from the integrated problem determination, a scheduler can determine the most optimal cloud environment and instance to deploy processing units / elements to.
[0091] In various embodiments, if a cloud data center goes down, the stream manager can automatically move instances and jobs to a designated backup cloud environment. In these embodiments, instances can be created with identical configurations and jobs can be restarted using application bundles from a global repository. When an instance is created or updated, its configuration settings are recorded with the stream manager so that the instance can be recreated in another environment. Similarly, during job submission, job configuration details and application bundles are omitted so that the application can be resubmitted in another instance if necessary.
[0092] In various embodiments, a stream manager (such as stream manager 712) collects metrics from various cloud environments and instances across all cloud instances. In these embodiments, cloud-specific performance, uptime, and failure rate metrics are collected for jobs running in various cloud environments. Time series analysis of job types, attributes, and data can be used to make optimal placement decisions, such as decisions currently made by a scheduler in a single environment.
[0093] As described above, the stream manager may be configured to optimize (i) job submission decisions, (ii) job migration decisions, and (iii) parallel region decisions for a multi-cloud stream computing environment. For example, in various embodiments, the stream manager trains machine learning models to make optimal decisions based at least in part on data received from various cloud instances in the multi-cloud environment and analysis of that data.
[0094] In various embodiments, to optimize job submission decisions ((i) above), the stream manager determines cost and throughput using data aggregated from various cloud instances using cloud-specific and stream processing APIs. In these embodiments, policies and SLAs can be established at the application level and are used in conjunction with the aggregated data to provide hints to the scheduler on optimal initial placement of jobs.
[0095] For example, when the same job runs on multiple clouds, the stream manager may collect metrics about pricing and throughput for comparison. The stream manager may learn over time to submit jobs to the best environments to optimize cost and performance. Job submitters may also provide hints to the stream manager by specifying weights for factors such as cost and tuple throughput. The stream manager may calculate a composite score based on recent metrics and make a decision about where the job is submitted.
[0096] In various embodiments, to optimize job migration decisions ((ii) above), the stream manager uses performance metrics and cost data aggregated from different cloud environments to provide the ability to relocate jobs to the most optimal cloud environment at the most optimal time. For example, one cloud environment may experience congestion at a particular time. Over time, the stream manager recognizes congestion patterns and provides hints to the scheduler to relocate jobs to more optimal cloud environments.
[0097] In one example, based on proximity to source data, the stream manager may automatically decide to move a job to another cloud for optimal performance. For example, a stream job processing real-time stock market data may move from a cloud in New York to a cloud in London depending on when the market opens. Job migration may be achieved by canceling the job in one environment and submitting it to another. This may be done on a fixed schedule or may be learned over time by examining the tuple rates of the input data.
[0098] In various embodiments, parallel regions ((iii) above) are used in stream processing systems to handle spikes in data flow by scaling stream jobs up and down as needed. In various embodiments, the stream manager uses data aggregated from different cloud instances to identify parallel regions that can scale across multiple cloud instances.
[0099] For example, one benefit of having a hybrid cloud is the ability to run a workload in a private cloud and scale out part of the workload to a public cloud to handle spikes. To handle periods of heavier workload, the stream manager may choose to increase the width of the parallel region in the job, causing new channels to run in the public cloud, which has a larger pool of resources. After the peak period has passed, the parallel region can be scaled back.
[0100] In various embodiments, when the stream manager decides to increase the width of a parallel region, the stream manager selects a public cloud to run the new channel. For example, a new parallel channel is created by submitting an application that includes only the operators in the region. The input and output ports of the new channel are externally accessible. The splitter and merger operators of the parallel region are adjusted to connect to the new channel.
[0101] As mentioned above, stream computing technology is typically associated with a single deployed cloud environment, but the concept of extending the technology across multiple clouds to take advantage of performance, reliability, high availability, and cost savings is the future of this distributed technology. Various embodiments of the present invention utilize a cloud manager aggregated to a common cloud environment and can be extended (using APIs) to be aggregated to any data center or private cloud environment as needed. Various embodiments provide a virtualization architecture that allows stream computing applications to be developed today and deployed today, but to run in a multi-cloud environment.
[0102] Various embodiments of the present invention use analytics and machine learning to determine the best cloud environment for running various streaming analytics jobs in a multi-cloud stream processing system. In various embodiments, some of the stream jobs may be dynamically changed to run on different clouds, for example, if more resources are needed to handle a workload spike.
[0103] In various embodiments, a stream manager in a stream processing system provides dynamic and flexible scaling by determining which portions of a stream job are congested and parallelizing only those areas. In other embodiments, for example, for a content distribution service, the entire service may simply be replicated on another resource for scaling. Furthermore, in various embodiments, the stream manager determines where to run processing units / elements to optimize job cost and throughput. This is in contrast to general-purpose resource load balancers that balance loads only based on resource usage, or systems that schedule resources based on priority.
[0104] In various embodiments, an administrator may configure which cloud environments are eligible to run additional processing units / elements.
[0105] Some embodiments of the present invention provide a system for executing stream computing workloads across multiple cloud environments in a multi-cloud system. The system includes multiple cloud environments having respective stream computing instances, and a stream computing management node communicatively coupled to each of the stream computing instances of the cloud environments. The management node is configured to (i) receive a stream computing job for processing, (ii) divide the stream computing job into multiple processing elements, (iii) distribute the processing elements to the respective stream computing instances for execution, and (iv) aggregate results from the distributed processing elements and provide the aggregated results to a user. In some embodiments, the management node is further configured to reallocate processing elements of the first stream computing instance to a second stream computing instance of a second cloud environment in response to identifying that a first stream computing instance of the first cloud environment has failed. In some embodiments, the management node is further configured to analyze metrics for each of the stream computing instances and dynamically distribute or move processing elements between the stream computing instances, or a combination thereof, based on the analysis. IV. Definition
[0106] The present invention: The subject matter described by the term "the present invention" should not be taken as an absolute indication that it is covered by either the claims at the time of filing or any claims that may eventually be issued after patent prosecution. The term "the present invention" is used to help the reader get a general sense that the disclosures herein are believed to be potentially new, but as indicated by the use of the term "the present invention," this understanding is hypothetical and provisional, and is subject to change during the course of patent prosecution as relevant information evolves, as the claims are potentially amended.
[0107] Embodiments: See definition of "present invention" above. A similar caution applies to the term "embodiments."
[0108] "Or": an inclusive or. For example, A, B, "or" C, "or a combination thereof" means that at least one of A or B or C is true and applicable.
[0109] Including / include / includes: means "including but not necessarily limited to," unless expressly stated otherwise.
[0110] User: Includes, but is not necessarily limited to, (i) a single individual human being, (ii) an artificial intelligence entity with sufficient intelligence to act as a User, or (iii) a group of related Users, or any combination thereof.
[0111] Data Communications: Any type of data communication method now known or later developed, including wireless communication, wired communication, and communication paths that include wireless and wired portions, and data communications is not necessarily limited to (i) direct data communication, (ii) indirect data communication, and / or (iii) data communication in which the format, packetization status, medium, encryption status, and / or protocol remain constant throughout the course of the data communication.
[0112] Receive / Provide / Send / Input / Output / Report: Unless otherwise expressly specified, these words should not be construed as implying (i) any particular degree of directness regarding the relationship between their subject and object, and / or (ii) the absence of intermediate components, actions, and / or things that intervene between their subject and object.
[0113] Automatic: Without any human intervention.
[0114] Module / Sub-Module: Any set of hardware, firmware, or software, or combination thereof, operable to perform a certain function, whether the module is (i) in a single local proximity, (ii) distributed over a wide area, (iii) in a single proximity within a larger software code, (iv) located within a single software code, (v) located within a single storage device, memory, or medium, (vi) mechanically connected, (vii) electrically connected, or (viii) connected in data communication, or any combination thereof.
[0115] Computer: Any device having significant data processing or machine-readable instruction reading capability, or a combination thereof, including, but not limited to, desktop computers, mainframe computers, laptop computers, field programmable gate array (FPGA)-based devices, smartphones, personal digital assistants (PDAs), body-worn or body-insertable computers, embedded device-style computers, and application-specific integrated circuit (ASIC)-based devices.
Claims
1. 1. A computer-implemented method comprising: establishing, by a stream processing manager node, data communication between the stream processing manager node and a plurality of stream processing instances executing on respective computing environments in the multi-environment computing system; distributing, by the stream processing management node, one or more processing units of a stream processing job to a first set of stream processing instances of the plurality of stream processing instances; receiving, by the stream processing manager node, processing results associated with the one or more processing units of the stream processing job from the one or more stream processing instances of the first set of stream processing instances; performing, by the stream processing management node, a machine learning-based stream management operation based at least in part on the received processing results; 1. A computer-implemented method comprising:
2. 2. The computer-implemented method of claim 1 , wherein the machine learning based stream management operation includes distributing one or more processing units of a new stream processing job to a second set of stream processing instances of the plurality of stream processing instances based at least in part on the received processing results.
3. 3. The computer-implemented method of claim 1, wherein the machine learning-based stream management operation includes instructing a first processing unit of the distributed one or more processing units to be moved from a first stream processing instance to a second stream processing instance based at least in part on the received processing results.
4. 4. The computer-implemented method of claim 3, wherein the machine learning based stream management operation is further based at least in part on identifying that the first processing unit has been terminated by the first stream processing instance.
5. The computer-implemented method of claim 1 , wherein the machine learning based stream management operation comprises increasing a width of a parallel region associated with the stream processing job.
6. 6. The computer-implemented method of claim 5, wherein increasing the width of the parallel region associated with the stream processing job comprises instructing the creation of one or more new channels associated with processing units executing on a third set of stream processing instances of the plurality of stream processing instances.
7. 7. The computer-implemented method of claim 1, wherein the machine learning based stream management operations are further based at least in part on processing or memory requirements, or a combination thereof, of the one or more processing units of the stream processing job.
8. The computer-implemented method of claim 1 , wherein the multi-environment computing system is a multi-cloud system having cloud computing environments from at least two different cloud computing vendors.
9. 9. The computer-implemented method of claim 1, further comprising training, by the stream processing management node, a machine learning model to perform the machine learning-based stream management operation that utilizes the received processing results as training data.
10. On the stream processing management node, establishing data communication between the stream processing manager node and a plurality of stream processing instances executing on respective computing environments in a multi-environment computing system; distributing one or more processing units of a stream processing job to a first set of stream processing instances of the plurality of stream processing instances; receiving processing results associated with the one or more processing units of the stream processing job from the one or more stream processing instances of the first set of stream processing instances; performing a machine learning based stream management operation based at least in part on the received processing results; A computer program for executing
11. 11. The computer program product of claim 10, wherein the machine learning based stream management operation includes distributing one or more processing units of a new stream processing job to a second set of stream processing instances of the plurality of stream processing instances based at least in part on the received processing results.
12. 12. The computer program product of claim 10 or 11, wherein the machine learning based stream management operation comprises instructing a migration of a first processing unit of the distributed one or more processing units from a first stream processing instance to a second stream processing instance based at least in part on the received processing results.
13. 13. The computer program product of claim 10, wherein the machine learning based stream management operation comprises increasing a width of a parallel region associated with the stream processing job.
14. The computer program product of claim 10 , wherein the multi-environment computing system is a multi-cloud system having cloud computing environments from at least two different cloud computing vendors.
15. The stream processing management node, 15. The computer program product of claim 10, further comprising: training a machine learning model to perform the machine learning-based stream management operation using the received processing results as training data.
16. A computer system comprising: a stream processing manager node having a processor set; and a computer-readable storage medium, the processor set is structured, arranged, connected, or programmed, or any combination thereof, to execute program instructions stored on the computer-readable storage medium; The stored program instructions include: program instructions for establishing data communication between the stream processing manager node and a plurality of stream processing instances executing on respective computing environments in a multi-environment computing system; program instructions for distributing one or more processing units of a stream processing job to a first set of stream processing instances of the plurality of stream processing instances; program instructions for receiving processing results associated with the one or more processing units of the stream processing job from the one or more stream processing instances of the first set of stream processing instances; program instructions for performing a machine learning based stream management operation based at least in part on the received processing results; 2. A computer system comprising:
17. 17. The computer system of claim 16, wherein the machine learning based stream management operation includes distributing one or more processing units of a new stream processing job to a second set of stream processing instances of the plurality of stream processing instances based at least in part on the received processing results.
18. 18. The computer system of claim 16 or 17, wherein the machine learning based stream management operation includes instructing a first processing unit of the distributed one or more processing units to be migrated from a first stream processing instance to a second stream processing instance based at least in part on the received processing results.
19. 19. The computer system of claim 16, wherein the machine learning based stream management operation comprises increasing a width of a parallel region associated with the stream processing job.
20. 20. The computer system of claim 16, wherein the multi-environment computing system is a multi-cloud system having cloud computing environments from at least two different cloud computing vendors.
Citation Information
Patent Citations
Forward transmission network resource allocation method for dataflow type prediction
CN110677876A
Distributing and processing streams over one or more networks
US20130275452A1
Smart migration of overperforming operators of a streaming application to virtual machines in a cloud
US20150281316A1
Deploying operators of a streaming application based on physical location attributes of a virtual machine
US20170187796A1