0

当我尝试从 Hue Pig UI 启动 Pig 脚本作业时,进程会启动一个作业,然后进度条会在那里停留 1-3 分钟,最终变成红色,唯一的输出是:“请初始化 HIVE_HOME。”

我尝试运行的我的 Pig 脚本是HDP 安装手册中的 Pig 验证中的脚本。

Pig 脚本:
A = 使用 PigStorage(':') 加载'passwd';
B = foreach A 生成 \$0 作为 id;将 B 存储到 '/tmp/id.out' 中;

我正在尝试让 Hortonworks Data Platform 的 Hue 版本(根据他们的网站为 v2.3 )中的 Pig 脚本 UI 工作。我正在手动执行此操作,使用 yum 安装我需要的软件包并手动设置配置。我正在使用 CentOS 6.4 在 Amazon AWS 机器上工作。我正在关注此安装文档

最初我认为我需要启动并运行 Oozie 才能从 Hue 执行 Pig Job,但是在跟踪 Hue 日志时,我看到它在执行 Pig 脚本时正在启动 WebHCat,因此我安装并验证了 WebHCat 正在运行到 http://$WebHCat.server.full.hostname:50111/templeton/v1/status 并验证我收到了非错误响应。因此,我完全相信 WebHCat 工作正常。我还必须注意,由于 core-site.xml 中的配置允许 Hue 用户在运行作业时冒充 hdfs 用户,Hue 用户正在运行 WebHCat 服务器,这是我之前遇到的一个错误试图在 Hue UI 中运行 Pig 脚本。

到目前为止,我已经在实际 Pig程序文件中的代码块中找到了错误。有问题的代码块是:

# CLASSPATH initially contains $PIG_CONF_DIR
CLASSPATH="${PIG_CONF_DIR}"
CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar
if [ "$includeHCatalog" == "true" ]; then
  # need to provide the hcatalog jar file path as well as
  # the location of the hive jars on which hcatalog depends
  hiveMetaStoreJar=hive-metastore-*.jar
  thriftJar=libthrift-*.jar
  hiveExecJar=hive-exec-*.jar
  fbJar=libfb303-*.jar
  jdoECJar=jdo*-api-*.jar
  slfJar=slf4j-api-*.jar
  hbaseHiveJar=hive-hbase-handler-*.jar
  if [ "$HIVE_HOME" == "" ]; then
    if [ -d "/usr/lib/hive" ]; then
      HIVE_HOME=/usr/lib/hive
    else
      echo "Please initialize HIVE_HOME"
      exit -1
    fi
  fi

这个代码块导致问题的事实非常令人困惑,而且我自己无法追踪错误。

我知道这个 if-else 子句: if [ -d "/usr/lib/hive" ]; 然后 HIVE_HOME=/usr/lib/hive else echo "Please initialize HIVE_HOME" exit -1 fi 是错误的根源,但我不明白为什么它没有识别出安装 Hive 的那个 lib 目录确实存在.

这就是我卡住的地方。我知道“/usr/lib/hive”存在,因为我已验证该目录存在于运行 Hue、WebHCat 和 Pig 的机器上。我不知道如何调试这里出了什么问题。我考虑过手动设置 HIVE_HOME,但这可能没有实际意义,因为 Pig 没有识别出该目录存在于文件系统中,因此如果它稍后在代码中尝试访问该路径会出错。

在这一点上,我可能会遗漏一些明显的东西,但我将非常感谢我能得到的任何帮助。

4

2 回答 2

1

我有同样的问题,但错误消息略有不同。这就是我修复它的方式。

您应该已经在 /etc/passwd 中有一个“hue”用户。该用户的主目录应该是“/usr/lib/hue”。这是 Hue 在安装期间分配的默认主目录。

  1. 为“hue”用户创建主目录。

    sudo mkdir /home/hue
    
  2. 更改目录权限

    sudo chown hue:hadoop /home/hue
    
  3. 将用户“hue”的 /etc/passwd 中的主目录从“/usr/lib/hue”更改为“/home/hue”

    hue:x:1013:492:Hue:/home/hue:/bin/bash
    

而已。现在应该没问题了。

于 2014-07-07T15:32:51.333 回答
0

我通过从 HUE 的 Pig 页面的“Pig 脚本”文本区域下的 de 参数列表中删除“-useHCatlog”参数解决了类似的问题。

于 2014-09-26T17:18:19.903 回答