Using External Databases
After external database servers are defined, the databases on them can be defined. Cloudera Director can use databases that already exist on those servers, or it can create them while bootstrapping new Cloudera Manager installations or CDH clusters.
- type - The type of database, “MYSQL” or “POSTGRESQL.”
- hostname - The name of the server host.
- port - The listening port of the server.
- name - The name of the database on the server.
- username - The name of the user account having full access to the database.
- password - The password for the user account.
- name - A unique name for the template within the deployment or cluster template.
- databaseServerName - The name of the external database server where the new database is to reside.
- databaseNamePrefix - The string prefix for the name of the new database server.
- usernamePrefix - The string prefix for the name of the new user account that will have full access to the database.
When Cloudera Director creates the new database, it names the database by starting with the prefix in the template and then appends a random string. This prevents name duplication issues when sharing a database server across many deployments and clusters. Likewise, Cloudera Director creates new user accounts by starting with the prefix in the template and appending a random string.
If Cloudera Director creates new external databases during the bootstrap of a deployment or cluster, then it also drops them, and their associated user accounts, when terminating the deployment or cluster. Be sure to back up those databases before beginning termination.
API
Define external databases in the templates for new Cloudera Manager installations (“deployments”) or new clusters. You cannot define both existing databases, and new databases that need to be created, in the same template.
Defining External Databases in the Configuration File
For Cloudera Manager
Define external databases used by Cloudera Manager in the cloudera-manager section of a configuration file. The following example defines existing external databases.
cloudera-manager { # ... databases { CLOUDERA_MANAGER { name: scm1 type: mysql host: 1.2.3.4 port: 3306 user: scmuser password: scmpassword } ACTIVITYMONITOR { name: am1 type: mysql host: 1.2.3.4 port: 3306 user: amuser password: ampassword } REPORTSMANAGER { name: rm1 type: mysql host: 1.2.3.4 port: 3306 user: rmuser password: rmpassword } NAVIGATOR { name: nav1 type: mysql host: 1.2.3.4 port: 3306 user: navuser password: navpassword } NAVIGATORMETASERVER { name: navmeta1 type: mysql host: 1.2.3.4 port: 3306 user: navmetauser password: navmetapassword } }
The following example defines new external databases that Cloudera Director must create while bootstrapping the deployment.
cloudera-manager { # ... databaseTemplates { CLOUDERA_MANAGER { name: cmtemplate databaseServerName: mysql1 databaseNamePrefix: scm usernamePrefix: cmadmin } ACTIVITYMONITOR { name: cmamtemplate databaseServerName: mysql1 databaseNamePrefix: am usernamePrefix: cmamadmin } REPORTSMANAGER { name: cmrmtemplate databaseServerName: mysql1 databaseNamePrefix: rm usernamePrefix: cmrmadmin } NAVIGATOR { name: cmnavtemplate databaseServerName: mysql1 databaseNamePrefix: nav user: cmnavadmin } NAVIGATORMETASERVER { name: cmnavmetatemplate databaseServerName: mysql1 databaseNamePrefix: navmeta usernamePrefix: cmnavmetaadmin } }
Each template must refer to a database server defined elsewhere in the configuration file. The database server template can be for a server that does not yet exist; in that case, Cloudera Director starts creating the server, and then waits while bootstrapping the deployment until the server is available.
A deployment must use either all existing databases or all non-existing databases for the different Cloudera Manager components; they cannot be mixed.
For Cluster Services
Define external databases used by cluster services such as Hive in the cluster section of a configuration file. The following example defines existing external databases.
cluster { #... databaseTemplates: { HIVE { name: hive1 type: mysql host: 1.2.3.4 port: 3306 user: hiveuser password: hivepassword } }
The following example defines new external databases that Cloudera Director must create while bootstrapping the cluster.
cluster { #... databaseTemplates: { HIVE { name: hivetemplate databaseServerName: mysql1 databaseNamePrefix: hivemetastore usernamePrefix: hive } }
Each template must refer to a database server defined elsewhere in the configuration file. The database server template can be for a server that does not yet exist; in that case, Cloudera Director starts creating the server, and then waits while bootstrapping the cluster until the server is available.
A deployment must use either all existing databases or all non-existing databases for the different cluster services; they cannot be mixed.