以不同的用户身份运行pig job

时间:2012-11-02 04:08:39

标签: hadoop apache-pig

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

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

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

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

2 个答案:

答案 0 :(得分:3)

尝试设置“HADOOP_USER_NAME”环境变量 有关详细信息,请参阅similar question

答案 1 :(得分:1)

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

  1. 完全禁用安全性(如果所有数据都存储在“root”帐户下,为何需要?)
  2. 在本地工作站上创建hdfs用户并在sudo -u hdfs下运行软件
  3. 在hadoop群集上创建本地工作站用户,为该用户创建组,并添加权限以将此组的数据读取到文件中。
  4. 不要将文件存储在“hdfs”下,并在工作站和hadoop群集上创建类似的用户。
  5. 我认为在你的情况下更好的方法是1.但如果不可能,4更受赞赏。