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