- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大讲台谈MapReduce常见的问题及解决方案
大讲台谈MapReduce常见的问题及解决方案
本文中所涉及到的问题均来自大讲台Hadoop学员的提问,下面是具体问题描述及解决方案。希望对正在学hadoop的人有所帮助。
问题1:MapReduce和Yarn是什么关系?
问题描述:课件中说Hadoop框架的核心是HDFS和MapReduce,这课程主要讲的2.2版本,2版本中不是用Yarn了吗。
我看书上和网上有些人说Yarn是MapReduce二代,改进了MapReduce一代的一些弊端。
但我看Hadoop2.2中有MapReduce也有Yarn模块,那么MapReduce和Yarn到底是什么关系?
解决方案:这问题很好,我比较认同《Hadoop技术内幕》作者董西成的看法。
首先,YARN并不是下一代
MapReduce(MRv2),下一代MapReduce与第一代MapReduce(MRv1)在编程接口、数据处理引擎(MapTask和 ReduceTask)是完全一样的, 可认为MRv2重用了MRv1的这些模块,不同的是资源管理和作业管理系统,MRv1中资源管理和作业管理均是由JobTracker实现的,集两个功能 于一身,而在MRv2中,将这两部分分开了,
其中,作业管理由ApplicationMaster实现,而资源管理由新增系统YARN完成。
另
外,由于YARN具有通用性,因此YARN也可以作为其他计算框架的资源管理系统,不仅限于MapReduce,也是其他计算框架,比如Spark、 Storm等, 通常而言,我们一般将运行在YARN上的计算框架称为“X on
YARN”,比如“MapReduce On YARN”, Spark On YARN,“Storm On YARN”等。
不知这种解释这位同学是否理解,如有异议,欢迎探讨
问题2:运行MapReduce程序,用到第三方jar包该怎么办?
问题描述:我写了一个hadoop
程序,用到了第三方jar包,我明明引用到项目里面了,放到集群上面运行,怎么总提示报错?说找不到相关的类!!!
解决方案:要想让mapreduce程序引用第三方jar文件, 可以采用如下方式:
1.通过命令行参数传递jar文件, 如-libjars等;
2.直接在conf中设置, 如conf.set(“tmpjars”,*.jar), jar文件用逗号隔开;
3.利用分布式缓存, 如DistributedCache.addArchiveToClassPath(path, job), 此处的path必须是hdfs, 即自己讲jar上传到hdfs上,
然后将路径加入到分布式缓存中;
4.第三方jar文件和自己的程序打包到一个jar文件中,
程序通过job.getJar()将获得整个文件并将其传至hdfs上. (很笨重)
5.在每台机器的$HADOOP_HOME/lib目录中加入jar文件. (不推荐)p.s. 如果通过上面方法1.或2., 需要注意Configuration问题,
需要通过getConf()函数获得, 而不要自己new一个对象.
问题3:mapreduce不能debug是什么情况?
问题描述:mapreduce不能debug是什么情况?本地程序无法调试?解决方案:首先肯定告诉你,MapReduce可以debug调试程序。
MapReduce进入Debug 运行模式需要以下几步:
第一步:选定一台调试机器,修改 mapred-site.xml
文件,添加如下配置。
lt;propertygt;
lt;namegt;mapred.child.java.optslt;/namegt;
lt;valuegt;-
agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=ylt;/valuegt;
lt;/propertygt;
第二步:关闭所有的TaskTracker,只保留上面配置的一台需要调试的 TaskTracker。
第三步:启动MapReduce Job。
第四步:右键 Hadoop 项目,选择“Debug As”——gt;“Debug Configuration”——gt;“Remote Java
Application”,添加一个新的测试,输入远程 Host
IP和监听端口,端口为8883,然后单击Apply。 第五步:调试运行
文档评论(0)