[ 
https://issues.apache.org/jira/browse/ATLAS-1546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861107#comment-15861107
 ] 

Greg Senia commented on ATLAS-1546:
-----------------------------------

I accomplished this by adding a new definition to Ambari 


Here is a workaround to make HiveCLI work from Ambari... A bit involved but it 
works.. 
The work around to make Ambari generate a hive-cli-atlas-application.properties 
file is as follows: 

curl -u username -H "X-Requested-By: ambari" -X PUT -d @atlas-hivecli.json 
"http://localhost:8080/api/v1/clusters/tech"; 

atkas-hivecli.json: 
[{"Clusters":{ 
  "desired_config":[{ 
      "type" : "hive-cli-atlas-application.properties", 
      "properties" : { 
        "atlas.hook.hive.keepAliveTime" : "10", 
        "atlas.hook.hive.maxThreads" : "5", 
        "atlas.hook.hive.minThreads" : "5", 
        "atlas.hook.hive.numRetries" : "3", 
        "atlas.hook.hive.queueSize" : "1000", 
        "atlas.hook.hive.synchronous" : "false", 
        "atlas.jaas.KafkaClient.loginModuleControlFlag" : "required", 
        "atlas.jaas.KafkaClient.loginModuleName" : 
"com.sun.security.auth.module.Krb5LoginModule", 
        "atlas.jaas.KafkaClient.option.serviceName" : "kafka", 
        "atlas.jaas.KafkaClient.option.renewTicket" : "True", 
        "atlas.jaas.KafkaClient.option.storeKey" : "false", 
        "atlas.jaas.KafkaClient.option.useKeyTab" : "false", 
        "atlas.jaas.KafkaClient.option.useTicketCache" : "True" 
        } 
      } 
     ] 
   } 
 } 
] 

Apply the following to /var/lib/ambari-server/resources/stacks/HDP/HDP-2.5 
[username@hadoop1 ~]$ cat stacks_ambari.patch 
--- /dev/null 
+++ 
/var/lib/ambari-server/resources/stacks/HDP/2.5/services/HIVE/configuration/hive-cli-atlas-application.properties.xml
       2017-02-09 14:10:05.000000000 -0500 
@@ -0,0 +1,61 @@ 
+<?xml version="1.0"?> 
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
+<!-- 
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License. 
+ */ 
+--> 
+<configuration supports_final="false"> 
+ <!-- These are the Atlas Hooks properties specific to this service. This file 
is then merged with common properties 
+ that apply to all services. --> 
+ <property> 
+ <name>atlas.hook.hive.synchronous</name> 
+ <value>false</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+ <property> 
+ <name>atlas.hook.hive.numRetries</name> 
+ <value>3</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+ <property> 
+ <name>atlas.hook.hive.minThreads</name> 
+ <value>5</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+ <property> 
+ <name>atlas.hook.hive.maxThreads</name> 
+ <value>5</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+ <property> 
+ <name>atlas.hook.hive.keepAliveTime</name> 
+ <value>10</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+ <property> 
+ <name>atlas.hook.hive.queueSize</name> 
+ <value>1000</value> 
+ <description/> 
+ <on-ambari-upgrade add="true"/> 
+ </property> 
+</configuration> 
--- /var/lib/ambari-server/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml  
2016-11-23 02:27:15.000000000 -0500 
+++ /var/lib/ambari-server/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml  
2017-02-09 09:46:52.000000000 -0500 
@@ -243,6 +243,7 @@ 
       <configuration-dependencies> 
         <config-type>application-properties</config-type> 
         <config-type>hive-atlas-application.properties</config-type> 
+ <config-type>hive-cli-atlas-application.properties</config-type> 
       </configuration-dependencies> 
     </service> 
   </services> 

/var/lib/ambari-server/resources/common-services: 
[username@hadoop1 ~]$ cat common_ambari.patch 
diff -Naur -x '*.pyc' -x '*.zip' -x '*.pyo' 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
 /tmp/amb/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py 
--- 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
    2016-11-23 02:27:10.000000000 -0500 
+++ 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
    2017-02-09 14:42:00.000000000 -0500 
@@ -228,12 +228,15 @@ 
             group=params.user_group, 
             mode=0644) 
  
- # Generate atlas-application.properties.xml file 
   if has_atlas_in_cluster(): 
     atlas_hook_filepath = os.path.join(params.hive_config_dir, 
params.atlas_hook_filename) 
- setup_atlas_hook(SERVICE.HIVE, params.hive_atlas_application_properties, 
atlas_hook_filepath, params.hive_user, params.user_group) 
+ setup_atlas_hook(SERVICE.HIVE, params.hive_cli_atlas_application_properties, 
atlas_hook_filepath, params.hive_user, params.user_group) 
    
   if name == 'hiveserver2': 
+ if has_atlas_in_cluster(): 
+ atlas_hook_filepath = os.path.join(params.hive_server_conf_dir, 
params.atlas_hook_filename) 
+ setup_atlas_hook(SERVICE.HIVE, params.hive_atlas_application_properties, 
atlas_hook_filepath, params.hive_user, params.user_group) 
+ 
     XmlConfig("hiveserver2-site.xml", 
               conf_dir=params.hive_server_conf_dir, 
               
configurations=params.config['configurations']['hiveserver2-site'], 
diff -Naur -x '*.pyc' -x '*.zip' -x '*.pyo' 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
 /tmp/amb/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py 
--- 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
    2016-11-23 02:27:10.000000000 -0500 
+++ 
/var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
    2017-02-09 14:42:41.000000000 -0500 
@@ -520,6 +520,7 @@ 
 ########################################################
 #region Atlas Hooks 
 hive_atlas_application_properties = 
default('/configurations/hive-atlas-application.properties', {}) 
+hive_cli_atlas_application_properties = 
default('/configurations/hive-cli-atlas-application.properties', {}) 
  
 if has_atlas_in_cluster(): 
   atlas_hook_filename = 
default('/configurations/atlas-env/metadata_conf_file', 
'atlas-application.properties') 
diff -Naur -x '*.pyc' -x '*.zip' -x '*.pyo' 
/var/lib/ambari-server/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
 /tmp/amb/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py 
--- 
/var/lib/ambari-server/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
   2016-11-23 02:27:06.000000000 -0500 
+++ 
/var/lib/ambari-server/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
   2017-02-09 15:09:15.000000000 -0500 
@@ -314,7 +314,7 @@ 
     if has_atlas_in_cluster(): 
       atlas_hook_filepath = os.path.join(params.hive_conf_dir, 
params.atlas_hook_filename) 
       Logger.info("Has atlas in cluster, will save Atlas Hive hook into 
location %s" % str(atlas_hook_filepath)) 
- setup_atlas_hook(SERVICE.HIVE, params.hive_atlas_application_properties, 
atlas_hook_filepath, params.oozie_user, params.user_group) 
+ setup_atlas_hook(SERVICE.HIVE, params.hive_cli_atlas_application_properties, 
atlas_hook_filepath, params.oozie_user, params.user_group) 
  
   Directory(params.oozie_server_dir, 
     owner = params.oozie_user, 
diff -Naur -x '*.pyc' -x '*.zip' -x '*.pyo' 
/var/lib/ambari-server/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
 /tmp/amb/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py 
--- 
/var/lib/ambari-server/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
    2016-11-23 02:27:06.000000000 -0500 
+++ 
/var/lib/ambari-server/resources//common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
   2017-02-09 15:10:05.000000000 -0500 
@@ -308,6 +308,7 @@ 
 ########################################################
 #region Atlas Hooks needed by Hive on Oozie 
 hive_atlas_application_properties = 
default('/configurations/hive-atlas-application.properties', {}) 
+hive_cli_atlas_application_properties = 
default('/configurations/hive-cli-atlas-application.properties', {}) 
  
 if has_atlas_in_cluster(): 
   atlas_hook_filename = 
default('/configurations/atlas-env/metadata_conf_file', 
'atlas-application.properties') 


No API call avaialble to allow linking a config property to the 
serviceconfigmapping DB so it can be performed as follows: 



Update Ambari DB !!! WORKING EXAMPLE!!! 


insert into clusterconfigmapping (cluster_id, type_name, 
version_tag,create_timestamp, selected, user_name) VALUES ('2', 
'hive-cli-atlas-application.properties', 'generatedTag_1', '1484066089143', 
'1', 'username'); 

select max(config_id) from clusterconfig where type_name = 
'hive-cli-atlas-application.properties'; 
select max(version) from serviceconfig where service_name = 'HIVE'; 

insert into serviceconfigmapping (service_config_id, config_id) VALUES ('1203', 
'1552'); 

ambari-server restart 


Restart Hive Services and Oozie ]

> Hive hook should choose appropriate JAAS config if host uses kerberos 
> ticket-cache
> ----------------------------------------------------------------------------------
>
>                 Key: ATLAS-1546
>                 URL: https://issues.apache.org/jira/browse/ATLAS-1546
>             Project: Atlas
>          Issue Type: Improvement
>          Components: atlas-intg
>    Affects Versions: 0.7-incubating, 0.8-incubating
>            Reporter: Madhan Neethiraj
>            Assignee: Nixon Rodrigues
>
> In a kerberized environment, Atlas hook uses JAAS configuration section named 
> "KakfaClient" to authenticate with Kafka broker. In a typical Hive deployment 
> this configuration section is set to use the keytab and principal of 
> HiveServer2 process. The hook running in HiveCLI might fail to authenticate 
> with Kafka if the user can't read the configured keytab.
> Given that HiveCLI users would have performed kinit, the hook in HiveCLI 
> should use the ticket-cache generated by kinit. When ticket cache is not 
> available (for example in HiveServer2), the hook should use the configuration 
> provided in KafkaClient JAAS section.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to