Upgrading to Containers API » History » Version 4
Peter Amstutz, 10/17/2018 07:00 PM
1 | 1 | Peter Amstutz | h1. Upgrading to Containers API |
---|---|---|---|
2 | |||
3 | The "containers" API is the recommended way to submit compute work to Arvados. It supersedes the "jobs" API, which is deprecated. |
||
4 | |||
5 | h2. Benefits over the "jobs" API |
||
6 | |||
7 | * Simpler and more robust execution with fewer points of failure |
||
8 | * Automatic retry for containers that fail to run to completion due to infrastructure errors |
||
9 | * Scales to thousands of simultaneous containers |
||
10 | * Able to support alternate schedulers/dispatchers in addition to slurm |
||
11 | * Improved logging, different streams logs/metrics stored in different files in the log collection |
||
12 | * Records more upfront detail about the compute node, and additional metrics (such as available disk space over the course of the container run) |
||
13 | * Better behavior when deciding whether to reuse past work -- pick the oldest container that matches the criteria |
||
14 | * Can reuse running containers between workflows, cancelling a workflow will not cancel containers that are shared with other workflows |
||
15 | * Supports setting time-to-live on intermediate output collections for automatic cleanup |
||
16 | * Supports "secret" inputs, suitable for passwords or access tokens, which are hidden from the API responses and logs, and forgotten after use |
||
17 | * Does not require "git" for dispatching work |
||
18 | |||
19 | h2. Differences from the "jobs" API |
||
20 | |||
21 | Containers cannot reuse jobs (but can reuse other containers) |
||
22 | |||
23 | 4 | Peter Amstutz | Uses the service "crunch-dispatch-slurm":https://doc.arvados.org/install/crunch2-slurm/install-dispatch.html instead of @crunch-dispatch.rb@ |
24 | 1 | Peter Amstutz | |
25 | 4 | Peter Amstutz | Non-CWL Arvados "pipeline templates" are not supported with containers. Pipeline templates should be rewritten in CWL and registered as "Workflows". |
26 | 1 | Peter Amstutz | |
27 | 4 | Peter Amstutz | The containers APIs is incompatible with the jobs API, code which integrates with the "jobs" API must be updated to work with containers |
28 | 1 | Peter Amstutz | |
29 | Containers have network access disabled by default |
||
30 | |||
31 | The keep mount only exposes collections which are explicitly listed as inputs |
||
32 | |||
33 | h2. Migrating to "containers" API |
||
34 | |||
35 | 3 | Peter Amstutz | Run your workflows using @arvados-cwl-runner --api=containers@ (only necessary if both the jobs and containers APIs are enabled, if the jobs API is disabled, it will use the containers API automatically) |
36 | 1 | Peter Amstutz | |
37 | 2 | Peter Amstutz | Register your workflows so they can be run from workbench using @arvados-cwl-runner --api=containers --create-workflow@ |
38 | 1 | Peter Amstutz | |
39 | Read "Migrating running CWL on jobs API to containers API":https://doc.arvados.org/user/cwl/cwl-style.html#migrate |
||
40 | |||
41 | Use @arv:APIRequirement: {}@ in the @requirements@ section of your CWL file to enable network access for the container (see "Arvados CWL Extensions":https://doc.arvados.org/user/cwl/cwl-extensions.html) |
||
42 | |||
43 | For examples on how to manage container requests with the Python SDK, see https://doc.arvados.org/sdk/python/cookbook.html |