Troubleshooting Custom Runtime addons

Follow the instructions to resolve potential issues that might arise with Runtime images.

When a Custom Runtime addon attempts to mount a file or folder that falls into one of the following categories, workloads might fail to work. In that case, Cloudera AI UI shows the following error messages:
  • Failed setting up runtime addons
  • Engine exited with status 33
The exact error message can help you to determine what scenario causes the issue.

The file or folder does not exist in the uploaded tarball or is not located under the proper path within the tarball archive

A possible root cause is Cloudera AI not being able to mount files or folders from Custom Runtime addons.

Adjust the paths in the tarball or metadata file according to the details in Custom Runtime addon format requirements.

The file or folder, a custom Runtime addon tries to mount, exists already in the filesystem

The file or folder either already exists on the Runtime image or is mounted by another Runtime addon.

Due to a limitation, Custom Runtime addons cannot overwrite existing files. Change the path of the mounted files.

cdsw user has no write access in the pod’s file system to create symlinks to mounted files

Modify the path of the mounted files to a location writable by the cdsw user. Alternatively, create a Custom Runtime image with adjusted permissions and use it for all the workloads.

Cloudera AI Runtime addons support only Java 8 integrated into Hadoop

In Cloudera AI, when mounting JAVA to workloads using Runtime addons, the only available Runtime addon is for JAVA 8, which is integrated into the Hadoop addon.

Run workloads with the required Java version using Custom Runtime addons. Include the required version details in the following example commands.

The following example instructions include the [***JAVA VERSION***] placeholder. Replace this placeholder with the required Java version, as shown in the examples:

  • For java 11: openjdk-11-jre-headless or openjdk-11-jdk-headless
  • For java 17: openjdk-17-jre-headless or openjdk-17-jdk-headless
  1. Save the following Dockerfile:
    FROM ubuntu:20.04
          RUN apt-get update && apt-get install -y openjdk-[***JAVA VERSION***]-jre-headless openjdk-[***JAVA VERSION***]-jdk-headless
          RUN tar -czf /cml-java[***VERSION***]-addon.tar.gz /usr/lib/jvm/java-[***VERSION***]-openjdk-amd64 /etc/java-[***VERSION***]-openjdk
  2. Build the Dockerfile and copy the tar file created in Step 1.
    docker build --network=host -t cml_java_addon .
          
          container_id=$(docker create cml_java_addon)
          docker cp $container_id:/cml-java[***VERSION***]-addon.tar.gz - > ./cml-java[***VERSION***]-addon.tar.gz
          docker rm -v $container_id
  3. Upload the Tarball file as a custom addon to Cloudera AI with the following metadata file:
    {
          "name" : "java[***VERSION***]",
          "spec" : {"paths" : ["/usr/lib/jvm/java-[***VERSION***]-openjdk-amd64", "/etc/java-[***VERSION***]-openjdk"]}
          }
  4. Set the following environment variables at Site Administration > Runtimes:

    JAVA_HOME: /usr/lib/jvm/java-[***VERSION***]-openjdk-amd64

    PATH: ${PATH/java-8/java-[***VERSION***]}