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

Yarn的基本介绍

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

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

安装Yarn

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

<configuration>

<!-- Site specific YARN configuration properties -->
<!--  resource,manager主节点所在机器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux01</value>
</property>

<!--  为mr程序提供shuffle服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!--  一台NodeManager的总可用内存资源 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<!--  一台NodeManager的总可用(逻辑)cpu核数 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>

<!--  是否检查容器的虚拟内存使用超标情况 -->
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

<!--  容器的虚拟内存使用上限:与物理内存的比率 --> 
<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>2.1</value>
</property>

</configuration>

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

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

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

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

<configuration>
<property>
<name>mapreduce.application.classpath</name>
<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.name</name>
    <value>yarn</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.2.1</value>
</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: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);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值