Skip to content

Shiva

Abstract

Shiva is punch core service. Unlike most of the other services it is developed and maintained by the punch team. This page aims to explain shiva layout and how to patch it in case of issues

Overview

Shiva is an application scheduler that lets you schedule and run various applications on top of a punch cluster.

Refer to the shiva documentation for understanding shiva architecture and role.

Tip

If you are familiar with kubernetes, see shiva as a lightweigth application scheduler just like kubernetes is a container scheduler. Shiva is much simpler of course, and does not provide any of the (many) kuberne services such as kubernetes networking capabilities. Yet it allows you to deploy production-ready applications on physical or virtual servers.

Shiva configuration

A shiva node is a server equipped with shiva packages. It can act as a shiva leader or worker. Only workers run application. Here is the folder layout of shiva:

punchplatform-shiva-6.1.0/
├── activate.sh
├── bin
│   ├── archives-housekeeping
│   ├── channels-monitoring
│   ├── commons-lib.sh
│   ├── elastalert
│   ├── elasticsearch-housekeeping
│   ├── hjson-manager
│   ├── logstash
│   ├── mlflow_api
│   ├── planctl
│   ├── platform-monitoring
│   ├── punchlinectl
│   ├── punchplatform-env.sh
│   ├── punchplatform-lib.sh
│   └── sparkctl
├── conf
│   └── shiva.conf
├── data
├── log4j2
│   ├── log4j2.properties
│   ├── log4j2-punchline.xml
│   ├── log4j2-shiva-daemon.properties
│   ├── log4j2-shiva-daemon.xml
│   ├── log4j2-sparkctl.properties
│   ├── log4j2-sparkctl.xml
│   └── log4j2-stdout.xml
├── punchplatform.properties
└── resolv.hjson

This folder contains shiva configuration files together with all the startup (shell) command for applications possibly launched by shiva. There are also two punch platform-level configuration files (resolv.hjson and punchplatform.properties) generated at deploy time. These contain the runtime information required to run shiva applications.

Shiva binaries

The binaries and libraries (i.e. executable) files are provided in a separate folder. These are provided by a punch uber binary package named punchplatform-binaries-*. The punch deployer installs it on each punch node. Here is its layout:

punchplatform-binaries-6.1.0/
├── apache-storm-2.1.0
├── lib
│   ├── spark/
│   ├── pyspark/
│   ├── storm/
│   ├── punchplatform-command-cli-6.1.0-jar-with-dependencies.jar
│   ├── punchplatform-gateway-app-6.1.0.jar
│   ├── punchplatform-log-injector-6.1.0-jar-with-dependencies.jar
│   ├── punchplatform-monitoring-service-6.1.0-jar-with-dependencies.jar
│   ├── punchplatform-puncher-6.1.0-jar-with-dependencies.jar
│   ├── punchplatform-shiva-app-6.1.0-jar-with-dependencies.jar
│   └── ...
├── logstash-7.4.2
├── resources
└── spark-2.4.3-bin-hadoop2.7

As you can see this folder contains both punchplatform-shiva-app-*-jar-with-dependencies.jar which is Shiva service library but also for example logstash binaries which are necessary to launch logstash as a Shiva application

Patching Shiva

To patch shiva or any of its internal applications, refer to this documentation.