基于Maven管理的Mapreduce程序下载依赖包到LIB目录

1、Mapreduce程序需要打包作为作业提交到Hadoop集群环境运行,但是程序中有相关的依赖包,如果没有一起打包,会出现xxxxClass Not Found . 

2、在pom.xml文件<dependencies>标签同级目录添加<build>标签。

<!-- 将依赖lib包导出 -->
	<build>
		<plugins>
			<!-- 设置源文件编码方式 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<defaultLibBundleDir>lib</defaultLibBundleDir>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

			<!-- 拷贝依赖的jar包到lib目录 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals> 
						<configuration>
							<outputDirectory>
								 lib
							</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- 解决资源文件的编码问题 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins> 
	</build>

 3、在工程根目录下新建lib目录,依赖的第三方包都会从Maven仓库中心下载到lib目录中,对于Mapreduce程序来说的一个好处就是:工程打包为jar文件后,提交到Hadoop集群,Hadoop集群环境会自动读取lib目录中的jar文件,加载到作业运行环境中。

posted @ 2015-05-14 21:06  JackyKen  阅读(614)  评论(0编辑  收藏  举报