有四种处理方法:
1. 把要依赖的包部署到每台task tracker上面
这个方法最简单,但是要没指谨部署到每台task tracker,而且可能引起包污染的问题。比如应用A和应用B都用到同一个libray,但是版本不同,就会出现冲突的问题。
2. 把依赖的包和直接合并到mapreduce job的包
这枯基个方法的问题是合逗埋并后的包可能非常大,也不利于的包的升级
3. 使用DistributedCache
这个方法就是先把这些包上传到HDFS,可以在程序启动的时候做一次。然后在submit job的时候把hdfs path加到classpath里面。
示例:
$ bin/hadoop fs -copyFromLocal ib/protobuf-java-2.0.3.jar /myapp/protobuf-java-2.0.3.jar
//Setup the application's JobConf:
JobConf job = new JobConf()
DistributedCache.addFileToClassPath(new Path("/myapp/protobuf-java-2.0.3.jar"), job)
4,还有一种情况是扩展包特别多的情况下用3就不爽了,参考一下:
One of the disadvantages of setting up a Hadoop development environment in Eclipse is that I have been dependent on Eclipse to take care of job submission for me and so I had never worried about doing it by hand. I have been developing mostly on a single node cluster (i.e my laptop) which meant I never had the need to submit a job to an actual cluster, a remote cluster in this case. Also, the first MapReduce programs I have written and run on the cluster (more to follow) were not dependent on third party jars. However, the program I am working on depends on a third-party xml parser which in turn depends on another jar.
As it turns out, I had to specify 3 external jars everytime I submit a job. I knew there was a -libjars option that you could use as I had seen it somewhere (including the hadoop help when you don’t specify all arguments for a command) but I did not pay attention since I did not need it then. Googling around, I found a mention of copying the jars to the lib folder of the Hadoop installation. It seemed a good solution untill you think about a multi-node cluster which means you have to copy the libraries to every node. Also, what if you do not have complete control of the clusters. Will you have write permissions to lib folder.
Luckily, I bumped into a solution suggested Doug Cutting as an answer to someone who had a similar predicament. The solution was to create a “lib” folder in your project and copy all the external jars into this folder. According to Doug, Hadoop will look for third-party jars in this folder. It works great!
《Hadoop权威指南》中也有关于jar打包的处理措施,查找之
【任何非独立的JAR文件都必须打包到JAR文件的lib目录中。(这与Java的web application archive或WAR文件类似,不同的是,后者的JAR文件放在WEB-INF/lib子目录下的WAR文件中)】
文章知识点与官方知识档案匹配
Java技能树首页概览
86676 人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
hadoop eclipse mapreduce下开发所有需要用到的JAR包
hadoop eclipse 下进行mapreduce开发所有需要用到的JAR包
开发mr程序必须的jar包(5个)
mr程序必要的jar包
继续访问
(转)多个mapreduce工作相互依赖处理方法完整实例(JobControl)
多个mapreduce工作相互依赖处理方法完整实例(JobControl) 原文地址:http://mntms.iteye.com/blog/2096456?utm_source=tuicool&utm_medium=referral 处理复杂的要求的时候,有时一个mapreduce程序时完成不了的,往往需要多个mapreduce程序,这个时候就要牵扯到各个任务之间的依赖关系,...
继续访问
mapreduce运行过程中依赖第三方jar的解决办法
楼主是一个hadoop初学者,本着helloword的精神来写mapreduce,将一个表的数据写到另一个表。其中踩过的坑啊......为了不踩同样的坑,楼主将其中的问题及解决办法记录下来。 以下是楼主的代码: package handlerimport mapper.DBInputMapperimport org.apache.hadoop.conf.Configuration...
继续访问
mapreduce的maven依赖以及map过程的join
maven依赖: <!--hadoop--><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.2.0</version></dependency&g
继续访问
总结hadoop mapreduce job添加第三方依赖的方法
最近在开发mapreduce程序,输入有hdfs、hbase形式,输出有hdfs、mysql等形式。碰到了如何添加第三方依赖jar的问题,在网上查了很多资料,记录下来,免得再走弯路。 下面所有方法基于hadoop-1.0.1版本实现,其它版本可能略有不同。 总结了一下,总共有五种方法: [list] 1、制作一个超级jar包,包含你的classes和所有依赖的第三方classes 2...
继续访问
使用JobControl管理mapreduce多job依赖
当MapReduce中作业不止一个,如果管理这些作业按照顺序执行,主要考虑是否有个线性的作业链或有向无环图(DAG) 对于线性链表最简单的就是一个接一个的运行作业,对于比线性链表更复杂的结构,有相关的类库可以帮助你合理安排工作流,最简单的就是org.apache.hadoop.mapred.jobcontrol包中的JobControl类,JobControl实例代表一个作业的运行图,可以加入作
继续访问
MapReduce的maven依赖
2019独角兽企业重金招聘Python工程师标准>>>...
继续访问
MapReduce在Map和Reduce过程添加依赖包办法
MapReduce在map和reduce阶段添加依赖包办法 通常在MapReduce编程过程,大部分都是使用Hadoop jar的方式运行MapReduce程序,但是在开发map或reduce阶段中会需要引入外部的包,Hadoop集群环境并没有这些依赖包。 前言 比如Reduce数据写入Oracle需要添加Oracle的Driver依赖,还有写入Orc文件等需要orc-mapreduce、o...
继续访问
热门推荐 文件的读写基本 *** 作
一、文件是计算机中数据持久化存储的表现形式 读写文件标准 *** 作格式1: 1、打开文件:file1 = open('文件名','读写模式') 2、 *** 作文件 3、关闭文件:file1.close() 文件 *** 作完毕后必须关闭,否则长期保持对文件的连接状态,造成内存溢出的现象发生 读写文件 *** 作格式2: # 1、打开文件 file1 = open('demo.txt','w') # 2、 *** 作文件 file1.write('hello world') # 3、关闭文件 file1.close() 1、打开文件:wi
继续访问
Hadoop之mapred
Hadoop之Mapred 1.1 Mapred的大致流程 1.2Mapred的详细流程 文件File:文件要存储在HDFS中,每个文件切分成多个一定大小(默认64M)的Block(默认3个备份)存储在多个节点(DataNode)上。文件数据内容:We are studying at school.\n We are studying at school.\n… 输入和拆分:不属于map和reduce的主要过程,但属于整个计算框架消耗时间的一部分,该部分会为正式的map过程准备数据。 (split)
继续访问
MapReduce程序依赖的jar包
难得想写个mapreduce程序,发现已经不记得需要添加那些jar包了,网上找了一会也没发现准确的答案。幸好对hadoop体系结构略知一二,迅速试出了写mapreduce程序需要的三个jar包。 不多不少,3个包足矣……贴出来免得其朋友再走弯路 (请忽视包的版本不一致问题,是我从其他项目中东拼西凑过来的)
继续访问
多个mapreduce工作相互依赖处理方法完整实例
package org.mahao.mr.iplocationimport java.io.IOExceptionimport org.apache.hadoop.fs.Pathimport org.apache.hadoop.io.IntWritableimport org.apache.hadoop.io.Textimport org.apache
继续访问
IDEA开发hadoop mapreduce 引入 Maven 依赖
<!-- hdfs程序需要引入依赖:--><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.2</version>...
继续访问
Hadoop-MapReduce入门
1.mapreduce定义和优缺点? MapReduce定义: 是一个分布式运算程序的编程框架,是用户开发”基于hadoop的数据分析应用”的核心框架。 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并运行在hadoop集群上 优点: 1、易于编程 它简单实现一些接口,就可以完成一个分布式程序,这个分布式可以分布到大量廉价的pc机器上运行 2、良好的扩展性 ...
继续访问
eclipse编写MapReduce程序依赖的JAR包
吐槽一下: 小编之前编写MR程序都是把hadoop解压之后的所有文件全部BuildPath进去的,近期发现这样不行,不能长久做,如果要把程序打包成jar文件在终端运行的话,是不是会太..... 所以小编就一顿尝试下,先是尝试安装maven,可是发现在Ubuntu的eclipse整了好久也没OK,就放弃了 如需转载:请注明出处,说实话过程很...
继续访问
最新发布 map reduce 设置第三方依赖包
当运行 hadoop jar 运行任务时,如果系统有设置 hadoop_classpath,会将 hadoop_classpath 变量赋值给 classpath,所以只能通过 hadoop_classpath 来设置第三方依赖包。否则会出现如下异常: Caused by: java.lang.ClassNotFoundException 如果用户依赖 和 hadoop 自带依赖,都有某个 jar,但是版本不同,可能会导致依赖冲突,可通过如下设置决定是先加载用户依赖,还是 hadoop 自带依赖:
继续访问
cdh环境变量_cdh版本的hadoop安装及配置(伪分布式模式) MapReduce配置 yarn配置
安装hadoop需要jdk依赖,我这里是用jdk8jdk版本:jdk1.8.0_151hadoop版本:hadoop-2.5.0-cdh5.3.6hadoop下载地址:链接:https://pan.baidu.com/s/1qZNeVFm 密码:cilnjdk下载地址:链接:https://pan.baidu.com/s/1qZLddl6 密码:c9w3一切准备好以后,开始安装1、上传hadoop...
继续访问
hadoop mapreduce依赖第三方jar的处理方式
有兴趣可以了解下这款国内人气很旺的JAVA代码生成器基于拖拽,不用写复杂的模板,支持多种数据库,适配wap,管理后台各种功能全有 免费开源 地址:https://blog.csdn.net/adyuebanwan/article/details/83006405 或者 http://www.magicalcoder.com ====================================...
继续访问
【坑死个人的网上复制黏贴的解决方法】hadoop native本地依赖库问题解决!
rt,网上的大部分的分享的解决方法的经验确实能让很多人搞定,但总是有些人复制黏贴别人的解决方法,也不知道自己是否复现了问题以及解决,反正我能看见的全都是相关问题关键词完全一样,百度出来的。大家都可以试试,有没有这种体会,尤其有在CSDN上的。 而在这个刨坑了hadoop native本地安装库上,我的天,要么去在log4j日志提醒当中设置下个显示权限,不让看,要么就是去编译下库,我只是个初学者啊...
继续访问
mapreduce
hadoop
permissions
写评论
评论
收藏
点赞
踩
分享
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)