Puppet Class: impala

Inherits:
::impala::params
Defined in:
manifests/init.pp

Overview

Class: impala

Configure Impala Puppet Module.

Parameters:

  • catalog_hostname (Any) (defaults to: $::fqdn)
  • statestore_hostname (Any) (defaults to: $::fqdn)
  • servers (Any) (defaults to: [$::fqdn])
  • sentry_hostname (Any) (defaults to: undef)
  • alternatives (Any) (defaults to: '::default')
  • group (Any) (defaults to: undef)
  • features (Any) (defaults to: {})
  • debug_enable (Any) (defaults to: false)
  • udf_enable (Any) (defaults to: true)
  • parameters (Any) (defaults to: undef)
  • realm (Any) (defaults to: undef)
  • keytab (Any) (defaults to: '/etc/security/keytab/impala.service.keytab')


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'manifests/init.pp', line 5

class impala (
  $catalog_hostname = $::fqdn,
  $statestore_hostname = $::fqdn,
  $servers = [$::fqdn],
  $sentry_hostname = undef,

  $alternatives = '::default',
  $group = undef,
  $features = {},
  $debug_enable = false,
  $udf_enable = true,

  $parameters = undef,
  $realm = undef,
  $keytab = '/etc/security/keytab/impala.service.keytab',
) inherits ::impala::params {
  include ::stdlib

  validate_string($alternatives)

  if $impala::parameters and has_key($impala::parameters, 'catalog') {
    $catalog_parameters = $impala::parameters['catalog']
  } else {
    $catalog_parameters = undef
  }
  if $impala::parameters and has_key($impala::parameters, 'server') {
    $server_parameters = $impala::parameters['server']
  } else {
    $server_parameters = undef
  }
  if $impala::parameters and has_key($impala::parameters, 'statestore') {
    $statestore_parameters = $impala::parameters['statestore']
  } else {
    $statestore_parameters = undef
  }

  # impala detects hostname without domain ==> also *hostname* parameter
  $impala_parameters = {
    'catalog' => {
      hostname => $::fqdn,
      log_dir => '${IMPALA_LOG_DIR}',
      state_store_host => '${IMPALA_STATE_STORE_HOST}',
      state_store_port => '${IMPALA_STATE_STORE_PORT}',
    },
    'statestore' => {
      hostname => $::fqdn,
      log_dir => '${IMPALA_LOG_DIR}',
      state_store_port => '${IMPALA_STATE_STORE_PORT}',
    },
    'server' => {
      hostname => $::fqdn,
      log_dir => '${IMPALA_LOG_DIR}',
      catalog_service_host => '${IMPALA_CATALOG_SERVICE_HOST}',
      state_store_host => '${IMPALA_STATE_STORE_HOST}',
      state_store_port => '${IMPALA_STATE_STORE_PORT}',
      use_statestore => '',
      be_port => '${IMPALA_BACKEND_PORT}',
      server_name => $::fqdn,
    },
  }
  if $realm and $realm != '' {
    $sec_parameters = {
      'catalog' => {
        keytab_file => $keytab,
        principal => "impala/${catalog_hostname}@${realm}",
      },
      'statestore' => {
        keytab_file => $keytab,
        principal => "impala/${statestore_hostname}@${realm}",
      },
      # impala detects hostname without domain ==> $:fqdn instead of _HOST
      'server' => {
        keytab_file => $keytab,
        principal => "impala/${::fqdn}@${realm}",
      },
    }
  } else {
    $sec_parameters = {
      'catalog' => {},
      'statestore' => {},
      'server' => {},
    }
  }
  if $sentry_hostname {
    $_group = pick($group, 'hive')
    $sentry_parameters = {
      'catalog' => {
        sentry_config => '/etc/sentry/conf/sentry-site.xml',
        server_name => $sentry_hostname,
      },
      'statestore' => {
        sentry_config => '/etc/sentry/conf/sentry-site.xml',
        server_name => $sentry_hostname,
      },
      'server' => {
        sentry_config => '/etc/sentry/conf/sentry-site.xml',
        server_name => $sentry_hostname,
      },
    }
  } else {
    $_group = pick($group, 'users')
    $sentry_parameters = {
      'catalog' => {},
      'statestore' => {},
      'server' => {},
    }
  }

  $_parameters = {
    'catalog' => merge($impala_parameters['catalog'], $sec_parameters['catalog'], $sentry_parameters['catalog'], $catalog_parameters),
    'statestore' => merge($impala_parameters['statestore'], $sec_parameters['statestore'], $sentry_parameters['statestore'], $statestore_parameters),
    'server' => merge($impala_parameters['server'], $sec_parameters['server'], $sentry_parameters['server'], $server_parameters),
  }
}