HDFS HttpFS Configure
The default configuration is located inside the source code in the location "hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/resources/httpfs-default.xml".
module.exports = (service) ->
options = service.options
Environment
# layout
options.pid_dir ?= '/var/run/httpfs'
options.conf_dir ?= '/etc/hadoop-httpfs/conf'
options.hdfs_conf_dir ?= service.deps.hdfs_client.options.conf_dir
options.log_dir ?= '/var/log/hadoop-httpfs'
options.tmp_dir ?= '/var/tmp/hadoop-httpfs'
# Environment
options.http_port ?= '14000'
options.http_admin_port ?= '14001'
options.catalina ?= {}
options.catalina_home ?= '/etc/hadoop-httpfs/tomcat-deployment'
# migration: wdavidw 170828, should we really have 2 options ?
# probably but we should document why
options.catalina_opts ?= ''
options.catalina.opts ?= {}
# Misc
options.fqdn ?= service.node.fqdn
options.iptables ?= service.deps.iptables and service.deps.iptables.options.action is 'start'
Identities
# Group
options.group = name: options.group if typeof options.group is 'string'
options.group ?= {}
options.group.name ?= 'httpfs'
options.group.system ?= true
# User
options.user ?= {}
options.user = name: options.user if typeof options.user is 'string'
options.user.name ?= options.group.name
options.user.system ?= true
options.user.comment ?= 'HttpFS User'
options.user.home = "/var/lib/#{options.user.name}"
options.user.gid = options.group.name
options.user.groups ?= 'hadoop'
# Kerberos Test Principal
options.test_krb5_user ?= service.deps.test_user.options.krb5.user
options.user.limits ?= {}
options.user.limits.nofile ?= 64000
options.user.limits.nproc ?= true
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
options.krb5.admin ?= service.deps.krb5_client.options.admin[options.krb5.realm]
Configuration
# Hadoop core "core-site.xml"
options.core_site = merge {}, service.deps.hdfs_client.options.core_site, options.core_site or {}
options.java_home ?= service.deps.java.options.java_home or '/usr/java/default'
# Env
options.env ?= {}
options.env.HTTPFS_SSL_ENABLED ?= 'true' # Default is "false"
options.env.HTTPFS_SSL_KEYSTORE_FILE ?= "#{options.conf_dir}/keystore" # Default is "${HOME}/.keystore"
options.env.HTTPFS_SSL_KEYSTORE_PASS ?= 'ryba123' # Default to "password"
# Site
options.httpfs_site ?= {}
options.httpfs_site['dfs.http.policy'] ?= 'HTTPS_ONLY' # HTTP_ONLY or HTTPS_ONLY or HTTP_AND_HTTPS
options.httpfs_site['httpfs.hadoop.config.dir'] ?= '/etc/hadoop/conf'
options.httpfs_site['kerberos.realm'] ?= "#{options.krb5.realm}"
options.httpfs_site['httpfs.hostname'] ?= "#{service.node.fqdn}"
options.httpfs_site['httpfs.authentication.type'] ?= 'kerberos'
options.httpfs_site['httpfs.authentication.kerberos.principal'] ?= "HTTP/#{service.node.fqdn}@#{options.krb5.realm}" # Default to "HTTP/${service.node.fqdn}@${kerberos.realm}"
options.httpfs_site['httpfs.authentication.kerberos.keytab'] ?= '/etc/security/keytabs/spnego.service.keytab' # Default to "${user.home}/httpfs.keytab"
options.httpfs_site['httpfs.hadoop.authentication.type'] ?= 'kerberos'
options.httpfs_site['httpfs.hadoop.authentication.kerberos.keytab'] ?= '/etc/security/keytabs/httpfs.service.keytab' # Default to "${user.home}/httpfs.keytab"
options.httpfs_site['httpfs.hadoop.authentication.kerberos.principal'] ?= "#{options.user.name}/#{service.node.fqdn}@#{options.krb5.realm}" # Default to "${user.name}/${httpfs.hostname}@${kerberos.realm}"
options.httpfs_site['httpfs.authentication.kerberos.name.rules'] ?= service.deps.hadoop_core.options.core_site['hadoop.security.auth_to_local']
SSL
options.ssl = merge {}, service.deps.hadoop_core.options.ssl, options.ssl
Log4J
options.log4j = merge {}, service.deps.log4j?.options, options.log4j
options.log4j.properties ?= {}
if options.log4j.remote_host? && options.log4j.remote_port?
options.catalina.opts['httpfs.log.server.logger'] = 'INFO,httpfs,socket'
options.catalina.opts['httpfs.log.audit.logger'] = 'INFO,httpfsaudit,socket'
options.catalina.opts['httpfs.log.remote_host'] = options.log4j.remote_host
options.catalina.opts['httpfs.log.remote_port'] = options.log4j.remote_port
Export
Export the proxy user to all DataNodes and NameNodes
for srv in [service.deps.hdfs_dn..., service.deps.hdfs_nn..., service.deps.hdfs_client]
srv.options.core_site ?= {}
srv.options.core_site["hadoop.proxyuser.#{options.user.name}.hosts"] ?= service.deps.httpfs.map((srv) -> srv.node.fqdn).join ','
srv.options.core_site["hadoop.proxyuser.#{options.user.name}.groups"] ?= '*'
Wait
options.wait_krb5_client = service.deps.krb5_client.options.wait
options.wait_hdfs_nn = service.deps.hdfs_nn[0].options.wait
options.wait = {}
options.wait.http = for srv in service.deps.httpfs
host: srv.node.fqdn
port: srv.options.http_port or '14000'
Dependencies
{merge} = require '@nikitajs/core/lib/misc'