]> git.arvados.org - arvados.git/blob - doc/architecture/index.html.textile.liquid
23063: combined property chip generation to eliminate duplicate code
[arvados.git] / doc / architecture / index.html.textile.liquid
1 ---
2 layout: default
3 navsection: architecture
4 title: "Arvados components"
5 ...
6
7 {% comment %}
8 Copyright (C) The Arvados Authors. All rights reserved.
9
10 SPDX-License-Identifier: CC-BY-SA-3.0
11 {% endcomment %}
12
13 # "Services":#Services
14 # "Arvados-server":#Arvados-server
15 # "SDK":#SDK
16 # "Tools":#Tools
17 # "Arvados-client":#Arvados-client
18
19 !(full-width){{site.baseurl}}/images/Arvados_arch.svg!
20
21 h3(#Services). Services
22
23 Located in @arvados/services@.  Many services have been incorporated into @arvados-server@, see below.
24
25 table(table table-bordered table-condensed).
26 |_. Component|_. Description|
27 |api|Along with Controller, the API server is the core of Arvados.  It is backed by a Postgres database and manages information such as metadata for storage, a record of submitted compute jobs, users, groups, and associated permissions.|
28 |crunch-dispatch-local|Get compute requests submitted to the API server and execute them locally.|
29 |dockercleaner|Daemon for cleaning up Docker containers and images.|
30 |fuse|Filesystem in Userspace (FUSE) enabling users to mount Keep collections as a filesystem.|
31 |login-sync|Synchronize virtual machine users with Arvados users and permissions.|
32 |workbench2|Web application providing user interface to Arvados services.|
33
34 h3(#Arvados-server). Arvados-server
35
36 Located in @cmd/arvados-server@.  It consists of a single @arvados-server@ binary with a number of different subcommands.  Although the binary itself is monolithic, subcommands are each a standalone service and only handle requests for that specific service, i.e. a @arvados-server controller@ process will not respond to requests intended for a @arvados-server keep-web@.
37
38 table(table table-bordered table-condensed).
39 |_. Subcommand|_. Description |
40 |boot|Boot an Arvados cluster from source, used by automated testing.|
41 |check|Contact the a health check endpoint on services and print a report.|
42 |cloudtest|Diagnostic tool which attempts to start a cloud instance using the current settings in the config file.|
43 |config-check|Check that the config file is valid.|
44 |config-defaults|Dump the default config options.|
45 |config-dump|Dump the active config options that would be used by the other @arvados-server@ commands.|
46 |controller|Controller works with the API server to make up the core of Arvados.  It intercepts requests and implements additional features such as federation.|
47 |crunch-run|Dispatched by crunch-dispatch, executes a single compute run: setting up a Docker container, running it, and collecting the output.|
48 |crunchstat|Run a program and collect resource usage stats using cgroups.|
49 |dispatch-cloud|Get compute requests submitted to the API server and schedule them on elastic cloud compute, creating and destroying cloud based virtual machines on demand.|
50 |dispatch-lsf|Get compute requests submitted to the API server and submit them to LSF HPC scheduler.|
51 |dispatch-slurm|Get compute requests submitted to the API server and submit them to SLURM HPC scheduler.|
52 |health|Service that aggregates the other health check results to provide a single cluster-wide health status.|
53 |install|Install development dependencies to be able to build and run Arvados from source.|
54 |init|Create an initial configuration file for a new cluster and perform database setup.|
55 |keep-balance|Perform storage utilization reporting, optimization and garbage collection.  Moves data blocks to their optimum location, ensures correct replication and storage class, and trashes unreferenced blocks.|
56 |keep-web|Provides high-level to files in collections as either a WebDAV or S3-compatible API endpoint.|
57 |keepproxy|Provides low-level access to keepstore services (block-level data access) for clients outside the internal (private) network.|
58 |keepstore|Provides access to underlying storage (filesystem or object storage such as Amazon S3 or Azure Blob) with Arvados permissions.|
59 |recover-collection|Recovers deleted collections. Recovery is possible when the collection's manifest is still available and all of its data blocks are still available or recoverable.|
60 |workbench2|Serve the HTML/Javascript for the single-page Workbench application.|
61 |ws|Publishes API server change events over websockets.|
62
63 h3(#SDK). SDK
64
65 The @arv@ command is located in @arvados/sdk/ruby@, the @arv-*@ tools are located in @arvados/sdk/python@.
66
67 table(table table-bordered table-condensed).
68 |_. Component|_. Description |
69 |arv|Provides command line access to API, also provides some purpose utilities.|
70 |arv-copy|Copy a collection from one cluster to another|
71 |arv-get|Get files from a collection.|
72 |arv-keepdocker|Upload Docker images from local Docker daemon to Keep.|
73 |arv-ls|List files in a collection|
74 |arv-put|Upload files to a collection.|
75 |arv-ws|Print events from Arvados websocket event source.|
76
77 h3(#Tools). Tools
78
79 Located in @arvados/tools@.
80
81 table(table table-bordered table-condensed).
82 |_. Component|_. Description |
83 |arvbox|Dockerized Arvados environment for development and testing.|
84 |cluster-activity|Generate a HTML and/or CSV report of cluster activity over a time period.|
85 |crunchstat-summary|Read execution metrics (cpu %, ram, network, etc) collected from a compute container and produce a report.|
86 |keep-block-check|Given a list of keep block locators, check that each block exists on one of the configured keepstore servers and verify the block hash.|
87 |keep-exercise|Benchmarking tool to test throughput and reliability of keepstores under various usage patterns.|
88 |keep-rsync|Get lists of blocks from two clusters, copy blocks which exist on source cluster but are missing from destination cluster.|
89 |sync-groups|Takes a CSV file listing with rows in the form (group, user, permission) records and synchronize membership in Arvados groups.|
90 |sync-users|Takes a CSV file listing with rows in the form (email, first name, last name, active, admin) and synchronize Arvados users.|
91 |user-activity|Generate a text report of user activity over a time period.|
92
93 h3(#Arvados-client). Arvados-client
94
95 Located in @cmd/arvados-client@.  It consists of a single @arvados-client@ binary with a number of different subcommands.
96
97 table(table table-bordered table-condensed).
98 |_. Subcommand|_. Description |
99 |connect-ssh|Connects stdin/stdout to a container's gateway server. It is intended to be invoked with OpenSSH client's ProxyCommand config.|
100 |deduplication-report|Analyzes the overlap in blocks used by 2 or more collections. It prints a deduplication report that shows the nominal space used by the collections, as well as the actual size and the amount of space that is saved by Keep's deduplication.|
101 |diagnostics|Perform cluster diagnostics to check that all the services are available and responding normally to requests.|
102 |logs|Prints live streaming logs for a container.|
103 |mount|Alternate Keep FUSE mount written in Go.|
104 |shell|Connects the terminal to an interactive shell on a running container.|
105 |sudo|Runs another command using API connection info and SystemRootToken from the system config file instead of the caller's environment vars.|