zoukankan      html  css  js  c++  java
  • 3 weekend110的job提交的逻辑及YARN框架的技术机制 + MR程序的几种提交运行模式

    途径1: 

    途径2:

    途径3:

    成功!


    由此,可以好好比较下,途径1和途径2 和途径3 的区别。

     

    现在,来玩玩weekend110的joba提交的逻辑之源码跟踪

    原来如此,weekend110的job提交的逻辑源码,停在这了

     

     

    hello world

    hello tom

    helllo jim

    jim is a bad boy

    hello jack

    hello baby

    baby is my nvshen

     

    hello world

    hello tom

    helllo jim

    jim is a bad boy

    hello jack

    hello baby

    baby is my nvshen

    不再一个一个放了。直接放完吧,map

     

    a       1

    baby    2

    bad     1

    boy     1

    helllo  1

    hello   4

    is      2

    jack    1

    jim     2

    my      1

    nvshen  1

    tom     1

    world

    以上是weekend110的job提交的逻辑之源代码跟踪

    接下来是yarn框架的技术机制,

    Resourcemanager和nodemanager进程一直在,

    Yarnchild进程一会在,一会不在,

    以上是weekend110的job提交的逻辑及YARN框架的技术机制

    MR程序的几种提交运行模式

    本地模型运行:

    1/在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行

          ----输入输出数据可以放在本地路径下(c:/wc/srcdata/)

          ----输入输出数据也可以放在hdfs中(hdfs://weekend110:9000/wc/srcdata)

          

    2/在linux的eclipse里面直接运行main方法,但是不要添加yarn相关的配置,也会提交给localjobrunner执行

          ----输入输出数据可以放在本地路径下(/home/hadoop/wc/srcdata/)

          ----输入输出数据也可以放在hdfs中(hdfs://weekend110:9000/wc/srcdata) 

           

    集群模式运行:

    1/将工程打成jar包,上传到服务器,然后用hadoop命令提交  hadoop jar wc.jar cn.itcast.hadoop.mr.wordcount.WCRunner

    2/在linux的eclipse中直接运行main方法,也可以提交到集群中去运行,但是,必须采取以下措施:

          ----在工程src目录下加入 mapred-site.xml  和  yarn-site.xml

          ----将工程打成jar包(wc.jar),同时在main方法中添加一个conf的配置参数 conf.set("mapreduce.job.jar","wc.jar");          

    3/在windows的eclipse中直接运行main方法,也可以提交给集群中运行,但是因为平台不兼容,需要做很多的设置修改

                       ----要在windows中存放一份hadoop的安装包(解压好的)

                       ----要将其中的lib和bin目录替换成根据你的windows版本重新编译出的文件

                       ----再要配置系统环境变量 HADOOP_HOME  和 PATH

                       ----修改YarnRunner这个类的源码

                            

     

    玄机是在Runjar,

    Runjar客户端,它持有的是跟rm通信的那个客户端,它就会往那走

    Runjar客户端,它持有的是跟本地模式通信的那个客户端,它就会提交到本地去了

    那么,它在什么情况之下,持有rm客户端,什么情况下,持有本地客户端呢?

    看源码最清楚

    配置对象,没配任何信息,默认就会创建一个跟本地模式通信的Runjar,

    MR程序的几种提交运行模式

    演示:

    2/在linux的eclipse里面直接运行main方法,但是不要添加yarn相关的配置,也会提交给localjobrunner执行

          ----输入输出数据可以放在本地路径下(/home/hadoop/wc/srcdata/)

          ----输入输出数据也可以放在hdfs中(hdfs://weekend110:9000/wc/srcdata)  

    在这里,依然还是没解决,windows是用的是jpk,这里用的是utf-8,告诫我们,平常要习惯用utf-8

    1 Common的jar包和 2 hdfs的jar包,已经加过了,

    还需,3 mapreduce的jar包 4 mapreduce下lib下的jar 和5 yarn的jar包和6 yarn下lib的jar包。

    hadoop没启,这只是在linux里的jvm运行。

     

    这说明,跑的mr的确是在本地,

    情况四:

     

     

     

         

      总结,eclipse开发,若在windows下,需要插件,一般牛人会ant编译出一个插件,挂到csdn上,卖积分。也许,这位牛人弄出来的插件在他电脑上是可以,但到别人电脑上又不可以了。所以,一般能在linux里的eclipse下开发最好不过了。这样可避免插件浪费很多时间。

  • 相关阅读:
    一次zabbix的渗透
    Tips
    IPy
    文件读取漏洞路径收集
    argparse
    代码审计之配置
    ctf之加密
    内网渗透中的反弹Shell与端口转发
    利用zip(或者phar)协议进行本地文件包含
    104. 二叉树的最大深度
  • 原文地址:https://www.cnblogs.com/zlslch/p/5895657.html
Copyright © 2011-2022 走看看