Tôi đang viết một phần mềm có nhiệm vụ lưu trữ các tệp trong hadoop-hdfs và tất nhiên tôi muốn viết các trường hợp thử nghiệm cho chức năng cụ thể này. Thật không may khi tôi thử build()MiniDFSCluster, tôi nhận được thông báo sau.
10/16/07 16:16:33 THÔNG TIN hdfs.MiniDFSCluster: cụm bắt đầu: numNameNodes=1, numDataNodes=2
16/10/07 16:16:33 INFO hdfs.MiniDFSCluster: Tắt cụm Mini HDFS
java.lang.NoClassDefFoundError: org/apache/hadoop/net/StaticMapping
tại org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:792)
tại org.apache.hadoop.hdfs.MiniDFSCluster.(MiniDFSCluster.java:475)
tại org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:434)
tại de.tuberlin.cit.storageassistant.ArchiveManagerTest.setUp(ArchiveManagerTest.java:33)
tại sun.reflect.NativeMethodAccessorImpl.invoke0(Phương thức gốc)
tại sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
tại sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
tại java.lang.reflect.Method.invoke(Method.java:497)
tại org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
tại org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
tại org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
tại org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
tại org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
tại org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
tại org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
tại org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
tại org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
tại org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
tại org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
tại org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
tại org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
tại org.junit.runners.ParentRunner.run(ParentRunner.java:363)
tại org.junit.runner.JUnitCore.run(JUnitCore.java:137)
tại com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
tại com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
tại com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
tại sun.reflect.NativeMethodAccessorImpl.invoke0(Phương thức gốc)
tại sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
tại sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
tại java.lang.reflect.Method.invoke(Method.java:497)
tại com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Nguyên nhân là do: java.lang.ClassNotFoundException: org.apache.hadoop.net.StaticMapping
tại java.net.URLClassLoader.findClass(URLClassLoader.java:381)
tại java.lang.ClassLoader.loadClass(ClassLoader.java:424)
tại sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
tại java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 31 thêm
Quá trình kết thúc với mã thoát 255
Đây là các phần phụ thuộc hadoop pom.xml của tôi:
org.apache.hadoop
hadoop-common
${hadoop.version
org.apache.hadoop
hadoop-hdfs
${hadoop.version
org.apache.hadoop
hadoop-hdfs
bình kiểm tra
${hadoop.version
kiểm tra
Đây có phải là cách chính xác để gỡ lỗi các công cụ sử dụng hadoop không? Nếu có, làm thế nào tôi có thể làm cho nó hoạt động. Tôi đang sử dụng mã ví dụ cổ điển để thử nghiệm:
@org.junit.Trước
public void setUp() ném ngoại lệ {
// super.setUp();
Cấu hình conf = Cấu hình mới();
// conf.set("fs.defaultFS", "hdfs://localhost:9000");
Tệp baseDir = Tệp mới("./target/hdfs/").getAbsoluteFile();
FileUtil.fullDelete(baseDir);
conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath());
dfsCluster = MiniDFSCluster mới
.Builder(conf)
.checkExitOnShutdown(true)
.numDataNodes(2)
.format (đúng)
.racks(null)
.xây dựng();
hdfsURI = "hdfs://localhost:"+ dfsCluster.getNameNodePort() + "/";
}
@org.junit.After
public void TearsDown() ném ngoại lệ {
nếu (dfsCluster != null) {
dfsCluster.shutdown();
}
}
Bất kỳ trợ giúp hoặc gợi ý?
Gặp phải vấn đề tương tự, bằng cách thêmhadoop-common:kiểm tra
Sự phụ thuộc có thể giải quyết nó:
org.apache.hadoop
hadoop-common
${hadoop.version
kiểm tra
mã sản xuất hadoop-chung
Lớp thích hợp bị thiếu trong Artifact.
Tôi là một lập trình viên xuất sắc, rất giỏi!