【问题标题】:Oozie shell Action - Running hive from shell issueOozie shell Action - 从 shell 问题运行 hive
【发布时间】:2013-02-20 13:09:01
【问题描述】:

基于条件为真,我正在 shell 脚本中执行 hive -e。它工作正常。当我将此脚本放入 Oozie 中的 Shell 操作并运行时,我得到一个 scriptName.sh:第 42 行:hive:command not发现异常。

我尝试在 shell 操作中传递 PATH=/usr/lib/hive,但我想我在那里犯了一些错误,因为我得到了相同的错误 scriptName.sh : 第 42 行: hive:command not found

已编辑: 我在 shell 脚本中使用了which hive。它的输出不一致。我得到了两种输出变化:
1. /usr/bin/hive 以及 Delegation token can be issued only with kerberos or web authentication Java IOException。”

2.which : hive not in {.:/sbin:/usr/bin:/usr/sbin:...}

【问题讨论】:

  • 你在正确的轨道上。您缺少环境变量。 shell 将使用 set 命令向您显示变量的完整列表。我相信 oozie 在单独的上下文中运行,因此它可能与您的 shell 命令行有不同的设置。
  • 一个问题是 Oozie 的环境变量 PATH 被我在 中的条目取代...我复制了 Oozie PATH 变量值并将 :/usr/lib/hive 附加到它..即使那样我也会遇到同样的错误..
  • 问题不只是一个变量。在命令行键入命令集。 set 显示所有变量。了解您需要哪些设置才能为 oozie 工作。
  • 好的..脚本是否需要执行权限?因为即使我在 Oozie 中执行之前授予它执行权限并将其放入 HDFS 中,该权限也会丢失。我也无法对其执行 chmod +x ..

标签: shell hadoop hive oozie


【解决方案1】:

好吧,我终于弄明白了。对于壳牌专家来说可能是一件微不足道的事情,但可以帮助刚起步的人。

1. hive : command not found 这不是类路径问题。这是 shell 问题。我运行的环境是 korn shell(回显 $SHELL 以找出答案)。但是 hive 脚本 (/usr/lib/hive/bin/hive.sh) 是一个 bash shell。所以我在脚本中更改了 shebang (#! /bin/bash) 并且它起作用了。

2.Delegation Token 只能通过kerberos 或web 身份验证来颁发。 在我的 Hive 脚本中,我添加了 SET mapreduce.job.credentials.binary = ${HADOOP_TOKEN_FILE_LOCATION}HADOOP_TOKEN_FILE_LOCATION 是一个保存 jobToken 位置的变量。需要传递此令牌以在安全集群。Know more on Delegation Token Here。

【讨论】:

  • 感谢您的解决方案,但我仍然无法通过“hive:command not found exception”。任何指针如何调试这个?
  • 这是因为 Oozie 可以在任何数据节点上运行 shell 操作。 hive cli 保证只在 edgenode 上运行,而不是在所有数据节点上运行。所以当 Oozie 在没有 hive 的节点上运行 shell 脚本时,我得到了“hive:command not found”。从 shell 运行 hive(或任何应该只存在于 hadoop 的边缘节点上的应用程序)不是一个好习惯。
【解决方案2】:

显然,你错过了 shell 环境变量。

要确认它,请在 oozie 调用的 shell 中使用 export。

如果你使用oozie call shell,一个简单的方法是使用/bin/bash -l your_script。

附言。 PATH 是一个目录列表,因此您需要将${HIVE_HOME}/bin 附加到您的PATH 而不是${HIVE_HOME}/bin/hive。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多