Hive Client Configuration
Example:
{
"ryba": {
"hive": {
"client": {
opts": "-Xmx4096m",
heapsize": "1024"
}
}
}
}
module.exports = (service) ->
options = service.options
Environment
# Layout
options.conf_dir ?= '/etc/hive/conf'
# Opts and Java
options.java_home ?= service.deps.java.options.java_home
options.env ?= {}
options.opts = ""
options.heapsize = 1024
options.aux_jars_paths ?= {}
for path, val of service.deps.hive_hcatalog[0].options.aux_jars_paths
options.aux_jars_paths[path] ?= val
#aux_jars forced by ryba to guaranty consistency
options.aux_jars = "#{Object.keys(options.aux_jars_paths).join ':'}"
# Misc
options.fqdn = service.node.fqdn
options.hostname = service.node.hostname
options.force_check ?= false
options.phoenix_enabled ?= !!service.deps.phoenix_client
Identities
options.user = merge {}, service.deps.hive_hcatalog[0].options.user, options.user
options.group = merge {}, service.deps.hive_hcatalog[0].options.group, options.group
options.ranger_admin ?= service.deps.ranger_admin.options.admin if service.deps.ranger_admin
Kerberos
# Kerberos Test Principal
options.test_krb5_user ?= service.deps.test_user.options.krb5.user
Configuration
options.hive_site ?= {}
# Tuning
# [Christian Prokopp comments](http://www.quora.com/What-are-the-best-practices-for-using-Hive-What-settings-should-we-enable-most-of-the-time)
# [David Streever](https://streever.atlassian.net/wiki/display/HADOOP/Hive+Performance+Tips)
# options.hive_site['hive.exec.compress.output'] ?= 'true'
options.hive_site['hive.exec.compress.intermediate'] ?= 'true'
options.hive_site['hive.auto.convert.join'] ?= 'true'
options.hive_site['hive.cli.print.header'] ?= 'false'
# options.hive_site['hive.mapjoin.smalltable.filesize'] ?= '50000000'
options.hive_site['hive.execution.engine'] ?= 'tez'
options.hive_site['hive.tez.container.size'] ?= service.deps.tez.options.tez_site['tez.am.resource.memory.mb']
options.hive_site['hive.tez.java.opts'] ?= service.deps.tez.options.tez_site['hive.tez.java.opts']
# Size per reducer. The default in Hive 0.14.0 and earlier is 1 GB. In
# Hive 0.14.0 and later the default is 256 MB.
# HDP set it to 64 MB which seems wrong
# Don't know if this default value should be hardcoded or estimated based
# on cluster capacity
options.hive_site['hive.exec.reducers.bytes.per.reducer'] ?= '268435456'
Client Metastore Configuration
for property in [
'hive.metastore.uris'
'hive.security.authorization.enabled'
'hive.security.metastore.authorization.manager'
# 'hive.security.metastore.authenticator.manager'
# Transaction, read/write locks
'hive.support.concurrency'
'hive.enforce.bucketing'
'hive.exec.dynamic.partition.mode'
'hive.txn.manager'
'hive.txn.timeout'
'hive.txn.max.open.batch'
'hive.cluster.delegation.token.store.zookeeper.connectString'
# 'hive.cluster.delegation.token.store.class'
# 'hive.metastore.local'
# 'fs.hdfs.impl.disable.cache'
'hive.metastore.sasl.enabled'
# 'hive.metastore.cache.pinobjtypes'
# 'hive.metastore.kerberos.keytab.file'
# 'hive.metastore.kerberos.principal'
# 'hive.metastore.pre.event.listeners'
'hive.optimize.mapjoin.mapreduce'
'hive.heapsize'
'hive.auto.convert.sortmerge.join.noconditionaltask'
'hive.exec.max.created.files'
# Transaction, read/write locks
] then options.hive_site[property] ?= service.deps.hive_hcatalog[0].options.hive_site[property]
Configure SSL
options.truststore_location ?= "#{options.conf_dir}/truststore"
options.truststore_password ?= "ryba123"
Test
options.ranger_hdfs_install = service.deps.ranger_hdfs[0].options.install if service.deps.ranger_hdfs
options.test = merge {}, service.deps.test_user.options, options.test
# Hive Hcatalog
options.hive_hcatalog = for srv in service.deps.hive_hcatalog
# fqdn: srv.options.fqdn
hostname: srv.options.hostname
# hive_site: srv.options.hive_site
Wait
options.wait_hive_hcatalog = service.deps.hive_hcatalog[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'
Notes
Example of a minimal client configuration:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>hive.metastore.kerberos.keytab.file</name>
<value>/etc/security/keytabs/hive.service.keytab</value>
</property>
<property>
<name>hive.metastore.kerberos.principal</name>
<value>hive/_HOST@ADALTAS.COM</value>
</property>
<property>
<name>hive.metastore.sasl.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://big3.big:9083</value>
</property>
</configuration>