Project

General

Profile

Technical Architecture » History » Version 27

Anonymous, 05/03/2013 05:04 PM

1 1 Anonymous
h1. Technical Architecture
2
3 24 Anonymous
!arvados_technical_diagram_v13.png!
4 3 Anonymous
5 12 Ward Vandewege
The technical diagram above represents the basic architecture of Arvados. 
6 3 Anonymous
7 15 Anonymous
At the base layer is a "cloud operating system." Currently the platform is deployed on AWS (using EBS as POSIX volumes and EC2 instances as VMs) in addition to an on-site installation based on commodity hardware with Xen VMs. The project roadmap includes OpenStack Integration and potentially other cloud OS.  
8 3 Anonymous
9
h2. Key Components
10
11 18 Anonymous
*[[Data Manager]]* - The Data Manager helps to orchestrate interactions with data storage. This includes managing rules about permissions, replication, archiving, etc.
12 3 Anonymous
13 27 Anonymous
*[[Keep|Content Addressable Distributed File System ("Keep")]]* - Arvados stores files in Keep. Keep is a distributed file system that has been optimized for biomedical data files and write once read many (WORM) scenarios. Keep chunks files into 64MB data blocks and distributes them across physical drives or virtual volumes. Keep writes the data blocks to an underlying file system (e.g. Linux ext4). Keep is also a content addressable store (CAS). When a file is stored, a content address is created for each data block using a cryptographic digest of the contents of block. Then a manifest is created that identifies all of the blocks which make up the file. Each manifest has its own unique content address. This creates a system where every file can be accurately verified every time it is retrieved from the system.
14 3 Anonymous
15 18 Anonymous
*[[Computation and Pipeline Processing|Pipeline Manager]]* - The Pipeline Manager orchestrates execution of pipelines. It finds jobs suitable for satisfying each step of a pipeline, queues new jobs as needed, tracks job progress, and keeps the metadata database up-to-date with pipeline progress.
16 3 Anonymous
17 26 Jonathan Sheffi
*[[Computation and Pipeline Processing|MapReduce Engine ("Crunch")]]* - Crunch manages distributed processing tasks across cores using the MapReduce model. It assigns processing tasks to cores that are physically close to the Keep nodes where data is stored. In private clouds where disks and CPUs are on the same physical node, this eliminates network I/O bottlenecks. (The MapReduce Engine has been optimized for performance in such an on-site cloud environment. A different MapReduce engine such as Hadoop could also be used with Arvados, although no work has been done to enable this.) 
18 3 Anonymous
19 13 Tom Clegg
*In-Memory Compact Genome Database ("Lightning")* - Lightning uses a scale-out, open source in-memory database to store genomic data in a compact genome format. VCF files are not suitable for efficient look-ups so we are developing a format to represent variants and other key data for tertiary analysis. Putting this in in a scale-out, in-memory database will make it possible to do very fast queries of these data. (This part of the project is in the design stage.)
20 3 Anonymous
21 19 Anonymous
*[[REST API Server|API Service]]* - This component provides OAuth2-authenticated REST APIs to Arvados subsystems (metadata database, jobs, etc.) with the notable exception of Keep (which requires direct access to avoid network performance bottlenecks) and VMs and git (which use the SSH protocol and public key authentication).
22 3 Anonymous
23 21 Anonymous
*[[Workbench]]* - Workbench is a set of visual tools for using the underlying Arvados services from a browser. This is especially helpful for querying and browsing data, visualizing provenance, and monitoring jobs and pipelines. Workbench has a modular architecture designed for seamless integration with other Arvados applications.
24 1 Anonymous
25 20 Anonymous
*[[SDKs|Command Line Interface]]* - The CLI tools provide convenient access to the Arvados API from the command line. 
26 3 Anonymous
27 20 Anonymous
*[[SDKs]]* - Arvados provides native language SDKs for Python, Perl, Ruby, R, and Java to make it easier to work with the REST APIs in common development environments. There are also SDKs that support development of clients for Keep and the MapReduce Engine. (Some SDKs have not yet been implemented.)
28 3 Anonymous
29 18 Anonymous
*[[Documentation]]* - In addition to the contributors' wiki on the project site, the Arvados source tree includes a documentation project with four sections: 
30 3 Anonymous
31 13 Tom Clegg
* "User Guide":http://doc.arvados.org/user/ - Introductory and tutorial materials for developers building analysis or web applications using Arvados. 
32 3 Anonymous
33 13 Tom Clegg
* "API Reference":http://doc.arvados.org/api/ - Details of REST API methods and resources, the MapReduce job execution environment, permission model, etc.
34 3 Anonymous
35 13 Tom Clegg
* "Admin Guide":http://doc.arvados.org/admin/ - Instructions to system administrators for maintaining an Arvados installation.
36
37
* "Install Guide":http://doc.arvados.org/install/ - How to install and configure Arvados on the cloud management platform of your choice.