【问题标题】:Run pig job as a different user以其他用户身份运行 pig 作业
【发布时间】:2012-11-02 04:08:39
【问题描述】:

所以这是一种情况,我有一个未配置 Kerberos 安全性和工作站的 hadoop 集群。 Hadoop 集群运行 Cloudera CDH3 发行版。集群上的数据全部存储在 'hdfs' 用户下。

工作站是运行嵌入 PIG 客户端的复杂软件的 linux 或 macos 工作站。 PIG 客户端连接到集群以运行分析作业。

这是一个问题。集群和工作站上的用户帐户不同,hadoop 集群中的所有数据都存储在“hdfs”主目录用户下,工作站拥有完整的用户帐户集。是否可以告诉 PIG 在不同的用户帐户下执行作业。当前 pig 尝试使用当前登录到工作站的用户帐户执行作业。该作业实际运行但无法访问数据,因为脚本使用相对于 HDFS 用户主目录的路径。

我知道,当没有为集群配置安全性时,用户名只是通过作业配置 .XML 传递,但由于某种原因,我无法弄清楚如何将我需要的用户名强制输入该 XML 文档。

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

    尝试设置“HADOOP_USER_NAME”环境变量。
    更多详情请见similar question

    【讨论】:

    • 这个答案实际上解决了这个问题,并且比接受的答案更合适。尤其是在测试和开发方面。
    【解决方案2】:

    您不能通过属性传递用户。安全子系统更复杂,然后简单地传递用户名。您有四种可能的解决方案:

    1. 完全禁用安全性(为什么需要它,如果所有数据都存储在“root”帐户下?)
    2. 在本地工作站创建 hdfs 用户并在 sudo -u hdfs 下运行软件
    3. 在 hadoop 集群上创建本地工作站用户,为该用户创建组,并将该组读取数据的权限添加到文件中。
    4. 不要将文件存储在“hdfs”下,并在工作站和 hadoop 集群上创建类似用户。

    我认为在你的情况下最好的方法是 1。但如果不可能,4 更受欢迎。

    【讨论】:

    • 谢谢。我想我必须选择选项 1。我解释的事情更复杂,工作站实际上是一组不同的工作站,它们运行有自己的用户,但他们都需要访问集群上的相同数据,而且它必须在他们的主目录中。不要问我为什么知道这很傻,但事情就是这样。
    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2010-11-13
    • 2015-03-14
    • 1970-01-01
    • 2019-11-09
    • 2012-02-05
    相关资源
    最近更新 更多