hadoop - 运行Apache Pig教程问题

标签 hadoop apache-pig

我在运行“标准” pig 教程时遇到了一些困难-Pig script1-hadoop.pig

但是,由于集群设置(用户),我不得不对示例进行一些修改。标准教程希望所有文件都位于HDFS的/上,在我的情况下无法使用,因此我为此创建了/pig dir

drwxrwxrwx   - hdfs   hdfs          0 2014-03-31 11:15 /pig

与上传的内容
-rw-r--r--   3 jakub hdfs   10408717 2014-03-31 10:41 /pig/excite.log.bz2

我还修改了 pig 脚本script1-hadoop.pig,以遵循以下更改(主要是针对加载和存储命令):
raw = LOAD '/pig/excite.log.bz2' USING PigStorage('\t') AS (user, time, query);
...
STORE ordered_uniq_frequency INTO '/pig/script1-hadoop-results' USING PigStorage();

我运行 pig 脚本:
[jakub@hadooptools pigtmp]$ pig script1-hadoop.pig

但是没有运气并且得到错误:
2014-03-31 10:15:11,896 [main] ERROR org.apache.pig.tools.grunt.Grunt - You don't have permission to perform the operation. Error from the server: Permission denied: user=jakub, access=WRITE, inode="/":hdfs:hdfs:drwxr-xr-x
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:234)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:214)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:158)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5202)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5184)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:5158)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInternal(FSNamesystem.java:3405)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:3375)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3349)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:724)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:502)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:59598)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2053)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2047)

我不太确定为什么PIG脚本试图在HDFS上写入/。我知道PIG可以在HDFS上存储一些即时结果,因此我修改了pig.temp.dir属性(/etc/pig/conf/pig.properties)并在HDFS /pig/tmp上创建了位置
drwxrwxrwx   - jakub hdfs          0 2014-03-31 11:15 /pig/tmp

知道有什么问题吗?本地模式下的Pig可以。

最佳答案

排序。

运行Pig脚本的用户必须具有写入创建的tmp目录的权限,并且/ user / pig_user_running必须存在于群集中,并且还具有允许他在其中写入的权限。
HDFS上的 super 用户是运行namenode进程的用户,通常是HDFS。

关于hadoop - 运行Apache Pig教程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764425/

相关文章:

hadoop - 对同一个配置单元表进行多次压缩

hadoop 中的 XML 处理

apache-pig - 使用PigLatin删除重复项

hadoop - 我们如何在 Pig 中将多行组合成一行

hadoop - 如何在PIG中导入/加载.csv文件?

hadoop - pig : how to create a categorical variable?

java - pig : Output 1 column

maven - 如何将 proto3 与 Hadoop/Spark 一起使用?

hadoop - HBase如何与PHP或其他连接

hadoop - 为什么启动 YARN NodeManager 会抛出 KosmosFileSystem 文件系统异常?