Java 在hadoop中运行作业-ERROR security.UserGroupInformation

Java 在hadoop中运行作业-ERROR security.UserGroupInformation,java,hadoop,jar,mapreduce,Java,Hadoop,Jar,Mapreduce,我在hadoop中运行了一个作业(jar文件)(我的jar文件有一些其他jar文件和一个zip文件),但我遇到了这个错误。如果有人能帮助我并说出这个错误的原因,我将不胜感激。我认为这个错误是因为我运行的jar文件中存在一个zip文件,但是我如何手动解压缩它呢 ERROR security.UserGroupInformation: PriviledgedActionException as:hduser cause:java.util.zip.ZipException: er

我在hadoop中运行了一个作业(jar文件)(我的jar文件有一些其他jar文件和一个zip文件),但我遇到了这个错误。如果有人能帮助我并说出这个错误的原因,我将不胜感激。我认为这个错误是因为我运行的jar文件中存在一个zip文件,但是我如何手动解压缩它呢

     ERROR security.UserGroupInformation: PriviledgedActionException
     as:hduser cause:java.util.zip.ZipException: error reading zip file
    at java.util.zip.ZipFile.read(Native Method)
    at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
    at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
    at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at org.apache.hadoop.util.RunJar.unJar(RunJar.java:55)
    at org.apache.hadoop.filecache.TrackerDistributedCacheManager.downloadCacheObject(TrackerDistributedCacheManager.java:438)
    at org.apache.hadoop.filecache.TrackerDistributedCacheManager.localizePublicCacheObject(TrackerDistributedCacheManager.java:477)
    at org.apache.hadoop.filecache.TrackerDistributedCacheManager.getLocalCache(TrackerDistributedCacheManager.java:192)
    at org.apache.hadoop.filecache.TaskDistributedCacheManager.setupCache(TaskDistributedCacheManager.java:182)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:131)
    at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:592)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:1013)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:550)
    at org.apache.giraph.job.GiraphJob.run(GiraphJob.java:259)
    at org.apache.giraph.GiraphRunner.run(GiraphRunner.java:94)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
ERROR security.UserGroupInformation:PriviledgedActionException
as:hduser原因:java.util.zip.ZipException:读取zip文件时出错
位于java.util.zip.ZipFile.read(本机方法)
access$1400(ZipFile.java:60)
位于java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
位于java.util.zip.ZipFile$zipfileInflatierInputStream.fill(ZipFile.java:419)
位于java.util.zip.InflateInputStream.read(InflateInputStream.java:158)
在java.io.FilterInputStream.read(FilterInputStream.java:107)中
位于org.apache.hadoop.util.RunJar.unJar(RunJar.java:55)
位于org.apache.hadoop.filecache.trackerdDistributedCacheManager.downloadCacheObject(trackerdDistributedCacheManager.java:438)
位于org.apache.hadoop.filecache.TrackerDistributedCacheManager.localizePublicCacheObject(TrackerDistributedCacheManager.java:477)
位于org.apache.hadoop.filecache.TrackerDistributedCacheManager.getLocalCache(TrackerDistributedCacheManager.java:192)
位于org.apache.hadoop.filecache.TaskDistributedCacheManager.setupCache(TaskDistributedCacheManager.java:182)
位于org.apache.hadoop.mapred.LocalJobRunner$Job.(LocalJobRunner.java:131)
位于org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:592)
位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:1013)
位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
位于org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
位于org.apache.hadoop.mapreduce.Job.submit(Job.java:550)
位于org.apache.giraph.job.GiraphJob.run(GiraphJob.java:259)
位于org.apache.giraph.GiraphRunner.run(GiraphRunner.java:94)
位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
位于org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:160)
根据此日志:

as:hduser cause:java.util.zip.ZipException: error reading zip file
 at java.util.zip.ZipFile.read(Native Method)
 at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
看起来你没有权限读取那个zip文件

  • 请尝试由您的用户读取该数据?(sudo-u hduser head-l 1/path/of/file.zip),我想您也会看到权限错误。您应该首先调用hadoop用户(hduser?)的读取权限
  • 被SELinux阻止是另一个可能的问题,请检查日志:/var/log/audit/audit.log
如果您想在linux文件系统中解压缩该zip文件,可以运行

$unzip/path/of/file


如果这是一个hdfs路径,您可能需要先获取它(如果我要操作它)

谢谢。如何删除jar文件中的特定文件?@erfafafarhangy.jar pacakge是一个zip文件。您可以解压它(使用解压),删除这个文件,然后重新压缩它(使用zip),并使用.jar作为扩展名。然而,我认为从源代码重新运行打包命令是一个更好的解决方案