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

Yarn的基本介绍

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

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

安装Yarn

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

<configuration>



<property>
<name>yarn.resourcemanager.hostnamename>
<value>linux01value>
property>


<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>


<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>2048value>
property>

<property>
<name>yarn.nodemanager.resource.cpu-vcoresname>
<value>4value>
property>


<property>
  <name>yarn.nodemanager.vmem-check-enabledname>
  <value>falsevalue>
property>

 
<property>
  <name>yarn.nodemanager.vmem-pmem-rationame>
  <value>2.1value>
property>

configuration>

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


<configuration>
<property>
  <name>yarn.app.mapreduce.am.envname>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1value>
property>
<property>
  <name>mapreduce.map.envname>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1value>
property>
<property>
  <name>mapreduce.reduce.envname>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1value>
property>
configuration>

以上配置信息运行hive时会默认到本地运行,

或者配以下信息,会默认到yarn上运行

<configuration>
<property>
<name>mapreduce.application.classpathname>
<value>/opt/apps/hadoop-3.2.1/share/hadoop/mapreduce/*,/opt/apps/hadoop-3.2.1/share/hadoop/mapreduce/lib/*value>
property>
<property>
    <name>mapreduce.framework.namename>
    <value>yarnvalue>
property>
<property>
    <name>yarn.app.mapreduce.am.envname>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1value>
property>
<property>
    <name>mapreduce.map.envname>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1value>
property>
<property>
    <name>mapreduce.reduce.envname>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1value>
property>
configuration>

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

YARN_RESOURCEMANAGER_USER=root 
HADOOP_SECURE_DN_USER=yarn 
YARN_NODEMANAGER_USER=root

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);
    }

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:\Users\WoBo\Desktop\demo.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);
    }

你可能感兴趣的:(hadoop,hadoop)