  In the era of Internet of Things, there is an increasing demand for networked
computing to support the requirements of the time-constrained,
compute-intensive distributed applications such as multi-camera video
processing and data fusion for security. We present Jupiter, an open source
networked computing system that inputs a Directed Acyclic Graph (DAG)-based
computational task graph to efficiently distribute the tasks among a set of
networked compute nodes regardless of their geographical separations and
orchestrates the execution of the DAG thereafter. This Kubernetes
container-orchestration-based system supports both centralized and
decentralized scheduling algorithms for optimally mapping the tasks based on
information from a range of profilers: network profilers, resource profilers,
and execution time profilers. While centralized scheduling algorithms with
global knowledge have been popular among the grid/cloud computing community, we
argue that a distributed scheduling approach is better suited for networked
computing due to lower communication and computation overhead in the face of
network dynamics. To this end, we propose and implement a new class of
distributed scheduling algorithms called WAVE on the Jupiter system. We present
a set of real world experiments on two separate testbeds - one a world-wide
network of 90 cloud computers across 8 cities and the other a cluster of 30
Raspberry pi nodes, over a simple networked computing application called
Distributed Network Anomaly Detector (DNAD). We show that despite using more
localized knowledge, a distributed WAVE greedy algorithm can achieve similar
performance as a classical centralized scheduling algorithm called
Heterogeneous Earliest Finish Time (HEFT), suitably enhanced for the Jupiter
system.
