将pcap二进制文件读入HDFS

时间:2014-11-05 14:27:22

标签: maven hadoop mapreduce

我需要解析标准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中的所有细节,但显然依赖项不可用。

1 个答案:

答案 0 :(得分:0)

您遇到的问题与在执行mapreduce作业的节点上找不到此类的事实有关。您有3个关于如何使其工作的主要选项:

  1. hadoop-pcap类打包到jar文件中(可以使用GUI IDE轻松完成)
  2. 将每个群集节点上包含hadoop-pcap个类的jar文件放入CLASSPATH个目录之一(参见yarn.application.classpath
  3. 将包含hadoop-pcap的jar文件放入HDFS(hdfs dfs -put hadoop_pcap.jar <hdfs path>)并使用job.addFileToClassPath调用带有hadoop-pcap包的jar文件,将其与您的作业一起发送给所有人执行它的节点
  4. 对于生产用途,我建议使用解决方案#2,当您还在开发代码时我建议首先尝试#1