복붙노트

[HADOOP] java.lang.NoClassDefFoundError : org / apache / hadoop / fs / StorageStatistics

HADOOP

java.lang.NoClassDefFoundError : org / apache / hadoop / fs / StorageStatistics

서버에서 s3 응용 프로그램에 간단한 스파크를 실행하려고하지만 서버에 hadoop 2.7.3이 설치되어 있고 GlobalStorageStatistics 클래스가 포함되어 있지 않은 것 같아서 아래 오류가 계속 발생합니다. http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/api/org/apache/hadoop/fs/GlobalStorageStatistics.html.homeoop 2.8.x가 내 pom에 정의되어 있습니다. .xml 파일을 로컬로 실행하여 테스트하려고합니다.

만약 내가 hadoop 2.7.3과 함께 가야한다면 그 클래스를 포함 할 수있는 대안이나 해결 방법을 무시하도록 할 수 있습니까?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/StorageStatistics
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.hadoop.conf.Configuration.getClassByNameOrNull(Configuration.java:2134)
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2099)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2193)
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
    at org.apache.spark.sql.execution.datasources.DataSource.hasMetadata(DataSource.scala:301)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:344)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
    at org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:441)
    at org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:425)
    at com.ibm.cos.jdbc2DF$.main(jdbc2DF.scala:153)
    at com.ibm.cos.jdbc2DF.main(jdbc2DF.scala)
    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.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.StorageStatistics
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 28 more

해결법

  1. ==============================

    1.하둡 조각을 섞어서 일을 기대할 수는 없습니다. hadoop-common과 hadoop-aws의 내부 클래스 간의 밀접한 결합이 아니라 hadoop-aws 모듈이 만든 amazon-aws SDK의 특정 버전과 같은 것입니다.

    하둡 조각을 섞어서 일을 기대할 수는 없습니다. hadoop-common과 hadoop-aws의 내부 클래스 간의 밀접한 결합이 아니라 hadoop-aws 모듈이 만든 amazon-aws SDK의 특정 버전과 같은 것입니다.

    클래스 패스를 분리 할 수있는 경우가 아니면 POM을 다시 2.7.3으로 롤백해야합니다.

    죄송합니다

  2. from https://stackoverflow.com/questions/44411493/java-lang-noclassdeffounderror-org-apache-hadoop-fs-storagestatistics by cc-by-sa and MIT license