Running Locally In DevstackHow to run a Bacalhau devstack locally
You can run a stand-alone Bacalhau network on your computer with the following guide.
The devstack
command of bacalhau
will start a 4 node cluster with 3 compute and 1 requester nodes.
This is useful to kick the tires and/or developing on the codebase. It's also the tool used by some tests.
Pre-requisites
x86_64
or ARM64
architecture
Ubuntu 20.0+ has most often been used for development and testing
Install Bacalhau
You can install the Bacalhau CLI by running this command in a terminal:
Copy curl -sL https://get.bacalhau.org/install.sh | bash
See the installation guide for more installation options.
Start the cluster
This will start a 4 node Bacalhau cluster.
You can use your own IPFS node and connect it to the devstack by setting the IPFS endpoints via configuration keys : InputSources.Types.IPFS.Endpoint
and Publishers.Types.IPFS.Endpoint
Copy bacalhau devstack \
--config InputSources.Types.IPFS.Endpoint=/ip4/127.0.0.1/tcp/5001 \
--config Publishers.Types.IPFS.Endpoint=/ip4/127.0.0.1/tcp/5001
Once everything has started up - you will see output like the following:
Copy Devstack is ready!
No. of requester only nodes: 1
No. of compute only nodes: 3
No. of hybrid nodes: 0
To use the devstack, run the following commands in your shell:
export BACALHAU_API_HOST = 0.0.0.0
export BACALHAU_API_PORT = 34217
The message above contains the environment variables you need for a new terminal window. You can paste these into a new terminal so that bacalhau
will use your local devstack. Execute the bacalhau node list command to see the devstack cluster structure:
Copy bacalhau node list
ID TYPE APPROVAL STATUS LABELS CPU MEMORY DISK GPU
node-0 Requester APPROVED CONNECTED Architecture=amd64 Operating-System=linux
env=devstack id=node-0 name=node-0
node-1 Compute APPROVED CONNECTED Architecture=amd64 Operating-System=linux 1.4 / 2.7 GB / 13.1 GB / 0 /
env=devstack id=node-1 name=node-1 1.4 2.7 GB 13.1 GB 0
node-2 Compute APPROVED CONNECTED Architecture=amd64 Operating-System=linux 1.4 / 2.7 GB / 13.1 GB / 0 /
env=devstack id=node-2 name=node-2 1.4 2.7 GB 13.1 GB 0
node-3 Compute APPROVED CONNECTED Architecture=amd64 Operating-System=linux 1.4 / 2.7 GB / 13.1 GB / 0 /
env=devstack id=node-3 name=node-3 1.4 2.7 GB 13.1 GB 0
New Terminal Window
Open an additional terminal window to be used for submitting jobs. Copy and paste environment variables from previous message into this window, e.g.:
Copy export BACALHAU_API_HOST = 0.0.0.0
export BACALHAU_API_PORT = 34217
You are now ready to submit a job to your local devstack.
Submit a simple job
This will submit a simple job to a single node:
Copy bacalhau docker run \
--publisher local \
alpine echo "hello devstack test"
This should output something like the following:
Copy Job successfully submitted. Job ID: j-5b0ee6dd-6080-4277-99ce-fdf179907b25
Checking job status... (Enter Ctrl+C to exit at any time, your job will continue running ):
TIME EXEC. ID TOPIC EVENT
11:06:24.789 Submission Job submitted
11:06:24.798 e-4fba1f7c Scheduling Requested execution on node-1
11:06:24.828 e-4fba1f7c Execution Running
11:06:25.173 e-4fba1f7c Execution Completed successfully
To get more details about the run, execute:
bacalhau job describe j-5b0ee6dd-6080-4277-99ce-fdf179907b25
To get more details about the run executions, execute:
bacalhau job executions j-5b0ee6dd-6080-4277-99ce-fdf179907b25
To download the results, execute:
bacalhau job get j-5b0ee6dd-6080-4277-99ce-fdf179907b25
Use bacalhau job describe command to view results:
Copy bacalhau job describe j-5b0ee6dd-6080-4277-99ce-fdf179907b25
This should output info about job execution and results:
Copy ID = j-5b0ee6dd-6080-4277-99ce-fdf179907b25
Name = j-5b0ee6dd-6080-4277-99ce-fdf179907b25
Namespace = default
Type = batch
State = Completed
Count = 1
Created Time = 2024-10-30 10:06:24
Modified Time = 2024-10-30 10:06:25
Version = 0
Summary
Completed = 1
Job History
TIME TOPIC EVENT
2024-10-30 11:06:24 Submission Job submitted
2024-10-30 11:06:24 State Update Running
2024-10-30 11:06:25 State Update Completed
Executions
ID NODE ID STATE DESIRED REV. CREATED MODIFIED COMMENT
e-4fba1f7c node-1 Completed Stopped 6 6m11s ago 6m11s ago
Execution e-4fba1f7c History
TIME TOPIC EVENT
2024-10-30 11:06:24 Scheduling Requested execution on node-1
2024-10-30 11:06:24 Execution Running
2024-10-30 11:06:25 Execution Completed successfully
Standard Output
hello devstack test
Use bacalhau job get command to download job results:
Copy bacalhau job get j-5b0ee6dd-6080-4277-99ce-fdf179907b25
Results will be downloaded to the current directory. Job results should have the following structure:
Copy j-5b0ee6dd/
├── exitCode
├── stderr
└── stdout
If you execute cat stdout
it should read hello devstack test
. If you write any files in your job, they will appear in volumes/output
.
Support
If you have questions or need support or guidance, please reach out to the Bacalhau team via Slack (#general channel).