在AWS EMR集群上启动spark命令行时,权限被拒绝

时间:2015-10-10 11:24:08

标签: amazon-web-services apache-spark emr

我已在AWS EMR服务上启动了一个包含2台计算机(1个主计算机,1个核心计算机)的群集,其中包含1个密钥对。

然后使用ssh登录到主实例,前提是创建了.pem

successed!

然后我尝试在主实例上运行spark-shell或pyspark并获得以下错误

Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied:   user=ec2-user, access=WRITE, inode="/user":hdfs:hadoop:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:238)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:179)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6512)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6494)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:6446)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInternal(FSNamesystem.java:4248)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:4218)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4191)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:813)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:600)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:635)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
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:1628)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)

2 个答案:

答案 0 :(得分:9)

自己解决。

使用ec2-user的ssh会成功登录,但在启动spark时会导致权限错误

用户hadoop的ssh解决了这个问题

答案 1 :(得分:0)

要解决此问题,您不必总是像hadoop用户那样使用ssh。 shell正在尝试访问HDFS上的当前用户主目录。

以hadoop用户身份运行以下终端命令(例如使用su)然后允许我使用spark-shell作为我的普通用户

hdfs dfs -mkdir /user/myuser
hdfs dfs -chown myuser:hadoop /user/myuser

(将myuser替换为您要运行shell的用户)