Advanced usage

Versions and repositories URLs

Since v0.4.3, Jumbo supports fine grained versions and repositories management. All configurations are done through files called versions.json. When upgrading to v0.4.3, the default verions.json will be added to the ~/.jumbo directory, and an empty versions.json file to any new cluster's root directory (e.g. ~/.jumbo/newcluster/versions.json).

How does it work?

versions.json work in "cascading" mode, with priority to the cluster level versions.json. If a version definition is not found in this files, the global version set in ~/.jumbo/versions.json will be used.

In versions.json files, you will find 3 sets of items:

  • services - Jumbo services not part of a specific Big Data platform (e.g. POSTGRESQL or AMBARI),
  • resources - pieces of software used by platforms,
  • platforms - Big Data platforms such as HDP or CDH.

services and resources share the same structure:

{
  "name": "POSTGRESQL",
  "versions": {
    "9.6": "https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm",
    "10": "https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm"
  }
}

Each service/resource has several versions available and each version is associated with its repository. The default versions.json file uses the official repositories of each software.

platforms also have several versions, each of which is tied to a version of each resource it uses:

{
  "name": "HDP",
  "versions": {
    "2.6.4.0": [
      {
        "resource": "HDP",
        "version": "2.6.4.0"
      },
      {
        "resource": "HDP_GPL",
        "version": "2.6.4.0"
      },
      {
        "resource": "HDP_UTILS",
        "version": "1.1.0.22"
      },
      {
        "resource": "POSTGRESQL_JDBC_DRIVER",
        "version": "42.2.1"
      }
    ]
  }
}

How to change the versions used?

services and platforms have a default attribute, which is set to the latest version by default. Change this attribute to whatever version you want to use (the version has to be described in versions).

{
  "name": "POSTGRESQL",
  "versions": {
    "9.6": "https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm",
    "10": "https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm"
  },
  "default": "9.6" // set the version to use here
}

How to change the repositories used?

In services and resources, simply change the url associated with the version you are using. This can be useful to use private local repositories.

Kerberos

Jumbo supports the use of Kerberos to secure the cluster. KERBEROS is a Jumbo service with no component that can be added like any other service:

jumbo (mycluster) > addservice KERBEROS

The cluster will be kerberized after the HDP installation.
It is possible to disable it afterward within the Ambari UI.

Custom node types

In jumbo/core/config/services.json, the services are defined as follow:

{
	"name": "ANSIBLE",				  # service name
	"components": [				      # list of the components of the service
		{
			"name": "ANSIBLE_CLIENT", # component name
			"hosts_types": [		  # node types on which the component...
				"edge"                # ...can be installed
			],
			"abbr": "ANSIBLE_C",	  # component abbreviation
			"number": {
			"default": 1,			  # number needed in default mode
			"ha": 1			          # number needed in HA mode
			}
		}
	],
	"requirements": {
		"ram": 1000,                  # not used yet
		"disk": 10000,			      # not used yet
		"nodes": {					  # number of node of each type required...
			"default": {			  # ...for the service
				"edge": 1
			},
			"ha": {
				"edge": 1
			}
		},
		"services": {			  # other services on which the service depends
			"default": [],
			"ha": []
		}
	},
	"auto_install": []			  # clients that will always be installed
}

A component can only be installed on nodes of hosts_types types. You might want to create custom types (e.g. to isolate a service). The node types are defined in the list node_types. To create a new type, add it to:

  • the node_types list;
  • hosts_types lists of the components that you want to install on nodes of the new type.

On auto-installation of a service, the components are added in priority to nodes of the first type of the hosts_types list.