• 大数据之Hadoop_Yarn的基本介绍,及入门程序的书写


    Yarn的基本介绍

    Yarn:分布式资源调度平台和任务交互平台.
    主要负责在hadoop集群中管理各节点的cpu.内存.磁盘(IO),网络的使用情况,实时监控集群中每台机器的运算资源,合理分配资源,及任务进度的监控,任务再分配

    Yarn与hdfs相似,也分主从结点:
    主节点:resourcemanage
    从节点:nodemanage

    安装Yarn

    3.进入到hadoop的etc下修改yarn-site.xml配置文件,将以下配置信息加入进去

    
    
    
    
    
    yarn.resourcemanager.hostname
    linux01
    
    
    
    
    yarn.nodemanager.aux-services
    mapreduce_shuffle
    
    
    
    
    yarn.nodemanager.resource.memory-mb
    2048
    
    
    
    yarn.nodemanager.resource.cpu-vcores
    4
    
    
    
    
      yarn.nodemanager.vmem-check-enabled
      false
    
    
     
    
      yarn.nodemanager.vmem-pmem-ratio
      2.1
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    4.进入到hadoop的etc下修改mapred-site.xml配置文件,将以下配置信息加入进去

    
    
      yarn.app.mapreduce.am.env
      HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1
    
    
      mapreduce.map.env
      HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1
    
    
      mapreduce.reduce.env
      HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1
    
    
    
    以上配置信息运行hive时会默认到本地运行,
    
    或者配以下信息,会默认到yarn上运行
    
    
    
    mapreduce.application.classpath
    /opt/apps/hadoop-3.2.1/share/hadoop/mapreduce/*,/opt/apps/hadoop-3.2.1/share/hadoop/mapreduce/lib/*
    
    
        mapreduce.framework.name
        yarn
    
    
        yarn.app.mapreduce.am.env
        HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1
    
    
        mapreduce.map.env
        HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1
    
    
        mapreduce.reduce.env
        HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    5.去到hadoop目录下的sbin目录,修改里面start-yarn.sh和stop-yarn.sh,将以下四句话放到第二行

    YARN_RESOURCEMANAGER_USER=root 
    HADOOP_SECURE_DN_USER=yarn 
    YARN_NODEMANAGER_USER=root
    
    • 1
    • 2
    • 3

    6.全部配置完成后,在修改 yarn-site.xml 的目录下,输入scp -r yarn-site.xml linux02:$PWD
    将配置信息分发到各个节点,即可开始启动yarn集群

    一键启动

    在配置过hadoop环境变量的设备上输入start-yarn.sh即可一键启动yarn,stop-yarn.sh一键停止
    ******start-all.sh可以一键启动hdfs和yarn,stop-all.sh一键停止

    启动后,可在浏览器上输入linux01:8088进入可视化的yarn网页页面

    入门程序的书写

    要在yarn上执行MR代码,可以选择在windows端和Linux端两个地方执行

    首先无论是在windows端还是Linux端的map端程序和reduce端程序都是相同的,区别在于main方法中设置的参数不同.

    Linux端:

    mian方法中按如下书写(配置文件按以上两个配置好,可以直接不用在mian方法中额外配置参数即在在Linux中运行),然后将程序打成jar包,并修改jar的名字为:demo.jar,然后上传到Linux系统中,在jar包的路径下输入:hadoop jar jar包名 mian方法类的全类名
    hadoop jar demo.jar com.hdp.yarn.WordTest 回车
    程序如正常执行,可在linux01:8088中查看执行进度,点击RUNNING可看到正在执行的程序,点击FINISHED可看到执行成功的程序,执行成功后,可在输出路径中查询执行结果.
    注意事项:每次修改程序后,都要重新生成jar包重新传入到Linux中

     public static void main(String[] args) throws Exception {dianj
            //获取conf配置对象
            Configuration conf = new Configuration();
    
            //获取执行任务的工作类,传入conf参数,和工作名字
            Job job = Job.getInstance(conf, "w");
    
            //设置任务数量
            job.setNumReduceTasks(1);
            //设置Map类
            job.setMapperClass(WordMap.class);
            //设置Reducer类
            job.setReducerClass(WordReduce.class);
            //设置Map类输出的key
            job.setMapOutputKeyClass(Text.class);
            //设置Map类输出的value
            job.setMapOutputValueClass(IntWritable.class);
            //设置Reducer类输出的key
            job.setOutputKeyClass(Text.class);
            //设置Reducer类输出的value
            job.setOutputValueClass(IntWritable.class);
            //设置读取的路径
            FileInputFormat.setInputPaths(job,new Path("/data/input/"));
            //设置写出的路径
            FileOutputFormat.setOutputPath(job,new Path("/data/output4/"));
    
            //任务执行完的标记
            boolean b = job.waitForCompletion(true);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    Windows端

    首先Windows端需要先将上面的两个配置文件复制粘贴到Windows的IDEA中,然后Windows端相对与Linux端需要在mian方法中多配置四个参数(以下四个参数也可以写入到配置文件中):
    //设置当前程序操作HDP的用户名(w1)
    System.setProperty(“HADOOP_USER_NAME”, “root”);

    // 默认的文件系统(w2)
    conf.set(“fs.defaultFS”, “hdfs://linux01:8020”);

    //设置MapReduce程序运行在windows上的跨平台参数(w3)
    conf.set(“mapreduce.app-submission.cross-platform”, “true”);

    //设置本地的jar包的路径(w4)
    job.setJar(“C:UsersWoBoDesktopdemo.jar”);
    job.setJarByClass(com.hdp.yarn.WordTest.class);

    注意:由于配置文件中设置了运行模式由local–>yarn,所有当你要在本地执行本地的MR程序时,需要将这两个配置文件删除后,再运行,否则会报找不到文件路径的错误

     public static void main(String[] args) throws Exception {
            //设置当前程序操作HDP的用户名(w1)
            System.setProperty("HADOOP_USER_NAME", "root");
            //获取conf配置对象
            Configuration conf = new Configuration();
            // 默认的文件系统(w2)
            conf.set("fs.defaultFS", "hdfs://linux01:8020");
            //设置MapReduce程序运行在windows上的跨平台参数(w3)
            conf.set("mapreduce.app-submission.cross-platform", "true");
            //获取执行任务的工作类,传入conf参数,和工作名字
            Job job = Job.getInstance(conf, "w");
            //设置本地的jar包的路径(w4)
            job.setJar("C:\Users\WoBo\Desktop\demo.jar");
            job.setJarByClass(com.hdp.yarn.WordTest.class);
    
            //设置任务数量
            job.setNumReduceTasks(1);
            //设置Map类
            job.setMapperClass(WordMap.class);
            //设置Reducer类
            job.setReducerClass(WordReduce.class);
            //设置Map类输出的key
            job.setMapOutputKeyClass(Text.class);
            //设置Map类输出的value
            job.setMapOutputValueClass(IntWritable.class);
            //设置Reducer类输出的key
            job.setOutputKeyClass(Text.class);
            //设置Reducer类输出的value
            job.setOutputValueClass(IntWritable.class);
            //设置读取的路径
            FileInputFormat.setInputPaths(job,new Path("/data/input/"));
            //设置写出的路径
            FileOutputFormat.setOutputPath(job,new Path("/data/output6/"));
    
            //任务执行完的标记
            boolean b = job.waitForCompletion(true);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    C语言——有一篇文章,共有 3 行文字,每行有 80 个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数
    Docker 入门版
    Hudi源码 | Insert源码分析总结(二)(WorkloadProfile)
    Q&A特辑 | 这场直播解决了我对于电商风控的大部分疑问
    装配体的模态分析-SOLIDWORKS 2024新功能
    C语言学习推荐---小游戏
    atguigu8 集群
    Flink部署——命令行界面
    基于聚类线性回归的新型预测方法(Python代码实现)
    第一章:随机过程预备知识
  • 原文地址:https://blog.csdn.net/m0_67390963/article/details/126565622