首页 > 解决方案 > 如何在服务器上运行 sparkjob 时修复“用户 root(用户 id 0)已被拒绝访问以创建 application_1558587698997_88549”错误?

问题描述

我有一个 spark 工作,我从多个 hadoop 文件中读取数据并将其写入 cassandra 表。触发 spark 作业时出现以下错误:

org.apache.hadoop.security.AccessControlException:用户 root(用户 id 0)已被拒绝访问在 com.mapr.fs.MapRFileSystem.makeDir(MapRFileSystem.java:1142)在 com.mapr.fs.MapRFileSystem 创建 application_1558587698997_88549。 mkdirs(MapRFileSystem.java:1162) 在 org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1913) 在 org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:634) 在 org.apache .spark.deploy.yarn.Client.prepareLocalResources(Client.scala:409) at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:814) at org.apache.spark.deploy.yarn.Client .submitApplication(Client.scala:169) at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:56) at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:173) at org.apache.spark.SparkContext.(SparkContext.scala:509) at org.apache.spark.api.java.JavaSparkContext.(JavaSparkContext.scala:58) at com.walmart.labs.back.to .school.TeachersListETLForList.(TeachersListETLForList.java:99) 在 com.walmart.labs.back.to.school.TeachersListETLForList.main(TeachersListETLForList.java:605) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun。 reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark .deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:759) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119) at org.apache.spark.deploy.SparkSubmit.main( SparkSubmit.scala)

当我将主服务器设置为本地时,它可以工作,但是由于文件的大小很大,我得到了内存不足的异常。我也尝试将其设置如下,但无法修复。

sparkConf.setMaster("local[4]");

这是我当前的配置设置:

sparkConf.setMaster(jobConfig.getString("spark.context-settings.master"));

我想用相同的配置运行它,但不知道如何解决这个问题。

标签: javascalaapache-sparkhadoopmapreduce

解决方案


推荐阅读