The use of Helm considerably facilitates the deployment of Hive on MR3 on Kubernetes. Without Helm, the user should manually check the consistency among configuration parameters interspersed in many files. Here are examples of such constraints that should be checked manually by the user:

  • The user should make sure that all YAML files use the same namespace specified by the environment variable MR3_NAMESPACE in kubernetes/env.sh.
  • The user should make sure that the spec/template/spec/containers/image field in hive.yaml uses the same Docker image specified by DOCKER_HIVE_IMG in kubernetes/env.sh.
  • The user should make sure that the ports/containerPort field in hive.yaml uses the same port number specified in the field ports/port in hiveserver2-service.yaml.

In contrast, the use of Helm allows the user to declare every configuration parameter only once and never repeat the same configuration parameter multiple times in different files, thus greatly reducing the complexity in managing the whole system, as shown in the following examples:

  • The user specifies the namespace when executing helm.
  • The user specifies the Docker image by overriding the field docker/image in kubernetes/helm/hive/values.yaml.
  • The user specifies the port number for HiveServer2 by overriding the field hive/port in kubernetes/helm/hive/values.yaml.

The following structure shows all files and directories in an MR3 release that the user may have to update:

# resources for executing Helm
└── kubernetes
    └── helm
        ├── hive
        │   ├── env.sh
        │   ├── env-secret.sh
        │   └── values.yaml
        ├── ats
        │   ├── env.sh
        │   └── values.yaml
        └── ranger
            └── values.yaml

# resources for running Metastore and HiveServer2
└── kubernetes
    ├── conf
    │   ├── core-site.xml
    │   ├── hive-log4j2.properties
    │   ├── hive-log4j.properties
    │   ├── hive-site.xml
    │   ├── jgss.conf
    │   ├── krb5.conf
    │   ├── mapred-site.xml
    │   ├── mr3-site.xml
    │   ├── ranger-hive-audit.xml
    │   ├── ranger-hive-security.xml
    │   ├── ranger-policymgr-ssl.xml
    │   ├── tez-site.xml
    │   └── yarn-site.xml
    └── key

# resources for running Timeline Server
└── kubernetes
    ├── ats-conf
    │   ├── core-site.xml
    │   ├── krb5.conf
    │   ├── log4j.properties
    │   ├── ssl-server.xml
    │   └── yarn-site.xml
    └── ats-key

# resources for running Ranger
└── kubernetes
    ├── ranger-conf
    │   ├── core-site.xml
    │   ├── krb5.conf
    │   ├── ranger-admin-site.xml
    │   ├── ranger-log4j.properties
    │   ├── solr-core.properties
    │   ├── solr-elevate.xml
    │   ├── solr.in.sh
    │   ├── solr-log4j2.xml
    │   ├── solr-managed-schema
    │   ├── solr-security.json
    │   ├── solr-solrconfig.xml
    │   └── solr-solr.xml
    └── ranger-key
        └── install.properties

This section gives details on how to use Helm to run Hive on MR3. We assume that the use has already installed Hive on MR3 on Kubernetes by following the instruction in Installing on Kubernetes.