试图在hive-1.1.0中加载hwi服务的问题?

时间:2015-04-07 21:28:39

标签: hadoop hive

我一直在教自己在hive-1.1.0的情况下使用Hadoop(2.6.0)和相关的应用程序。我使用Hadoop for Dummies页面237上的信息运行hwi服务器,但按照那里的说明,我一直在运行一条错误消息,说明在hive-1.1.0 / lib中找不到WAR文件。

我必须配置$HIVE_HOME/config/hive-site.xml文件以指向此WAR文件在hive-1.1.0/lib中的位置,但是当我运行命令启动hwi服务器时,它会启动但会因为运行此命令而中断,路径中的一些行(应该来自我在hive-site.xml中的定义)是重复的,因此命令找不到WAR文件。我附上了我的hive-site.xml文件的屏幕截图以及运行命令hive --service hwi时发生的结果。

$HIVE_HOME/config/hive-site.xml档案的相关部分

<?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  <configuration>
     <!-- Hive Execution Parameters -->
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/home/hadoop/Hive/warehouse</value>
      <description>location of default database for the warehouse</description>
    </property>
    <property>
      <name>hive.hwi.war.file></name>
      <value>$HIVE_HOME/lib/hive-hwi.0.12.0.war</value>
      <description> This is the WAR file with the jsp content for Hive Web Interface</description>
    </property>  
  </configuration>

在这个版本的Hive上,没有WAR文件,我按照建议从hive-0.12.0复制了hive-hwi.0.12.0.war

以下结果:

[hadoop@fedora21_2 ~]$ hive --service hwi
15/04/05 15:53:02 INFO hwi.HWIServer: HWI is starting up
15/04/05 15:53:04 WARN conf.HiveConf: HiveConf of name hive.hwi.war.file> does not exist
15/04/05 15:53:04 FATAL hwi.HWIServer: HWI WAR file not found at /home/hadoop/hive-1.1.0/home/hadoop/hive-1.1.0/lib/hive-hwi-0.12.0.war
[hadoop@fedora21_2 ~]$ 

看起来当我运行命令加载HWI服务时,命令以某种方式破坏了hive-site.xml中发布的WAR文件的路径。不知道我在这里缺少什么。

2 个答案:

答案 0 :(得分:0)

从以下位置更改此属性:

<property>
            <name>hive.hwi.war.file</name>
            <value>{$HIVE_HOME}/lib/hive-hwi-[version].war</value>
</property>

为:

<property>
            <name>hive.hwi.war.file</name>
            <value>/lib/hive-hwi-[version].war</value>
</property>

您遇到了问题,因为最终执行路径变为{$ HIVE_HOME} / {$ HIVE_HOME} / lib / hive-hwi- [version] .war

这是因为您在阅读配置文件时已经在{$ HIVE_HOME}目录。

因此,如果从配置中删除{$ HIVE_HOME},则会获得{$ HIVE_HOME} / lib / hive-hwi- [version] .war这是正确的路径。

在您的情况下,[版本] = 0.12.0

答案 1 :(得分:0)

在配置单元中创建一个文件夹

// Azure app service will send the x-ms-client-principal-id when authenticated
app.Use(async (context, next) =>
{

    // Create a user on current thread from provided header
    if (context.Request.Headers.ContainsKey("X-MS-CLIENT-PRINCIPAL-ID"))
    {
        // Read headers from Azure
        var azureAppServicePrincipalIdHeader = context.Request.Headers["X-MS-CLIENT-PRINCIPAL-ID"][0];
        var azureAppServicePrincipalNameHeader = context.Request.Headers["X-MS-CLIENT-PRINCIPAL-NAME"][0];

        // Create claims id
        var claims = new Claim[] {
        new System.Security.Claims.Claim("http://schemas.microsoft.com/identity/claims/objectidentifier", azureAppServicePrincipalIdHeader),
        new System.Security.Claims.Claim("name", azureAppServicePrincipalNameHeader)
        };

        // Set user in current context as claims principal
        var identity = new GenericIdentity(azureAppServicePrincipalIdHeader);
        identity.AddClaims(claims);

        // Set current thread user to identity
        context.User = new GenericPrincipal(identity, null);
    };

    await next.Invoke();
});

并在其中粘贴lib的所有文件,然后运行命令

home/hadoop/hive-1.1.0/lib

可以解决时间错误。