`

hadoop命令加载包的顺序

 
阅读更多

这几天在搞hadoop的一个基础包,过程中搞的很头大,明明用-libjars传了,在job提交前总是提示出错,新修改的函数执行出错。不过最后还是解决了,这要从hadoop本身加载包里函数的顺序说起。

hadoop命令执行时,本地执行时(没有提交到jobtracker之前)要从CLASSPATH里加载jar包,并调用从CLASSPATH里jar包中的函数。在runjob之前,提交job的gateway上的代码就是从CLASSPATH的jar包里取的函数(提交之后,是在各个map/reduce节点上找jar包里对应的函数。)

这时就有个问题,如果多个包中有相同的函数(当然包括package也相同),那么hadoop程序会执行哪个?答案是:顺序执行。hadoop(应该是java)会拿第一个匹配到的函数来用,这样当有两个jar包里的package名相同,而且函数名相同时,就会用第一个。

-libjars只是把你用到的第3方包传到M/R的节点上(hadoop目录lib下的包不会上传,如果有自己的第3方包的话,要显式的用-libjars上传),从hadoop的源码里可以看出,当前目录的包是放在lib之后加载的,所以调试的时候,如果这个包之前在lib下的话,会一直用lib下的jar,导致新的函数无法使用。

用sh -x hadoop xxxx 可以看到hadoop的详细运行过程,通过查看CLASSPATH能看到jar包的装载顺序。

所以,如果什么时候发现自己的新jar里的函数在runjob前出错,就看hadoop中定义的CLASSPATH里是否有jar和你的package名和函数名重了。

分享到:
评论

相关推荐

    hadoop介绍

    7. **格式化NameNode**:使用`hadoop namenode -format`命令对NameNode进行格式化。 8. **启动所有节点**:确保所有服务正确启动。 **启动Hadoop**: - 使用`start-all.sh`脚本一次性启动所有服务。 - 或者单独...

    ubuntu下搭建hadoop

    安装过程包括创建一个新的虚拟机,并加载 Ubuntu 镜像文件进行自定义安装。安装过程中,需要配置虚拟机的启动方式和网络模式,例如将网络模式设置为桥接模式以便与宿主机进行通信。 2. **配置 BIOS**:进入虚拟机的...

    大数据hadoop的暂时性的小总结.docx

    Hadoop的shell命令是日常操作HDFS的主要工具。基本命令如`yarn jar`运行MapReduce作业,`hdfs dfs -mkdir -p`创建目录,`hdfs dfs -lsr`列出目录内容,`-moveFromLocal`、`-moveToLocal`、`-copyToLocal`、`-rm -rf`...

    《Hadoop开发者》第四期

    - **Hadoop Tar**:使用`hadoop archive`命令创建.tar.gz文件。 - **文件系统操作**:通过Hadoop提供的文件系统API实现文件的读写操作。 #### 十四、Hadoop技术论坛运营数据分享 Hadoop技术论坛是一个活跃的社区,...

    大数据技术Hadoop面试题,看看你能答对多少?(3).pdf

    7. **HDFS健康检查**:`hadoopdfsadmin -report`命令用于报告HDFS的状态,包括损坏的Block,但不是专门用于检测损坏块。 8. **调度器策略**:Hadoop默认的调度器策略是FIFO(先进先出),适用于简单的工作流。 9. ...

    hadoop日记2.1:hdfs设计思想和基础概念

    **Checkpoint机制**:HDFS会定期或手动命令方式进行Checkpoint,将最近的fsimage和一批新edits文件进行合并。Checkpoint发生后,会将前一次Checkpoint后的所有edits文件合并到新的fsimage中。HDFS会保存最近两次...

    Spark 2.1 安装注意事项1

    这通常通过`tar`命令完成,`zxf`参数分别表示解压(z)、使用gzip格式(x)和解包文件(f),后面跟着下载的tgz文件名。在这个例子中,命令是`tar zxf spark-2.1.0-bin-hadoop2.6.tgz`。解压后,你会得到一个名为`...

    大数据面试题

    - **解释**: `jps` 命令用于检查Hadoop集群中的各个进程是否正常运行,包括NameNode、DataNode、TaskTracker、JobTracker等关键组件的状态。 #### 十二、MapReduce原理 - **原理概述**: - **Map阶段**: 将输入...

    Greenplum数据库使用总结(5.11版本).pdf

    4.6 **gpload命令使用**:解释了gpload命令,这是一个用来加载数据到Greenplum数据库的工具。 4.7 **gpfdist命令使用**: - **gpfdist命令的特点**:描述了gpfdist命令,它是一个高性能的文件服务器,用于数据加载...

    南京大学 大数据 期末题库 pdf

    - 作用:快速大量地将数据加载到数据存储系统,如Hadoop或NoSQL数据库,减少I/O操作,提高效率。 - 操作步骤:预处理数据,创建表结构,设置表为Bulkload模式,加载数据,验证数据完整性,然后关闭Bulkload模式。 ...

    大数据面试题 (2).pdf

    25. hadoop dfsadmin –report命令是否用于检测HDFS损坏块? - 答案:是的。 - 解析:该命令可以查看HDFS集群状态,包括损坏块信息。 26. Hadoop的默认调度器策略是否为FIFO? - 答案:是的。 - 解析:默认情况...

    大数据基础课程设计报告.docx

    项目的目标是将这些数据加载到Hadoop分布式文件系统(HDFS)中,进行预处理,然后通过MapReduce和Hive进行多种查询和统计分析。 在操作要求方面,具体步骤包括: 1. 将原始数据上传到HDFS。 2. 对时间字段进行拆分...

    zookeeper 入门到精通

    4. **修改环境变量**:以 root 用户身份编辑 `/etc/profile` 文件,添加 Zookeeper 的路径,并重新加载配置文件。 ```bash su - root vi /etc/profile source /etc/profile ``` 5. **配置文件修改**:切换回 ...

    《大数据平台搭建与配置管理》期末试题试卷及答案.docx

    - Hadoop支持数据的顺序写入,但不支持随机写入。 46. **Map任务的执行** - 每个Map槽不是一个线程,而是一个执行Map任务的容器。 47. **Map任务的输出处理** - Map任务的输出确实需要进行分区、排序、合并和...

    oozie-4.2.0

    Oozie 支持多种类型的作业,包括Hadoop MapReduce、Pig、Hive、Sqoop,以及Java和Shell命令。在4.2.0中,对这些作业类型的支持更加完善,增强了与Hadoop生态系统的兼容性。 Oozie 提供了一个Web用户界面,便于用户...

    hive的学习资料

    包括插入数据、写入文件系统、插入顺序和初始值设定。 2.7 Cli Hive 命令行选项、交互式 Shell 命令及资源调用。 **3. Hive 其他操作** 包括 Limit、Top k、正则表达式列指定、Select(GroupBy、Order Sort By...

    azkaban3.43.0编译版本

    Azkaban支持多种作业类型,包括Java、Hadoop MapReduce、Shell命令、SQL查询等,通过定义工作流图,用户可以构建复杂的依赖关系,确保任务按顺序正确执行。此外,Azkaban还提供了插件系统,允许自定义扩展,如集成...

    《大数据平台搭建与配置管理》期末试题试卷及答案AB卷2套.docx

    Hadoop的HDFS主要是为了顺序写入而设计的,不支持随机写。 46. **Map槽的概念** - 错误。Map槽并不是指线程,而是指Map任务执行的容器。 47. **Map的输出处理** - 正确。Map的输出需要经过分区、排序、合并等...

Global site tag (gtag.js) - Google Analytics