我需要解析标准pcap二进制日志文件库,以便在Git here
中已经可用的MR(MapReduce)作业我还看到了一个示例here
ClassNotFoundException: p3.hadoop.mapreduce.lib.input.PcapInputFormat
我在运行示例类时看到了上述异常。
我的pom看起来像
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.name.mr.analytics.main.NetworkAnalytics</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef> jar-with-dependencies </descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
我正在打包所有必需的jar,但有些Maven是如何覆盖manifest.mf文件的,我只能看到jar-with-dependencies的manifest.mf中的classpath或main-class。但是在另一个正在创建的jar中有manifest.mf中的所有细节,但显然依赖项不可用。
答案 0 :(得分:0)
您遇到的问题与在执行mapreduce作业的节点上找不到此类的事实有关。您有3个关于如何使其工作的主要选项:
hadoop-pcap
类打包到jar文件中(可以使用GUI IDE轻松完成)hadoop-pcap
个类的jar文件放入CLASSPATH
个目录之一(参见yarn.application.classpath
)hadoop-pcap
的jar文件放入HDFS(hdfs dfs -put hadoop_pcap.jar <hdfs path>
)并使用job.addFileToClassPath
调用带有hadoop-pcap
包的jar文件,将其与您的作业一起发送给所有人执行它的节点对于生产用途,我建议使用解决方案#2,当您还在开发代码时我建议首先尝试#1