Map Reduce - Maven(它是如何工作的?)

时间:2014-09-11 04:16:53

标签: java maven mapreduce

我是Maven和Java的新手。我在Eclipse中创建了一个简单的map-reduce程序,并使用maven来指定依赖项。 (我在POM.XML中指定了hadoop依赖项)。它下载了所有家属,我可以在maven家属中看到所有这些家属。然后我创建了一个JAR并在集群中运行它。一切都很好。但是当我解压缩JAR文件时,我没有在JAR中看到来自Hadoop的任何依赖jar?然后我很困惑它是如何工作的?根据我的理解,您需要分发所有JARS。请教我。

感谢, 约翰

2 个答案:

答案 0 :(得分:0)

要构建包含依赖项的jar,您必须配置maven-assembly-plugin。看看这个:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>attached</goal>
        </goals>
        <phase>package</phase>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.example.package.MainClass</mainClass>
            </manifest>
            <manifestEntries>
              <Source-Version>${build-version}</Source-Version>
            </manifestEntries>
          </archive>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

答案 1 :(得分:0)

Hadoop在使用HADOOP_CLASSPATH中指定的位置运行作业时加载jar文件。

它位于文件conf / hadoop_env.sh文件中:

# Extra Java CLASSPATH elements.  Optional.
# export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"