HBase Client Configuration
module.exports = (service) ->
options = service.options
Identities
options.group = merge service.deps.hbase_master[0].options.group, options.group
options.user = merge service.deps.hbase_master[0].options.user, options.user
# Krb5 admin user
options.admin = merge service.deps.hbase_master[0].options.admin, options.admin
options.ranger_admin ?= service.deps.ranger_admin.options.admin if service.deps.ranger_admin
# Kerberos Test Principal
options.test_krb5_user ?= service.deps.test_user.options.krb5.user
Environment
# Layout
options.conf_dir ?= '/etc/hbase/conf'
options.log_dir ?= '/var/log/hbase'
# Java
options.env ?= {}
options.env['HBASE_LOG_DIR'] ?= "#{options.log_dir}"
options.java_home ?= "#{service.deps.java.options.java_home}"
# Misc
options.hostname ?= service.node.hostname
options.force_check ?= true
options.is_ha ?= service.deps.hbase_master.length
System Options
options.opts ?= {}
options.opts.base ?= ''
options.opts.java_properties ?= {}
options.opts.jvm ?= {}
options.opts.jvm['-Xms'] ?= options.heapsize
options.opts.jvm['-Xmx'] ?= options.heapsize
options.opts.jvm['-XX:NewSize='] ?= options.newsize #should be 1/8 of hbase regionserver heapsize
options.opts.jvm['-XX:MaxNewSize='] ?= options.newsize #should be 1/8 of hbase regionserver heapsize
Test
options.ranger_install = service.deps.ranger_hbase[0].options.install if service.deps.ranger_hbase
options.test = merge {}, service.deps.test_user.options, options.test
options.test.namespace ?= "ryba_check_client_#{service.node.hostname}"
options.test.table ?= 'a_table'
Configuration
options.hbase_site ?= {}
Configure Security
options.hbase_site['hbase.security.authentication'] = service.deps.hbase_master[0].options.hbase_site['hbase.security.authentication']
options.hbase_site['hbase.security.authorization'] = service.deps.hbase_master[0].options.hbase_site['hbase.security.authorization']
options.hbase_site['hbase.superuser'] = service.deps.hbase_master[0].options.hbase_site['hbase.superuser']
options.hbase_site['hbase.rpc.engine'] ?= service.deps.hbase_master[0].options.hbase_site['hbase.rpc.engine']
options.hbase_site['hbase.bulkload.staging.dir'] = service.deps.hbase_master[0].options.hbase_site['hbase.bulkload.staging.dir']
options.hbase_site['hbase.master.kerberos.principal'] = service.deps.hbase_master[0].options.hbase_site['hbase.master.kerberos.principal']
options.hbase_site['hbase.regionserver.kerberos.principal'] = service.deps.hbase_master[0].options.hbase_site['hbase.regionserver.kerberos.principal']
#add jaas
options.opts.java_properties['java.security.auth.login.config'] ?= "#{options.conf_dir}/hbase-client.jaas"
HBase Replication
options.hbase_site['hbase.replication'] ?= service.deps.hbase_master[0].options.hbase_site['hbase.replication']
Client Configuration HA Reads
if parseInt(service.deps.hbase_master[0].options.hbase_site['hbase.meta.replica.count']) > 1
options.hbase_site['hbase.ipc.client.specificThreadForWriting'] ?= 'true'
options.hbase_site['hbase.client.primaryCallTimeout.get'] ?= '10000'
options.hbase_site['hbase.client.primaryCallTimeout.multiget'] ?= '10000'
options.hbase_site['hbase.client.primaryCallTimeout.scan'] ?= '1000000'
options.hbase_site['hbase.meta.replicas.use'] ?= 'true'
Configuration Distributed mode
for property in [
'zookeeper.znode.parent'
'zookeeper.session.timeout'
'hbase.cluster.distributed'
'hbase.rootdir'
'hbase.zookeeper.quorum'
'hbase.zookeeper.property.clientPort'
'dfs.domain.socket.path'
] then options.hbase_site[property] ?= service.deps.hbase_master[0].options.hbase_site[property]
Configuration Quota
options.hbase_site['hbase.quota.enabled'] ?= service.deps.hbase_master[0].options.hbase_site['hbase.quota.enabled']
options.hbase_site['hbase.quota.refresh.period'] ?= service.deps.hbase_master[0].options.hbase_site['hbase.quota.refresh.period']
Wait
options.wait_hbase_master = service.deps.hbase_master[0].options.wait
options.wait_hbase_regionserver = service.deps.hbase_regionserver[0].options.wait
options.wait_ranger_admin = service.deps.ranger_admin.options.wait if service.deps.ranger_admin
Dependencies
{merge} = require '@nikitajs/core/lib/misc'