hadoop 分发本地的jar文件的过程讲解

hadoop作业引用第三方jar文件 编写mapreduce程序,习惯用eclipse,可以利用hadoop插件,引用第三方jar文件,然后直接run on hadoop即可,很方便。当然插件和eclipse的版本要匹配,不然总是local执行。但如果将自己的程序发布成jar文件,然后用hadoop命令行执行,则会遇到依赖类找不到问题:NoClassDefFoundError。     要解决这个问题,就需要了解hadoop命令式如 阅读详情

一般情况下,我们会使用bai下面的du命令来运行一个hadoop任务: 这个命令实际上是zhi转化成下面的命令来运行的 dao在RunJar中,会读取abc.jar文件,然后尝试从manifest中提取Main-Class作为mainClass,如果manifest中没有指定,则把abc.jar之后的下一个参数当成mainClass。 接下来,RunJar会在本地创建一个临时目录(下面称为workDir,类似/tmp/hadoop-unjar...),然后把abc.jar解压到这个目录中。然后,把wrokDir、workDir/classes和workDir/lib下的所有文件路径 添加到一个变量中,然后使用URLClassLoader将这个变量指定的所有路径加载到当前线程。 最后,使用反射调用mainClass的main函数,进入用户自己的代码。 当我们的代码调用job.waitForCompletion时,会调用JobClient.copyAndConfigureFiles,把本地的jar文件拷贝到HDFS上面/tmp/hadoop/mapred/staging/<jobid/job.jar/的目录下。 TaskTracker获取到一个Task之后,会启动一个线程TaskLauncher来处理这个Task。在启动这个Task之前,会调用taskController.initializeJob来初始化Job,把Job相关的内容从HDFS上拷贝到本地(JobLocalizer.localizeJobJarFile负责拷贝jar并解压到本地workDir中)。 后面TaskRunner.getClassPaths把 wrokDir、workDir/classes和workDir/lib下的所有文件路径 添加到一个变量中,然后使用这个变量构造启动JVM的参数,最后启动一个新的JVM来运行Job。 从这个流程可以看出,我们jar中的 根目录,classes目录,和lib下的所有文件 都被添加到了执行环境(另外还有系统自身的环境变量CLASSPATH和Hadoop自身依赖的库)中。 因此,如果我们想要在我们的hadoop中添加一个外部的库,可以有两种方法: 1.把外部的jar解压了,然后将所有的.class与我们自己的代码打包在一起(maven-shade-plugin可以很轻松地帮我们做这件事); 2.创建一个lib目录,把依赖的jar文件放在里面,然后把lib目录和我们的代码打包在一起。 最后,提一下-libjars参数。如果我们使用ToolRunner.run来启动我们的Job,那么可以使用-libjars来指定依赖的外部jar。 不过-libjars有一定的局限性,由于-libjars来指定依赖的外部jar是在ToolRunner.run中使用GenericOptionsParser来加载的,因此在调用ToolRunner.run之前,外部jar还没有加载,不能使用这些类,甚至import(直接或间接)也不行(JVM加载一个类时会先检查这个类所引用的其他类型是否都可以找得到)。如果搞不清楚外部jar在何时可以用,不建议使用-libjars。 当然在Map和Reduce阶段时,-libjars来指定依赖的外部jar就完全可以无限制地使用了。Hadoop会自动把-libjars来指定依赖的外部jar上传到HDFS上,每个Job在执行之前,这些jar会自动被拷贝到本地,并设置到classpath中。

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤 目标: 在idea中用scala编写简单代码,从本地hdfs中(或本地目录)读取文件,通过spark处理后,结果输出到本地dhfs或本地目录。 然后修改代码,将项目打成jar包,上传到linux中,在spark集群上运行。 环境:hadoop2.7.2 +spark2.2.3 +scala 2.11.8 +idea2018 以上环境的具体安装配置和idea的基本操作分别见: win... 阅读详情

相关推荐

Windows下idea中实现Hadoop本地测试功能

0. 目标 Hadoop默认没有windows版本 Hadoop集群部署在Linux虚拟机上, 通过idea编写的MR代码和输入文件要打包jar发送给Linux 为便于测试MR代码是否正确, 希望在idea上运行MR 1. 解压hadoop到windows硬盘中 https://blog.youkuaiyun.com/wxfghy/article/details/80450469 win...

学习笔记 3259

【Hadoop需要的Jar包】Hadoop编程-pom.xml文件

JDK版本的要求Hadoop 2.7 以及之后的版本,需要JDK 7;Hadoop 2.6 以及之前的版本,支持JDK 6;对于Hadoop1.x.x版本,只需要引入1个jar:hadoop-core对于Hadoop2.x.x版本,需要引入4个jar:hadoop-commonhadoop-hdfshadoop-mapreduce-client-corehadoop-clientjdk.tools...

weixin_33875839的博客 1957

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 625

hadoop如何分发本地的jar文件

这个命令实际上是转化成下面的命令来运行的 在RunJar中,会读取abc.jar文件,然后尝试从manifest中提取Main-Class作为mainClass,如果manifest中没有指定,则把abc.jar之后的下一个参数当成mainClass。 接下来,RunJar会在本地创建一个临时目录(下面称为workDir,类似/tmp/hadoop-unjar...),然后把abc.jar解压

xiaomin1991222的专栏 443

局放起始电压(PDIV)与击穿电压(BDV):绝缘系统设计的核心参数 [特殊字符]

在电力设备绝缘系统设计中,**局放起始电压(Partial Discharge Inception Voltage, PDIV)和击穿电压(Breakdown Voltage, BDV)**是两个至关重要的参数。它们直接反映了绝缘材料的性能和绝缘系统的可靠性,对变压器的设计、制造和运行具有重要指导意义。本文将深入探讨这两项参数的定义、测试方法及其与绝缘设计制造的关系,帮助读者全面理解其在电力设备中的核心作用。

mubiao05的博客 2633

Altium Designer操作技巧(12)——如何进行邮票孔拼版?

【摘要】本文详细介绍了PCB设计中邮票孔拼板的全流程操作方法。首先解释了邮票孔拼板的定义、核心目的(提高贴片效率、方便生产)和适用场景(异形板、V-CUT无法实现的情况)。重点阐述了关键设计参数,包括孔径、数量、间隙等规范要求,并提供了两种具体操作方案:传统复制粘贴法和新版阵列放置法。文章通过图文详细演示了从PCB复制、邮票孔添加、板框定义到定位孔和Mark点设置的完整步骤,最后强调了对称性、非金属化孔等设计要点,以及需要与板厂确认工艺参数等注意事项。

u012526819的博客 1677

hadoop jar执行任务,报错 java.io.FileNotFoundException:/tmp/hadoop-unjarxxxx/...(no space left on device)

问题描述: 使用hadoop jar命令执行MapReduce任务,报错如下 查看大数据提交机的磁盘使用情况: df -h 发现/tmp目录空间没有用满 查看inode使用情况: df -i /tmp目录的inode已经用满了。。。 查看/tmp目录的使用情况: 发现有许多MapReduce任务提交的临时目录,可以清理掉: 清理完后,再次统计,发现inode...

u013771019的专栏 8523

QProgressBar:常用接口、样式表及自定义进度条实现

在Qt开发中,QProgressBar 是一个非常常用的控件,用于显示任务的进度。无论是文件下载、数据处理还是其他耗时操作,QProgressBar 都能直观地展示当前进度。本文将详细介绍QProgressBar 的使用方法,包括常用接口、样式表设置,并额外补充一个自定义进度条的C++实现。

u011186532的专栏 1012

hadoop jar执行报错java.io.FileNotFoundException: /tmp/hadoop-unjarxxx(No space left on device)终极解决方案

原因 MapReduce提交过程中,会把jar解压到/tmp目录下生成临时文件夹hadoop-unjarxxx,任务执行完成后,会主动删除这个临时目录hadoop-unjarxxx, 但是我们偶尔会遇到一些情况,导致hadoop任务异常结束,没有清理掉这个任务的临时目录,临时文件就会越来越多了。 可能导致/tmp磁盘空间不足或者inode索引不足导致报错,因此使用下面命令查找错误,查看使用率 df -h 查看磁盘 df -i 查看inode 解决 思路就是降低jar包大小并定时清除/tmp/hadoop

shengpli′s blog 3297

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

【Cmder】--- Windows11 配置CMD神器 (超详细 持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1万+

hadoop执行调用自己编写的jar

第1步:将导出的jar放入到Linux系统合适的位置(这里放在了hadoop下了) 第2步:进入到hadoop目录下(例如:cd /usr/local/hadoop-2.8.5) 第3步:执行调用jar的hdfs命令 这里的DailyAccessCount.jar 是调用的jar(路径)名称,access.login.csv指的是输入文件(路径)名称;/output1是输出的(路径)名称 ...

李子翔 795

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1689

Hadoop之——WordCount案例与执行本地jar包

Hadoop之——WordCount案例与执行本地jar包

雷神乐乐的博客 9939

4、海洋哺乳动物运动能量学:潜水与生存的奥秘

本文深入探讨了海洋哺乳动物在潜水与运动中的能量消耗机制,涵盖其生理反应、代谢成本、节能行为策略及测量方法。通过分析不同物种的能量利用特点,揭示了它们如何在极端水下环境中维持能量平衡,并讨论了该研究在保护生物学、生态系统动态和动物健康管理中的实际意义。文章还展望了未来多学科交叉、长期监测及应对环境变化的研究方向,为理解海洋哺乳动物的生存奥秘提供了系统性视角。

p5l2m9n4o6q的博客 116

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Hadoop集群文件分发工具file-dispatcher.sh

此工具(file-dispatcher.sh)用于分发Hadoop集群文件(常用于jar包更新或版本升级),可省去一个一个替换的麻烦,希望能给大家带来便利! 注:另外Hadoop集群配置文件分发工具(config-dispatcher.sh)见http://blog.youkuaiyun.com/rzhzhz/article/details/7056775 脚本如下:   #!/usr/bin

厚积而薄发 2734

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执行命令、下载dfs文件至本地

https://blog.youkuaiyun.com/quiet_girl/article/details/74028204 一、Eclipse中生成jar包 使用[Eclipse中使用Hadoop单机模式开发配置及简单程序示例](http://blog.youkuaiyun.com/quiet_girl/article/details/74001759) 的MaxTemperature项目的代码,代码写完之后,将其打...

yangbosos的博客 3123

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

浅谈hadoop中mapreduce的文件分发

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.youkuaiyun.com/zgc_sitech/article/details/27547483 ...

weixin_30916125的博客 249

使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执行命令、下载dfs文件至本地)

在之前一篇:Eclipse中使用Hadoop单机模式开发配置及简单程序示例,我们讲了如何在eclipse配置文件信息以及如何执行Map/Reduce程序,本篇基于这篇文章的代码总结一下使用hadoop命令行执行jar包的流程,主要包括生成jar、将本地文件上传至dfs文件系统中,执行jar包。一、Eclipse中生成jar包使用Eclipse中使用Hadoop单机模式开发配置及简单程序示例 的Max

小太阳~ 6万+

(转)hadoop jar xxxx.jar的流程

来源:http://hi.baidu.com/dtzw/blog/item/64a6f3f2dff0511eb17ec5b0.html 搞清楚 hadoop jar xxxx.jar 执行的流程: jar文件是如何分发的 JobClient(不一定是hadoop集群的节点)利用bin/hadoop脚本运行jar包,以hadoop-0.20.2-examples.jar为例子: hadoo

laiahu的专栏 3927

将idea项目打包在Hadoop集群运行 / 在Hadoop集群上运行jar包

将idea项目打包在集群运行

一枚小白的博客 6174

java打包jar文件,在hadoop中运行

在eclipse中编写完hadoop程序后,运行无错,使用eclipse自带的打包工具打包jar文件,具体步骤如下: 1、右键要打包的包或者类,export->java中的可运行jar文件Runnable JarFile,然后一直下一步,注意为了不出错,把依赖的包也打包进去,所以后面选择Package required labiries into generated jars,选择你要保存jar

mm_bit的博客 8635

IDEA配置hadoop依赖jar包(非Maven)

作者新手小白,仅为学习&交流 2020年3月26日22:12:29 开发环境 OS: Win10 Hadoop版本: hadoop-3.1.2 IDE: Intelij IDEA 2019.3.3 Hadoop Path: E:\Hadoop\Hadoop\hadoop-3.1.2\hadoop-3.1.2 Win本地安装hadoop 1.讲搭建hadoop平台时的.tar.gz文件直接解...

Juuunn的博客 7705

Linux执行hdfs上的jar包,使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执...

使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执行命令、下载dfs文件至本地)Hadoop入门配置系列博客目录一览1、Eclipse中使用Hadoop伪分布模式开发配置及简单程序示例(Linux下)2、使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执行命令、下载dfs文件至...

weixin_34493096的博客 2806
上一篇: CDH的安装和配置目录
下一篇: 私服的settings profile和mirrorof
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值