- Notifications
You must be signed in to change notification settings - Fork260
Maestro: Netflix’s Workflow Orchestrator
License
Netflix/maestro
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Maestrois a general-purpose workflow orchestrator thatprovides a fully managed workflow-as-a-service (WAAS) to the data platform users at Netflix.
It serves thousands of users, including data scientists, data engineers, machine learning engineers,software engineers, content producers, and business analysts, for various use cases.It schedules hundreds of thousands of workflows, millions of jobs every dayand operates with a strict SLO even when there are spikes in the traffic.Maestro is highly scalable and extensible to support existing and new use cases and offers enhanced usability to end users.
You can read more details about it in our series of blog posts
- Maestro: Data/ML Workflow Orchestrator at Netflix
- Orchestrating Data/ML Workflows at Scale With Netflix Maestro
- 100X Faster: How We Supercharged Netflix Maestro's Workflow Engine
- Incremental Processing using Netflix Maestro and Apache Iceberg
- Git
- Java 21
- Gradle
- Docker
./gradlew build
./gradlew bootRun
docker compose -f maestro-aws/docker-compose.yml up./gradlew bootRun --args='--spring.profiles.active=aws'
curl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows' -H "Content-Type: application/json" -d @maestro-server/src/test/resources/samples/sample-dag-test-1.json
curl -X GET 'http://127.0.0.1:8080/api/v3/workflows/sample-dag-test-1/versions/latest'
curl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows/sample-dag-test-1/versions/latest/actions/start' -H "Content-Type: application/json" -d '{"initiator": {"type": "manual"}}'
curl -X GET 'http://127.0.0.1:8080/api/v3/workflows/sample-dag-test-1/instances/1/runs/1'
curl --header "user: tester" -X DELETE 'http://127.0.0.1:8080/api/v3/workflows/sample-dag-test-1'
- setup kubernetes configs so the kubectl command works
./gradlew bootRuncurl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows' -H "Content-Type: application/json" -d @maestro-server/src/test/resources/samples/sample-kubernetes-wf.jsoncurl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows/sample-kubernetes-wf/versions/latest/actions/start' -H "Content-Type: application/json" -d '{"initiator": {"type": "manual"}}'
pip install maestro-sdk
frommaestroimportWorkflow,Jobwf=Workflow(id="test-wf")wf.owner("tester").tags("test")wf.job(Job(id="job1",type='NoOp'))wf_yaml=wf.to_yaml()
frommaestroimportWorkflow,Job,MaestroClientwf=Workflow(id="test-wf")wf.owner("tester").tags("test")wf.job(Job(id="job1",type='NoOp'))wf_yaml=wf.to_yaml()client=MaestroClient(base_url="http://127.0.0.1:8080",user="tester")response=client.push_yaml(wf_yaml)print(response)
frommaestroimportMaestroClientclient=MaestroClient(base_url="http://127.0.0.1:8080",user="tester")response=client.start(workflow_id="test-wf",run_params={"foo": {"value":"bar","type":"STRING"}})print(response)
Please checkMaestro python project for more details.
Join our communitySlack workspace for discussions!
Copyright 2024 Netflix, Inc.
Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
About
Maestro: Netflix’s Workflow Orchestrator
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.