通过 "conf.set("tmpjars", jars);" 可以设置第三方jar,之前一直只是添加一个jar,运行OK,今天打算添加多个jar的时候发现mapreduce在运行时找不到class(ClassNotFoundException),跟踪代码发现jar文件的确上传到了HDFS中,所以甚是无解,后来上传jar到hdfs,然后使用DistributedCache.addFileToClassPath()方法也不行。郁闷半天,后来看到job.xml中有一段奇怪的设置,mapred.job.classpath.files的value为"/user/heipark/lib/commons-lang-2.3.jar;/user/heipark/lib/guava-r08.jar",可以看到这个分隔符是分号(我的OS是windows),在linux系统和hadoop系统一般都是逗号和冒号分隔,然后我继续挖,发现DistributedCache.addArchiveToClassPath()方法(tmpjars也会用这个方法)中使用了“System.getProperty("path.separator")”,于是灵感闪现,修改该值为linux系统的冒号,我嚓,居然成功了,搞了我4个小时,eclipse终于可以添加多个第三方jar包了。封装了方法,在main方法直接添加jar包就可以了。
调用:
addTmpJar("D:/Java/new_java_workspace/scm/lib/guava-r08.jar", conf);
方法定义:
/**
* 为Mapreduce添加第三方jar包
*
* @param jarPath
* 举例:D:/Java/new_java_workspace/scm/lib/guava-r08.jar
* @param conf
* @throws IOException
*/
public static void addTmpJar(String jarPath, Configuration conf) throws IOException {
System.setProperty("path.separator", ":");
FileSystem fs = FileSystem.getLocal(conf);
String newJarPath = new Path(jarPath).makeQualified(fs).toString();
String tmpjars = conf.get("tmpjars");
if (tmpjars == null || tmpjars.length() == 0) {
conf.set("tmpjars", newJarPath);
} else {
conf.set("tmpjars", tmpjars + "," + newJarPath);
}
}
分享到:
相关推荐
在实际使用中,将`hadoop-eclipse-plugin-2.6.0.jar`文件复制到Eclipse的`dropins`目录下,重启Eclipse后,插件会被自动识别并加载。然后,开发者可以在Eclipse的"New"菜单中找到Hadoop相关的项目模板,开始构建...
《Hadoop-Eclipse-Plugin-2.6.4.jar:Eclipse中的Hadoop开发利器》 在大数据处理领域,Hadoop作为一个开源的分布式计算框架,因其高效、可扩展的特性而备受青睐。为了方便开发者在Eclipse环境中进行Hadoop应用程序...
在这里,点击`New...`按钮,创建一个新的变量,比如命名为`HADOOP_PLUGIN`,并将变量值设置为`hadoop-eclipse-plugin-2.6.0.jar`文件的路径。 3. **验证安装**: 重启Eclipse后,如果插件安装成功,你可以在`File` -...
Hadoop-eclipse-plugin是Hadoop生态系统中的一个重要工具,它允许开发者使用Eclipse IDE直接在Hadoop集群上开发、测试和部署MapReduce程序。这个插件极大地简化了Hadoop应用程序的开发流程,使得Java开发者能够利用...
1. **安装与配置**:首先,你需要确保Eclipse已经安装了Java Development Toolkit (JDK),然后将`hadoop-eclipse-plugin-2.7.1.jar`文件复制到Eclipse的`plugins`目录下。重启Eclipse后,插件会自动加载并显示在...
5. **运行与调试**:右键点击MapReduce类,选择Run As -> Map/Reduce Job,选择目标集群,即可提交任务并观察运行结果。 总结,Hadoop Eclipse Plugin 2.7.3.jar不仅简化了Hadoop应用的开发过程,也提升了开发效率...
Hadoop-Eclipse-Plugin是Apache Hadoop项目的一个插件,专为Eclipse集成开发环境设计,使得开发者可以在Eclipse中直接编写、调试和运行Hadoop MapReduce程序。这个压缩包包含的是1.0.0版本的插件,并且提供了5个不同...
《深入理解Hadoop Eclipse插件:hadoop-eclipse-plugin-2.6.1.jar》 在大数据处理领域,Hadoop作为开源的分布式计算框架,扮演着至关重要的角色。而为了方便开发者在Eclipse这样的集成开发环境中高效地进行Hadoop...
3. **Job提交与监控**:开发者可以直接在Eclipse中提交MapReduce任务,并通过插件实时监控任务的状态,如进度、错误信息等,无需频繁切换到命令行界面。 4. **调试支持**:提供对MapReduce任务的调试功能,支持断点...
1. **安装插件**:首先需要下载对应版本的hadoop-eclipse-plugin jar文件,然后通过Eclipse的“Install New Software”功能,选择“Add”导入本地的jar文件进行安装。 2. **配置Hadoop环境**:在Eclipse中,通过...
1. 创建MapReduce项目:在Eclipse中新建一个Java项目,然后在项目的"Build Path"设置中,将Hadoop的JAR文件添加到类路径中,使项目具备Hadoop开发环境。 2. 编写Mapper和Reducer:根据业务需求编写处理数据的Mapper...
在IT行业中,Eclipse是一款广泛使用的Java集成开发环境(IDE),而Hadoop是Apache软件基金会的一个开源项目,主要用于处理和存储大数据。`eclipse hadoop2.7.1 plugin`是为了方便开发者在Eclipse中进行Hadoop项目...
- **Job提交与监控**:可以直接在Eclipse内提交MapReduce作业到Hadoop集群,并监控作业的执行状态和日志。 - **自动补全和错误检查**:提供Hadoop相关的API代码补全和语法检查,提高开发效率。 Hadoop 1.0.4版本...
3. **lib**:这里包含了插件运行所需的第三方库文件,比如Hadoop客户端的相关jar包,这些库文件使得插件能够与Hadoop集群通信,执行MapReduce任务。 4. **META-INF**:这是标准的Java存档(JAR)文件的一部分,包含...
通过引入这个JAR文件,Eclipse可以识别并支持Hadoop相关的项目类型,如MapReduce Job、HDFS操作等。 2. **hadoop.dll**: 这是Windows系统下的Hadoop动态链接库文件,用于Windows环境下Hadoop本地库的调用。在...
例如,这里提供的有两个版本:hadoop-eclipse-plugin-2.5.1.jar和hadoop-eclipse-plugin-2.2.0.jar。你需要根据你的Hadoop集群版本选择合适的插件。 3. 将下载的jar文件复制到Eclipse的plugins目录下。 4. 重启...