`
heipark
  • 浏览: 2097181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop命令行中"libjars"参数运行原理

阅读更多

经常看到有朋友通过hadoop命令运行job的时候加上"-libjars"参数导入第三方jar文件,今天一位同事问我他写的job使用这个参数为什么不生效,我简单看了看源码,得知其实是"GenericOptionsParser"这个类对conf做了修改,当在job中执行如下命令的时候,在conf中设置了"tmpjars"属性。

 

new GenericOptionsParser(conf, args);
  
    if (line.hasOption("libjars")) {
      conf.set("tmpjars", 
               validateFiles(line.getOptionValue("libjars"), conf));
      //setting libjars in client classpath
      URL[] libjars = getLibJars(conf);
      if(libjars!=null && libjars.length>0) {
        conf.setClassLoader(new URLClassLoader(libjars, conf.getClassLoader()));
        Thread.currentThread().setContextClassLoader(
            new URLClassLoader(libjars, 
                Thread.currentThread().getContextClassLoader()));
      }
    }

 

另外我们可以通过ToolRunner实现自动解析libjars参数, ToolRunner.run()将使用GenericOptionsParser解析libjars参数,如下:

 

 

public class LzoSort extends Configured implements Tool { 

	@Override
	public int run(String[] args) throws Exception {
		getConf().set("io.compression.codecs", "org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,com.hadoop.compression.lzo.LzopCodec");
		getConf().set("io.compression.codec.lzo.class", "com.hadoop.compression.lzo.LzoCodec");
		
		Job job = new Job(getConf(), "lzo sort");

                // ...............
		
		return job.waitForCompletion(true) ? 0 : 1;
	}
	
	public static void main(String[] args) throws Exception {
	    int res = ToolRunner.run(new Configuration(), new LzoSort(), args);
	    System.exit(res);
	}
}

 

-- end --

 

 

 

 

分享到:
评论
2 楼 heipark 2013-06-28  
在job提交之前,通过conf把它输出出来看看,是不是设置正确
1 楼 lixingwang718 2013-06-28  
麻烦为什么libjars 为什么不生效呢? 有什么解决办法么?

相关推荐

    hadoop作业调优参数整理及原理

    Hadoop作业调优是提升大数据处理效率的关键环节,通过对Hadoop MapReduce框架中的参数进行精细调整,可以显著改善作业的性能。以下是对标题和描述中涉及的参数及原理的详细说明: 1. **MapTask运行内部原理** - **...

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop介绍,HDFS和MapReduce工作原理

    hadoop 运行原理分析

    Hadoop的运行原理分析深入揭示了其作为分布式处理方案的核心优势,即能够通过简单的编程模型,将复杂的数据处理任务分布到大规模的机器集群上,大幅度提升数据处理和分析的效率。对于刚刚入门的IT人员来说,掌握...

    Hadoop示例程序WordCount运行及详解

    Hadoop示例程序WordCount运行及详解 Hadoop平台上进行WordCount是非常重要的,掌握了WordCount可以更好地理解Hadoop的map-reduce编程模型。本文将详细讲解Hadoop平台上WordCount的运行和实现。 基于Hadoop的map-...

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    ### 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 #### Hadoop 2.x 版本变化及依赖分析 在Hadoop 2.x版本中,相较于早期版本,其架构和依赖库有了明显的变化。在早期版本如1.x中,所有的依赖都集中在`...

    hadoop2.71 window环境下运行文件

    在Hadoop 2.7.1版本中,Windows环境下的配置和运行对于初学者来说可能具有一定的挑战性,因为Hadoop最初是为Linux系统设计的。不过,通过一些额外的步骤,我们可以在Windows上搭建Hadoop环境并运行相关命令。以下是...

    Hadoop运行原理分析pdf

    通过《Hadoop运行原理分析》这份文档,读者可以全面了解Hadoop的工作机制,从而更好地在大数据环境中部署和优化Hadoop系统,解决实际问题。同时,对Hadoop的学习也有助于扩展到整个大数据生态,理解和掌握更广阔的大...

    hadoop_mock:模拟 hadoop 命令行界面的实用程序

    hadoop_mock 在您家中模拟 hadoop 命令行界面的实用程序。概述$ export HADOOP_SSH_HOST=rnd07.local$ export HADOOP_SSH_OPTS=User=afyodorov$ export HADOOP_SSH_SUDO=hdfs$ hadoop_ssh fs -ls /flume/logs/bs/...

    hadoop中文乱码问题

    例如,使用Hadoop命令行执行`hadoop fs -cat`查看文件内容时,如果文件不是UTF-8编码,可以通过`iconv`工具先转换编码再查看。 6. **源码分析**: 对于开发者来说,深入理解Hadoop源码有助于找出乱码的根源。可以...

    hadoop2.6.5中winutils.exe+hadoop.dll

    为了在Windows上成功运行Hadoop,你需要将bin目录添加到系统的PATH环境变量中,这样就可以在任何位置调用Hadoop的命令行工具。同时,确保你的JDK已经正确安装并且配置了JAVA_HOME环境变量,因为Hadoop依赖Java运行时...

    PyHadoop:基于 Python 的 hadoop 命令行界面

    基于 Python 的 Hadoop 命令行界面 如何安装? $> sudo pip install pyhadoop 这是什么? 这是非常小的应用程序。 实际上,我已经为自己构建了它来自动化与 hadoop 相关的日常任务。 你的猫也从中受益。 用法: ...

    hadoop-2.9.2 win环境运行资源文件:hadoop.dll, winutils.exe

    Hadoop-2.9.2是Hadoop的一个稳定版本,提供了许多增强的功能和优化,使其在Windows环境中也能运行。本篇将深入探讨在Windows 10环境下运行Hadoop-2.9.2所需的两个关键资源文件:`hadoop.dll`和`winutils.exe`。 1. ...

    hadoop组件程序包.zip

    总结,"hadoop组件程序包.zip"是一个为Hadoop初学者量身定制的学习资源,通过深入学习和实践,初学者可以全面掌握Hadoop的核心组件及其工作原理,为未来在大数据领域的探索和发展打下坚实基础。

    安装hadoop_配置hadoop的运行环境视频

    5. **配置环境变量**:在系统的环境变量中添加`HADOOP_HOME`,指向Hadoop的安装目录,并将`HADOOP_HOME/bin`和`HADOOP_HOME/sbin`添加到`PATH`变量中,使得可以在命令行直接运行Hadoop相关命令。 6. **配置Hadoop**...

    hadoop2.6.5中winutils+hadoop

    在Hadoop生态系统中,Windows平台上的开发和运行通常比Linux环境更为复杂,因为Hadoop主要设计为在Linux上运行。然而,随着Hadoop的普及,开发者们也找到了在Windows上搭建和测试Hadoop环境的方法。标题提到的"hadop...

    hadoop调优参数列表.

    hadoop调优参数列表.hadoop调优参数列表.hadoop调优参数列表.

    hadoop.dll & winutils.exe For hadoop-2.7.1

    winutils.exe是Hadoop在Windows上的另一个核心工具,它相当于在Linux环境中的hadoop命令行工具。在Linux上,我们通常使用hadoop命令来执行各种操作,如启动、停止Hadoop服务、管理HDFS等。而在Windows上,由于命令行...

    hadoop3.3.0-winutils所有bin文件

    描述中提到的"所有bin文件"是指包含在Hadoop 3.3.0-winutils压缩包中的可执行二进制文件,这些文件是Hadoop在Windows系统中运行的基础。这些bin文件通常包括: 1. `hadoop`: Hadoop命令行工具,用于执行各种Hadoop...

    hadoop2.7.7对应的hadoop.dll,winutils.exe

    总结来说,`hadoop.dll`和`winutils.exe`是Hadoop在Windows环境中的两个关键组件,它们解决了在非Linux平台上运行Hadoop时遇到的兼容性问题。通过将这两个文件放入Hadoop的`bin`目录并正确配置环境变量,用户可以在...

    Hadoop 2.7.1 中文文档

    Hadoop 2.7.1 是一个开源框架,主要...通过阅读这份Hadoop 2.7.1的中文文档,无论是初学者还是经验丰富的开发者,都能深入了解Hadoop的工作原理,掌握其核心功能,并学会如何在实际环境中应用Hadoop解决大数据问题。

Global site tag (gtag.js) - Google Analytics