当我尝试从 Hue Pig UI 启动 Pig Script Job 时,进程会启动一个作业,然后进度条在那里停留 1-3 分钟并最终变成红色,唯一的输出是:“Please initialize HIVE_HOME ”
我尝试运行的 Pig 脚本来自 Pig validation in the HDP installation manual .
pig 脚本:
A = 使用 PigStorage(':') 加载 'passwd';
B = foreach A 生成\$0 作为 id;将 B 存入 '/tmp/id.out';
我正在尝试让 Hortonworks 数据平台的 Hue 版本(v2.3,根据他们的 website)运行 Pig Script UI。我正在手动执行此操作,使用 yum 安装我需要的软件包并手动设置配置。我在使用 CentOS 6.4 的亚马逊 AWS 机器上工作。我正在关注 this installation documentation .
最初我认为我需要启动并运行 Oozie 才能从 Hue 执行 Pig Job,但是在跟踪 Hue 日志时我看到它在执行 Pig 脚本时启动 WebHCat,因此我安装并验证了 WebHCat 是通过转到 http://$WebHCat.server.full.hostname:50111/templeton/v1/status 并验证我收到了一个非错误的响应来工作。因此我完全相信 WebHCat 工作正常。我还必须注意,由于 core-site.xml 中的配置允许 Hue 用户在运行作业时冒充 hdfs 用户,因此 WebHCat 服务器由 Hue 用户运行,这是我之前遇到的错误试图在 Hue UI 中运行 Pig 脚本。
到目前为止,我已将错误追踪到实际 Pig 中的一个代码块 program file .有问题的代码块是:
# 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 子句: 如果 [ -d "/usr/lib/hive"];然后 HIVE_HOME=/usr/lib/ hive 别的 echo "请初始化HIVE_HOME" 导出-1 菲 是错误的来源,但我不明白为什么它没有认识到安装 Hive 的 lib 目录确实存在。
这就是我卡住的地方。我知道“/usr/lib/hive”存在,因为我已验证该目录存在于运行 Hue、WebHCat 和 Pig 的机器上。我不知道如何调试这里出了什么问题。我考虑过手动设置 HIVE_HOME,但这可能没有实际意义,因为 Pig 无法识别该目录存在于文件系统中,因此如果它稍后在代码中尝试访问该路径,就会出错。
此时我可能遗漏了一些明显的东西,但我将非常感谢我能得到的任何帮助。
请您参考如下方法:
我遇到了同样的问题,但错误消息略有不同。我就是这样修复它的。
您应该已经在/etc/passwd 中有一个“hue”用户。该用户的主目录应为“/usr/lib/hue”。这是 Hue 在安装过程中分配的默认主目录。
为“hue”用户创建主目录。
sudo mkdir /home/hue
更改目录权限
sudo chown hue:hadoop /home/hue
将/etc/passwd 中用户“hue”的主目录从“/usr/lib/hue”更改为“/home/hue”
hue:x:1013:492:Hue:/home/hue:/bin/bash
就是这样。现在应该没问题了。