Hadoop HDFS SecondaryNameNode
module.exports = (service) ->
options = service.options
Environment
# Layout
options.pid_dir ?= service.deps.hadoop_core.options.hdfs.pid_dir
options.log_dir ?= service.deps.hadoop_core.options.hdfs.log_dir
options.conf_dir ?= '/etc/hadoop-hdfs-journalnode/conf'
options.iptables ?= service.deps.iptables and service.deps.iptables.options.action is 'start'
# Misc
options.clean_logs ?= false
Identities
options.hadoop_group = merge {}, service.deps.hadoop_core.options.hadoop_group, options.hadoop_group
options.group = merge {}, service.deps.hadoop_core.options.hdfs.group, options.group
options.user = merge {}, service.deps.hadoop_core.options.hdfs.user, options.user
Kerberos
options.krb5 ?= {}
options.krb5.realm ?= service.deps.krb5_client.options.etc_krb5_conf?.libdefaults?.default_realm
throw Error 'Required Options: "realm"' unless options.krb5.realm
# Admin Information
options.krb5.admin ?= service.deps.krb5_client.options.admin[options.krb5.realm]
Configuration
options.hdfs_site['dfs.http.policy'] ?= 'HTTPS_ONLY' # HTTP_ONLY or HTTPS_ONLY or HTTP_AND_HTTPS
# Store the temporary images to merge
options.hdfs_site['dfs.namenode.checkpoint.dir'] ?= ['file:///var/hdfs/checkpoint']
options.hdfs_site['dfs.namenode.checkpoint.dir'] = options.hdfs_site['dfs.namenode.checkpoint.dir'].join ',' if Array.isArray options.hdfs_site['dfs.namenode.checkpoint.dir']
options.hdfs_site['dfs.namenode.checkpoint.edits.dir'] ?= '${dfs.namenode.checkpoint.dir}' # HDP invalid default value
# Network
options.hdfs_site['dfs.namenode.secondary.http-address'] ?= "#{service.node.fqdn}:50090"
# Kerberos principal name for the secondary NameNode.
options.hdfs_site['dfs.secondary.namenode.kerberos.principal'] ?= "nn/_HOST@#{options.krb5.realm}"
# Combined keytab file containing the NameNode service and host principals.
options.hdfs_site['dfs.secondary.namenode.keytab.file'] ?= '/etc/security/keytabs/nn.service.keytab'
# Address of secondary namenode web server
options.hdfs_site['dfs.secondary.http.address'] ?= "#{service.node.fqdn}:50090"
# The https port where secondary-namenode binds
options.hdfs_site['dfs.secondary.https.port'] ?= '50490' # todo, this has nothing to do here
options.hdfs_site['dfs.namenode.secondary.http-address'] ?= "#{service.node.fqdn}:50090"
options.hdfs_site['dfs.namenode.secondary.https-address'] ?= "#{service.node.fqdn}:50490"
options.hdfs_site['dfs.secondary.namenode.kerberos.internal.spnego.principal'] ?= "HTTP/_HOST@#{options.krb5.realm}"
options.hdfs_site['dfs.secondary.namenode.kerberos.https.principal'] = "HTTP/_HOST@#{options.krb5.realm}"
Dependencies
{merge} = require '@nikitajs/core/lib/misc'