Does that connection string work in other contexts outside of oozie, e.g.
beeline?  Does your java code run if executed directly instead of via
Oozie?

On 3/21/16, 4:52 AM, "Ashish Gupta" <[email protected]> wrote:

>Hi All,
>
>I am trying to execute hive queries through oozie Java action on secured
>cluster, however I am getting below exception:
>
>Exception Stack trace:
>
>
>>>> Invoking Main class now >>>
>
>
>
>Launch time = 1458542514082
>
>Job launch time = 1458542514082 mapreduce.job.tags =
>oozie-2e8d7ed9fc7551a353667830e09bef2b
>
>Main class        : com.citiustech.main.Test
>
>Arguments         :
>
>
>
>
>
><<< Invocation of Main class completed <<<
>
>
>
>Failing Oozie Launcher, Main class
>[org.apache.oozie.action.hadoop.JavaMain], main() threw exception,
>
>org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get
>JDBC Connection; nested exception is java.sql.SQLException:
>
>Could not open client transport with JDBC Uri:
>jdbc:hive2://10.60.2.26:10000/default;principal=hive/example-qa1-
>
>[email protected];auth=NOSASL: GSS initiate failed
>
>org.apache.oozie.action.hadoop.JavaMainException:
>org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get
>JDBC
>
>Connection; nested exception is java.sql.SQLException: Could not open
>client transport with JDBC Uri:
>
>jdbc:hive2://10.60.2.26:10000/default;principal=hive/example-qa1-dn2@EXAMP
>LE.com;auth=NOSASL: GSS initiate failed
>
>  at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:58)
>
>  at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:39)
>
>  at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:36)
>
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>  at 
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>57)
>
>  at 
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
>pl.java:43)
>
>  at java.lang.reflect.Method.invoke(Method.java:606)
>
>  at 
>org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:226)
>
>  at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
>
>  at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
>
>  at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
>
>  at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
>
>  at java.security.AccessController.doPrivileged(Native Method)
>
>  at javax.security.auth.Subject.doAs(Subject.java:415)
>
>  at 
>org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.
>java:1671)
>
>  at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
>
>Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException:
>Could not get JDBC Connection; nested exception is
>
>java.sql.SQLException: Could not open client transport with JDBC Uri:
>jdbc:hive2://10.60.2.26:10000/default;principal=hive/example-
>
>[email protected];auth=NOSASL: GSS initiate failed
>
>  at 
>org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSour
>ceUtils.java:80)
>
>  at 
>org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:391)
>
>  at 
>org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:471)
>
>  at 
>org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:481)
>
>  at 
>org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.jav
>a:491)
>
>  at 
>org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.jav
>a:497)
>
>  at com.citiustech.main.Test.main(Test.java:26)
>
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>  at 
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>57)
>
>  at 
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
>pl.java:43)
>
>  at java.lang.reflect.Method.invoke(Method.java:606)
>
>  at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:55)
>
>  ... 15 more
>
>Caused by: java.sql.SQLException: Could not open client transport with
>JDBC Uri:
>
>jdbc:hive2://10.60.2.26:10000/default;principal=hive/example-qa1-dn2@EXAMP
>LE.com;auth=NOSASL: GSS initiate failed
>
>  at 
>org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:210)
>
>  at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:156)
>
>  at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
>
>  at java.sql.DriverManager.getConnection(DriverManager.java:571)
>
>  at java.sql.DriverManager.getConnection(DriverManager.java:187)
>
>  at 
>org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionF
>romDriverManager
>
>(DriverManagerDataSource.java:153)
>
>  at 
>org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionF
>romDriver(DriverManagerDataSource.java:144)
>
>  at 
>org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConne
>ctionFromDriver
>
>(AbstractDriverBasedDataSource.java:155)
>
>  at 
>org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConne
>ction(AbstractDriverBasedDataSource.java:120)
>
>  at 
>org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSo
>urceUtils.java:111)
>
>  at 
>org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSour
>ceUtils.java:77)
>
>  ... 26 more
>
>Caused by: org.apache.thrift.transport.TTransportException: GSS initiate
>failed
>
>  at 
>org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransp
>ort.java:232)
>
>  at 
>org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:316)
>
>  at 
>org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport
>.java:37)
>
>  at 
>org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssum
>ingTransport.java:52)
>
>  at 
>org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssum
>ingTransport.java:49)
>
>  at java.security.AccessController.doPrivileged(Native Method)
>
>  at javax.security.auth.Subject.doAs(Subject.java:415)
>
>  at 
>org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.
>java:1671)
>
>  at 
>org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport.open(TUGIAssumi
>ngTransport.java:49)
>
>  at 
>org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:185)
>
>  ... 36 more
>
>
>
>Oozie Launcher failed, finishing Hadoop job gracefully
>
>
>
>Oozie Launcher, uploading action data to HDFS sequence file:
>hdfs://example-qa1-nn:8020/user/admin/oozie-oozi/0000000-
>
>160317141545276-oozie-oozi-W/javaAction--java/action-data.seq
>
>
>
>Oozie Launcher ends
>
>
>Please find below workflow xml specifying oozie java action and java
>program for executing hive queries:
>
>Workflow.xml:
>
>
><workflow-app name="WorkFlowForJavaActionToExecuteHiveQuery"
>xmlns="uri:oozie:workflow:0.2.5">
>
>  <credentials>
>
>
>
>
>
>  <credential name='hive_credentials' type='hcat'>
>
>                        <property>
>
>                            <name>hcat.metastore.uri</name>
>
>                            <value>thrift://example-qa1-dn2:9083</value>
>
>                        </property>
>
>                        <property>
>
>                            <name>hcat.metastore.principal</name>
>
>                            <value>hive/[email protected]</value>
>
>                        </property>
>
>                </credential>
>
></credentials>
>
>    <start to="javaAction"/>
>
>
>
>
>
>
>
>
>
><action name="javaAction" cred="hive_credentials">
>
>        <java>
>
>            <job-tracker>${jobTracker}</job-tracker>
>
>            <name-node>${nameNode}</name-node>
>
>
>
>  <main-class>com.citiustech.main.Test</main-class>
>
>        </java>
>
>        <ok to="end"/>
>
>        <error to="fail"/>
>
>    </action>
>
>
>
>     <kill name="fail">
>
>        <message>Job failed, error
>
>            message[${wf:errorMessage(wf:lastErrorNode())}]</message>
>
>    </kill>
>
>    <end name="end"/>
>
></workflow-app>
>
>
>Java Program:
>
>
>package com.citiustech.main;
>
>
>
>import java.io.IOException;
>
>
>
>import org.apache.hadoop.security.UserGroupInformation;
>
>import org.springframework.jdbc.core.JdbcTemplate;
>
>import org.springframework.jdbc.datasource.DriverManagerDataSource;
>
>
>
>public class Test {
>
>  public static void main(String[] args) throws IOException {
>
>         UserGroupInformation.loginUserFromKeytab("[email protected]",
>"/etc/security/keytabs/admin.keytab");
>
>
>
>         org.apache.hadoop.conf.Configuration conf = new
>org.apache.hadoop.conf.Configuration();
>
>      conf.set("hadoop.security.authentication", "Kerberos");
>
>      UserGroupInformation.setConfiguration(conf);
>
>      UserGroupInformation.loginUserFromKeytab("[email protected]",
>"/etc/security/keytabs/admin.keytab");
>
>
>
>
>
>
>
>         DriverManagerDataSource dataSource = new DriverManagerDataSource
>
>("jdbc:hive2://10.60.2.26:10001/default;principal=hive/example-qa1-dn2@EXA
>MPLE.com", "hive", "");
>
>         dataSource.setDriverClassName("org.apache.hive.jdbc.HiveDriver");
>
>         JdbcTemplate jdbcTemplate = new JdbcTemplate();
>
>         jdbcTemplate.setDataSource(dataSource);
>
>
>
>         long count = 0;
>
>         count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM
>provider", Long.class);
>
>         System.out.println("Count is *************************"+count);
>
>  }
>
>}
>
>I have submitted workflow job using admin user who have access to hive.
>
>I did kinit programmatically as well using UserGroupInformation API for
>admin user, but still I am getting above exception.
>I have kept only spring core, spring jdbc and hive jdbc jars in oozie
>HDFS cache.
>
>I also tried all possible solutions mentioned on hortonworks, stack
>overflow and other forums, however I am still facing same issue.
>
>Can anyone suggest any solution for this issue?
>
>
>Thanks & Regards,
>Ashish
>
>
>
>
>
>

Reply via email to