0

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

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

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

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

4

2 回答 2

3

尝试设置“HADOOP_USER_NAME”环境变量。
更多细节可以在类似问题中找到。

于 2014-01-31T07:10:13.043 回答
1

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

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

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

于 2012-11-02T08:09:47.053 回答