Shock

module
v0.9.29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2019 License: BSD-2-Clause

README

About

Shock is a platform to support computation, storage, and distribution. Designed from the ground up to be fast, scalable, fault tolerant, federated. (see Shock: Active Storage for Multicloud Streaming Data Analysis, Big Data Computing (BDC), 2015 IEEE/ACM 2nd International Symposium on, 2015)

Shock is RESTful. Accessible from desktops, HPC systems, exotic hardware, the cloud and your smartphone.

Shock is for scientific data. One of the challenges of large volume scientific data is that without often complex metadata it is of little to no value. Shock allows storage and querying of complex metadata.

Shock is a data management system. The long term goals of Shock include the ability to annotate, anonymize, convert, filter, perform quality control, and statically subsample at line speed bioinformatics sequence data. Extensible plug-in architecture is in development.

Shock is actively being developed at github.com/MG-RAST/Shock.

Building

To build Shock manually, use the Makefile. Note that you need golang (>=1.6.0).

Docker

You can get the Shock Dockerimage with:

docker pull mgrast/shock

Or, to build the Docker image on you own:

export TAG=`date +"%Y%m%d.%H%M"`
git clone --recursive https://github.com/MG-RAST/Shock.git
cd Shock
docker build --force-rm --no-cache --rm -t mgrast/shock:${TAG} .

If you only need the statically compiled binary, you can extract it from the Dockerimage:

docker create --name shock mgrast/shock:${TAG}
docker cp shock:/go/bin/shock-server .
docker cp shock:/go/bin/shock-client .
docker rm shock

MongoDB

In ubuntu you can simply install mongo with:

sudo apt-get install -y mongodb-server

If you do not want to use a package manager to install mongodb, use:

curl -s http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.4.14.tgz | tar -v -C /mongodb/ -xz

If you do not use a service manager such as systemd, you can start mongodb like this, in foreground:

/mongodb/bin/mongod --dbpath /data/

or in background:

nohup /mongodb/bin/mongod --dbpath /mnt/db/ &

You can also run MongoDB in a docker container:

mkdir -p /mnt/shock-server/mongodb
export DATADIR="/mnt/shock-server"
docker run --rm --name shock-server-mongodb -v ${DATADIR}/mongodb:/data/db --expose=27017 mongo mongod --dbpath /data/db

Configuration

The Shock configuration file is in INI file format. There is a template of the config file located at the root level of the repository.

Running

To run:

shock-server -conf <path_to_config_file>

With docker:

mkdir -p /mnt/shock-server/log
mkdir -p /mnt/shock-server/data
export DATADIR="/mnt/shock-server"
docker run --rm --name shock-server -p 7445:7445 -v ${DATADIR}/shock-server.cfg:/shock-config/shock-server.cfg -v ${DATADIR}/log:/var/log/shock -v ${DATADIR}/data:/usr/local/shock --link=shock-server-mongodb:mongodb mgrast/shock /go/bin/shock-server --conf /shock-config/shock-server.cfg

Comments:
port 7445: Shock server API (default in config)
"-v" mounts host to container directories
"--link" connects Shock server and mongodb (--link=$imagename:$alias) so you need to put the alias (in the example "mongodb") as the value of the hosts variable in the shock-server.cfg

Documentation

For further information about Shock's functionality, please refer to our github wiki.

Directories

Path Synopsis
auth
Package auth implements http request authentication
Package auth implements http request authentication
auth/basic
Package basic implements basic auth decoding and self contained user authentication
Package basic implements basic auth decoding and self contained user authentication
auth/globus
Package globus implements Globus Online Nexus authentication
Package globus implements Globus Online Nexus authentication
auth/oauth
Package globus implements MG-RAST OAuth authentication
Package globus implements MG-RAST OAuth authentication
conf
Package conf parses start up args and config file
Package conf parses start up args and config file
controller/node
Package node implements /node resource
Package node implements /node resource
controller/node/acl
Package acl implements /node/:id/acl resource
Package acl implements /node/:id/acl resource
controller/preauth
Package preauth implements /preauth resource
Package preauth implements /preauth resource
db
Package db to connect to mongodb
Package db to connect to mongodb
errors
Package contains error strings and patterns for common errors
Package contains error strings and patterns for common errors
logger
Package logger implements async log web api messages
Package logger implements async log web api messages
node/file
Package contains Node File struct and MultiReaderAt implementation
Package contains Node File struct and MultiReaderAt implementation
node/file/format/fasta
Package to read and write FASTA format files
Package to read and write FASTA format files
node/file/format/fastq
Package to read and write FASTQ format files
Package to read and write FASTQ format files
node/file/format/line
Package to read and index lines of a file
Package to read and index lines of a file
node/file/format/multi
Package to read and auto-detect format of fasta & fastq files
Package to read and auto-detect format of fasta & fastq files
node/file/format/sam
Package to read and write SAM format files
Package to read and write SAM format files
node/file/format/seq
Package contains interfaces for fasta & fastq & and multi packages
Package contains interfaces for fasta & fastq & and multi packages
preauth
Package preauth implements persistent storage and retrieval of preauth requests
Package preauth implements persistent storage and retrieval of preauth requests

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL