In Cloudera Manager how to custom configure each instance of a component (like visualization server) differently

Within Cloudera Manager there’s a notion of “Roles” which allows you to assign different configurations to subset of the service components based on hardware and use-case requirements.

Ideally we have homogenous configuration for all instances of the same component. For example, ArcEngine should be given the same memory limits, and assigned interface ports across all instances.

However in certain situation it might be required to tweak some settings for specific instances.

Below is an example of how to create a new role and assign a secondary instance of the visualization server to that role. And within Cloudera Manager customize the configuration settings for that new instance.

  • Create roles as shown in screenshot 1
  • Deploy new instance of visualization and assign it to custom role (screenshot 2)
  • Now within Cloudera Manager the visualization server settings will now have two values one for each role. (screenshot 3)

So let’s say you want to specify different metadata DB for the second instance of the visualization server. In that case you could use the settings_cm.py safety valve (screenshot 4) as explained in this article to override the settings for the second arcviz instance: Using Oracle as Arcadia Visualization server metadata DB (TNS-12505: TNS:listener does not currently know of SID given in connect descriptor)

For mySQL you should just be able to specify something like this:

DATABASES['default']['HOST']='mysql.com'
DATABASES['default']['PORT']='3306'
DATABASES['default']['NAME']='secondarcadia'

If you want to use sqlite, you could try overriding this entire setting within safety valve (settings_cm.py):

DATABASES = {
'default': {
# Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.sqlite3',
# Or path to database file if using sqlite3.
'NAME': '/tmp/arcweb.django.sqlite3',
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
# Empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# Set to empty string for default.
'PORT': '',
}
}

Screenshot 1

Screenshot 2

Screenshot 3

Screenshot 4

image