当前位置: 首页>>Hadoop技术内幕(YARN)>> 阅读正文

Hadoop技术内幕(YARN)第8章问题讨论

Category: Hadoop技术内幕(YARN) View: 5,876 Author: Dong
, ,

  • 评论 (5)
  • 引用通告 (0)
发表评论 发起引用

  • 1楼小疯子 回复

    Post: 2013-12-11 03:58

    董老师书中第八章说道“要编写一个运行在YARN上的mapreduce(例如wordcount)仅需要实现一个ApplicationMaster组件完成作业的控制模块的功能”,那么第四章中也说到“YARN已经为mapreduce提供了一个直接可以使用的客户端(JobClient)和ApplicationMaster(MRAppMaster)”,那么是不是直接使用MRAppMaster就可以,具体如何使用?董老师能不能提供一个MRV2版的wordcount?(看完书中的介绍实在是有点蒙),谢谢!

    [回复]

    Dong 回复:

    非常好的问题,YARN已经为MapReduce提供了ApplcationMaster实现,所以无需自己实现了,MRv2可以直接运行MRv1的程序(重新编译一下),MRv2自带了很多example,包括MRv1的example,你可以直接bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /tmp/ /tmp-output 运行,网上很多介绍的例子,比如 http://www.maoxiangyi.cn/index.php/archives/528

    [回复]

    小疯子 回复:

    谢谢老师的回答。但是你在第二章中2.3.1节讲到两代Mapreduce的框架对比,第一代Mapreduce中Job提交时会将所有的Job加到JobControl中,然后执行JobControl,那么所有的Job会以线性方式执行,第二代Mapreduce中(YARN),我可以分别将我的Job通过ApplicationMaster并行的提交给YARN执行。
    问题:如何通过ApplicationMaster来并行提交Job给YARN执行,是您第四章中提到的吗?是类似于第四章中的DistributedShell吗?

    [回复]

    Dong 回复:

    第一代中的程序可以直接运行在第二代中(大部分可以),所以方法一样,应该兼容,第二代也有JobControl这个东西,跟DistributedShell没关系,这是两码事,后者是一个example

    [回复]

    小疯子 回复:

    MRV1和MRV2的不同就是在于两者的运行时环境是不一样的,MRV1由JobTracker和TaskTracker构成运行时环境,而MRV2由YARN和ApplicationMaster构成运行时环境。为了让Mapreduce能够运行在YARN上,我们只需实现一个ApplicationMaster组建即可,而hadoop2.0为我们提供了一个ApplicationMaster的实现–MRAppMaster,也就是说我们在MRV1中写的job在2.0的环境下直接提交的话,那么job就会直接运行在YARN环境下,无需再调用MRAppMaster或做其他工作???

    [回复]

    小疯子 回复:

    也就是说,MRV1中我提交多个job执行时,总是流式执行(一个job的Map和Reduce执行完才能执行另外一个job,或者一个应用程序中的所有job执行完才能去执行另外一个应用程序中的job),而在MRV2中我提交的多个job是不是并行执行(第一个job的Map可以和第二个job的Map或者Reduce同时执行?),或者为了能够让多个应用程序的job并行执行,在MRV2中我需要在原有MRV1代码的基础上要做哪些工作?

    [回复]

  • 2楼小疯子 回复

    Post: 2013-12-11 04:01

    接上面问题补充:
    我想问的是,如何使得本人之前的MRV1(新API)的代码做哪些修改能成为MRV2!

    [回复]

    Dong 回复:

    你利用MRv2的jar包重新编译一下之前的程序,会有错误提示的,按照提示修改就行,有可能没有错误哦!

    [回复]

    小疯子 回复:

    恩,我已经将原来适应hadoop-1.0.4的API的的代码改成了hadoop-2.2.0API的了,只是有少许错误!谢谢!

    [回复]

  • 3楼小疯子 回复

    Post: 2013-12-12 09:59

    老师,我估计你被我说蒙了,其实我自己都有点蒙了,关于上面的所有问题,我总结一句话就是【MRV2中我如何实现job的并行化???】

    [回复]

    Dong 回复:

    跟1.0一样,并行的运行map task,然后并行的运行reduce task。

    [回复]

    小疯子 回复:

    问题一:我所有的job都是通过JobControl提交的,如何并行运行map task和reduce task?
    问题二:
    应用程序一(包含很多job,所有job通过JobControl提交)。
    应用程序二(包含很多job,所有job通过JobControl提交)。
    我如何使得应用程序一中的job和应用程序二中的job是并行执行的?

    [回复]

    小疯子 回复:

    也就是说,如何实现每个job之间是并行的???

    [回复]

    bhxk 回复:

    Job之間的並行是否是針對資源的劃分而言的?在MRv1中使用不同的scheduler同樣能夠實現Job並行呀!

    [回复]

  • 4楼song 回复

    Post: 2014-02-27 12:09

    董老师,第8章中说当作业的AM启动后,它会启动MRClientService服务,该服务实现了MRClientProtocol协议,从而允许客户端直接通过该协议与AM通信。我想知道如何通过api获取与AM的连接?

    [回复]

  • 5楼happy 回复

    Post: 2014-04-27 10:57

    董老师您好,您在书上8.11中提到,MRv1 on YARN
    您说YARN可以直接运行MRv1的程序
    那到底hadoop2.x版提供的wordcount之类的范例程式
    是MRv1(如书上p273的图,Job tracker和Task tracker开启在NodeManager上)
    还是MRv2呢?
    有点搞糊涂了….

    [回复]

    Dong 回复:

    现在的MapReduce,已经不再运行在jobtracker和tasktracker上了,这两类服务已经剔除了。MapReduce不再需要自己的服务,而是变成了一个library,运行在yarn上。

    [回复]

    happy 回复:

    谢谢董老师解惑,jobtracker和tasktracker这两部分已不再运行我了解
    只是突然看到您273页的图有些疑惑
    所以这么说,我可以直接忽略273页那边的MRv1 on YARN的部分吗(Job tracker和Task tracker开启在NodeManager)?

    [回复]

目前还没有任何Trackbacks和Pingbacks.
发表评论