zoukankan      html  css  js  c++  java
  • Mapreduce

    1      环境搭建

    mapreduce作为分布式计算模块,yarn作为作业调度和资源管理模块,区别在于:

    1.   mapreduce是一种编程模型,可以理解为一个jar包
    2.   yarn相当于启动运行mapreduce作业容器的进程
    3.  老版本中的mapreduce和yarn是整合在一起的
    4.   mapreduce配置可以在提交作业时指定,而yarn配置必须要在配置文件修改生效。

    1.1     配置yarn-env.sh

    [centos@hadoop01 ~]$ tail -1 /soft/hadoop-2.7.3/etc/hadoop/yarn-env.sh
    export JAVA_HOME=/soft/jdk1.8.0_131
    

      

    1.2    新建mapred-site.xml

    清空文件内容并粘贴以下内容
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <!--  指定资源调度框架,可选项为local(本地模式)、classic(mr一代)、yarn(mr二代) -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    <!-- 指定作业历史管理器的rpc地址和端口 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>hadoop02:10020</value>
        </property>
    <!-- 指定作业历史管理器的web地址和端口 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hadoop02:19888</value>
        </property>
    </configuration>
    

      

    1.3     配置yarn-site.xml

    清空文件内容并粘贴以下内容
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop02</value>
        </property>
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>hadoop02:8032</value>
        </property>
        <property>
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>hadoop02:8030</value>
        </property>
        <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>hadoop02:8031</value>
        </property>
        <property>
            <name>yarn.resourcemanager.admin.address</name>
            <value>hadoop02:8033</value>
        </property>
        <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>hadoop02:8088</value>
        </property>
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
    </configuration>
    

      

    1.4     启动hdfs(hadoop01)

    [centos@hadoop01 ~]$ start-dfs.sh
    

      

    1.5    配置节点的ssh免密登陆(hadoop02)

    [centos@hadoop02 ~]$ ssh-keygen -t rsa
    [centos@hadoop02 ~]$ ssh-copy-id hadoop01
    [centos@hadoop02 ~]$ ssh-copy-id hadoop02
    [centos@hadoop02 ~]$ ssh-copy-id hadoop03

    1.6启动jobhistory(hadoop02)

    #此进程记录了mapreduce的运行历史信息 
    [centos@hadoop02 ~]$ mr-jobhistory-daemon.sh start historyserver
    

      

    1.7    启动yarn(hadoop02)

    [centos@hadoop02 ~]$ start-yarn.sh 
    

      

     

    2    mapreduce原理

    2.1     wordcount运行

      将/soft/hadoop-2.7.3/share/hadoop/mapreduce/目录下的hadoop-mapreduce-examples-2.7.3.jar拷贝到当前目录
      创建英文文档1.txt
      将1.txt传到hdfs根目录
      运行jar命令hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /1.txt /out
    

      

    注意:前面三个参数是指定运行的jar,第四个参数是输入路径,第五个是输出路径且输出路径不能存在,若存在则报错  在web界面上输入ip:8088端口,则可以看到mapreduce的执行状态

     小游戏:

    运行用户画像程序

    1、将userdraw文件夹put到hdfs
    	hdfs dfs -put userdraw /    将userdraw整个目录上传至hdfs的根下
    	
    2、进入userdraw目录
    	hadoop jar myhadoop.jar com.oldboy.hadoop.userdraw.UserDrawApp /userdraw/data /userdraw/out /userdraw/out2
    

      

     

     

     

    能够通过用户的请求代码比如10005分析出男女的占比,从而分析用这个软件的大概是男性还是女性。

    总结:

    JobHistoryServer
    =====================================
     在hadoop中,有一个进程是需要单独启动的,但是这个进程对于mapreduce有非常大的辅助作用
     mr-jobhistory-daemon.sh start historyserver
     
     可以在job运行之后,查看作业运行情况,方便作业错误排查
     
    认清Mapreudce和Yarn的区别
    ====================================
     map ===> reduce    //构成第一个job  ===> 运行在容器中
     map ===> reduce    //构成第二个job  ===>
     
     Mapreduce中分为mapTask和reduceTask
     这两种Task是在YarnChild容器中运行的
     YarnChild是由Yarn框架中的nodemanager生成的
     
     
     mapreduce是一种编程模型,可以理解为一个jar包
     yarn相当于启动运行mapreduce作业容器的进程
     
     MRAppMaster     //是容器,负责?
     
     YarnChild     //是容器,负责?
    <property>
     <name>yarn.scheduler.minimum-allocation-mb</name>
     <value>1024</value>
     <description>
      resourcemanager启动的container所能分配的最小内存,低于此值会抛出异常
     </description>
      </property>
      <property>
     <name>yarn.scheduler.maximum-allocation-mb</name>
     <value>4096</value>
     <description> 
      resourcemanager启动的container所能分配的最大内存,高于此值会抛出异常
     </description>
      </property>
      <property>
     <name>yarn.scheduler.minimum-allocation-vcores</name>
     <value>1</value>
     <description> 
      resourcemanager启动的container所能分配的最小cpu内核,低于此值会抛出异常
     </description>
      </property>
      <property>
      <name>yarn.scheduler.maximum-allocation-vcores</name>
     <value>4</value>
     <description> 
      resourcemanager启动的container所能分配的最大cpu内核,高于此值会抛出异常
     </description>
      </property>
      <property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>4096</value>
     <description> container能分配的最大物理内存 </description>
      </property>
    

      

     

      

  • 相关阅读:
    Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
    库管理系统-- 后台管理开源啦,源码大放送
    .NET Core R2
    Linux gdb调试
    webpack React+ES6
    绿卡排队
    ABP分层设计
    vscode编写插件
    控制台程序的参数解析类库 CommandLine
    Net Core MVC6 RC2 启动过程分析
  • 原文地址:https://www.cnblogs.com/nshgo/p/11062059.html
Copyright © 2011-2022 走看看