pig-在map reduce模式下拒绝权限

mutmk8jj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(361)

我试图加载一个csv文件从hdfs使用pigstorage,限制输出bt一个记录和转储。
我的hdfs快照:
我正在一台从机上运行一个带有1个主节点(nn&secnn)和1个数据节点及作业跟踪器的2节点集群。
我的pig脚本在数据节点上运行。
使用根用户

grunt> x= load '/user/hadoop/input/myfile.csv' using PigStorage(',') as (colA:chararray);
grunt> y = limit x 1;                                                                                 
grunt> dump y;

控制台日志:

> HadoopVersion   PigVersion      UserId  StartedAt               FinishedAt    
> Features
> 1.0.4           0.11.1          root    2013-09-26 17:35:18     2013-09-26 17:35:47     LIMIT
> 
> Failed!
> 
> Failed Jobs: JobId   Alias   Feature Message Outputs
> job_201309190323_0019   x,y             Message: Job failed! Error -
> JobCleanup Task Failure, Task: task_201309190323_0019_m_000002

我的权限被拒绝错误,日志为

org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=hadoop, access=EXECUTE, inode="hadoop-root":root:supergroup:rwx------

当用户“hadoop”试图在文件夹“hadoop root”上执行时,权限被拒绝。
但是我当前的用户是root,我正在运行pig&我的namenode正在运行hadoop(我希望是超级用户)

为什么日志显示user=hadoop而不是root。我做错什么了吗

hdfs快照:

[hadoop@hadoop-master ~]$ hadoop fs -ls /
    Warning: $HADOOP_HOME is deprecated.

    Found 2 items
    drwx------   - hadoop supergroup          0 2013-09-26 17:29 /tmp
    drwxr-xr-x   - hadoop supergroup          0 2013-09-26 14:20 /user
----------------------------------------------------------------------------------------
    [root@hadoop-master hadoop]# hadoop fs -ls /user
    Warning: $HADOOP_HOME is deprecated.

    Found 2 items
    drwxr-xr-x   - hadoop supergroup          0 2013-09-26 14:19 /user/hadoop
    drwxr-xr-x   - root   root                0 2013-09-26 14:33 /user/root
----------------------------------------------------------------------------------------    
    [hadoop@hadoop-master ~]$ hadoop fs -ls /tmp
    Warning: $HADOOP_HOME is deprecated.

    Found 15 items
    drwx------   - hadoop supergroup          0 2013-09-19 01:43 /tmp/hadoop-hadoop
    drwx------   - root   supergroup          0 2013-09-19 03:25 /tmp/hadoop-root
    drwxr-xr-x   - hadoop supergroup          0 2013-09-26 17:29 /tmp/temp-1036150440
    drwxr-xr-x   - root   supergroup          0 2013-09-26 17:27 /tmp/temp-1270545146
    drwx------   - root   supergroup          0 2013-09-26 14:51 /tmp/temp-1286962351
    drwx------   - hadoop supergroup          0 2013-09-26 14:12 /tmp/temp-1477800537
    drwx------   - hadoop supergroup          0 2013-09-26 15:25 /tmp/temp-1503376062
    drwx------   - root   supergroup          0 2013-09-26 14:09 /tmp/temp-282162612
    drwx------   - root   supergroup          0 2013-09-26 17:22 /tmp/temp-758240893
    drwx------   - root   supergroup          0 2013-09-26 15:00 /tmp/temp1153649785
    drwx------   - root   supergroup          0 2013-09-26 13:35 /tmp/temp1294190837
    drwx------   - root   supergroup          0 2013-09-26 13:42 /tmp/temp1469783962
    drwx------   - root   supergroup          0 2013-09-26 14:45 /tmp/temp2087720556
    drwx------   - hadoop supergroup          0 2013-09-26 14:29 /tmp/temp2116374858
    drwx------   - root   supergroup          0 2013-09-26 16:55 /tmp/temp299188455

我甚至试着关闭权限检查(在我的两个节点上的core-site.xml中的dfs.permissions),正如前面提到的那样,在hdfs中被拒绝的权限重新启动了我的所有hadoop服务。但还是没有运气。
根据日志,我试着
hadoop fs-chmod-r 777/tmp
正如我所确定的,hadoop根目录(根据上面的日志,它没有权限)将位于hdfs中的/tmp目录下。
但我在更改权限后得到了不同的例外。

Message: java.io.IOException: The ownership/permissions on the staging directory hdfs://hadoop-master:9000/tmp/hadoop-root/mapred/staging/root/.staging is not as expected. It is owned by root and permissions are rwxrwxrwx. The directory must be owned by the submitter root or by root and permissions must be rwx------

所以,我将权限恢复为hadoopfs-chmod-r700/tmp,现在同样的旧的permission-denied异常又回来了。
你能帮忙吗。

xzabzqsa

xzabzqsa1#

sudo su - hdfs

一旦你以“hdfs”用户的身份运行,那么你应该能够运行

hadoop fs -chmod -R 777 /tmp

然后应更改所有文件权限。

yws3nbqq

yws3nbqq2#

我终于可以解决这个问题了。
我的/tmp文件在hdfs中没有适当的权限。当我的hdfs中已经有一些文件时,我尝试将权限更改为1777(粘性位)。但这并没有奏效。
作为一个尝试&错误,我使用-copytolocal将hdfs备份到本地文件系统,并删除了包括/tmp文件夹在内的所有文件。
这次我用适当的权限重新创建了/tmp目录。
hadoop fs-chmod 1777/tmp版本
我使用-put命令将所有文件再次复制到hdfs中。
这一次,我的Pig脚本,这是在第一个职位上工作的魅力。
我检查了/tmp/hadoop root/mapred/staging的权限,它被设置为应该的权限。
DRWXRWX图纸
希望这能帮助任何面临同样问题的人。
干杯

相关问题