【问题标题】:Oozie hive action with kerberos on HDP-1.3.3在 HDP-1.3.3 上使用 kerberos 的 Oozie 蜂巢操作
【发布时间】:2014-11-03 05:21:41
【问题描述】:

我正在尝试在启用 kerberos 的环境中从 oozie hive 操作执行 hive 脚本。

这是我的工作流.xml

<action name="hive-to-hdfs">
    <hive xmlns="uri:oozie:hive-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <job-xml>hive-site.xml</job-xml>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${queueName}</value>
            </property>
        </configuration>
        <script>script.q</script>
        <param>HIVE_EXPORT_TIME=${hiveExportTime}</param>
    </hive>
    <ok to="pass"/>
    <error to="fail"/>

我在尝试连接到 Hive Metastore 时遇到问题。

6870 [main] INFO hive.metastore - 尝试使用 URI thrift://10.0.0.242:9083 连接到 Metastore 心跳 心跳 67016 [main] WARN hive.metastore - set_ugi() 不成功,可能的原因:新客户端与旧服务器通信。继续没有它。 org.apache.thrift.transport.TTransportException:java.net.SocketTimeoutException:读取超时 在 org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 在 org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 在 org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 在 org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)

67018 [main] INFO hive.metastore - 在下次连接尝试前等待 1 秒。 68018 [main] INFO hive.metastore - 已连接到 Metastore。 心跳 心跳 128338 [main] WARN org.apache.hadoop.hive.metastore.RetryingMetaStoreClient - MetaStoreClient 失去连接。正在尝试重新连接。 org.apache.thrift.transport.TTransportException:java.net.SocketTimeoutException:读取超时 在 org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 在 org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 在 org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 在 org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)

129339 [main] INFO hive.metastore - 尝试使用 URI thrift://10.0.0.242:9083 连接到 Metastore 心跳 心跳 189390 [main] WARN hive.metastore - set_ugi() 不成功,可能的原因:新客户端与旧服务器通信。继续没有它。 org.apache.thrift.transport.TTransportException:java.net.SocketTimeoutException:读取超时 在 org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 在 org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 在 org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 在 org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)

189391 [main] INFO hive.metastore - 在下次连接尝试前等待 1 秒。 190391 [main] INFO hive.metastore - 已连接到 Metastore。 心跳 心跳 250449 [main] 错误 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer - org.apache.hadoop.hive.ql.metadata.HiveException:无法获取表 SESSION_MASTER 在 org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:953) 在 org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:887) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1083) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1059)

当我禁用 kerberos 安全工作流时,工作正常

【问题讨论】:

    标签: hadoop hive oozie hortonworks-data-platform


    【解决方案1】:

    要使您的 Oozie Hive 操作能够在安全集群上运行,您需要在工作流中包含一个带有“hcat”类型凭据的 &lt;credentials&gt; 部分。

    您的工作流程将如下所示:

    <workflow-app name='workflow' xmlns='uri:oozie:workflow:0.1'>
        <credentials>
            <credential name='hcat' type='hcat'>
                <property>
                    <name>hcat.metastore.uri</name>
                    <value>HCAT_URI</value>
                </property>
                <property> 
                    <name>hcat.metastore.principal</name>
                    <value>HCAT_PRINCIPAL</value>
                </property>
            </credential>
        </credentials>
    
        <action name="hive-to-hdfs" cred="hcat">
            <hive xmlns="uri:oozie:hive-action:0.2">
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <job-xml>hive-site.xml</job-xml>
                <configuration>
                    <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                    </property>
                </configuration>
                <script>script.q</script>
                <param>HIVE_EXPORT_TIME=${hiveExportTime}</param>
            </hive>
            <ok to="pass"/>
            <error to="fail"/>
        </action>
    </workflow>
    

    还有Oozie documentation关于这个功能。

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多