Hadoop其七,MapReduce的收尾,Yarn的介绍,和历史日志

目录

一、MapReduce收尾

二、Yarn介绍

三、Yarn的历史日志配置【可选项】

1、jobHistory

2、timeline(时间轴服务)--了解


一、MapReduce收尾

1、如果启动集群发现某个节点的服务没有启动,如何解决?

如果启动集群,发现某个节点比如bigdata02中的datanode没有启动,怎么办?

方案:查看日志,看错误是什么?

2、修改完成后,可以单独启动某个服务:

复制代码
hadoop-daemon.sh start namenode	
新的命令是什么? hdfs --daemon start namenode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start datanode

yarn --daemon start resourcemanger
yarn --daemon start nodemanger

3、main方法后面的 args数组有何作用?

复制代码
package com.bigdata.day12.workcount;

import java.util.Arrays;

/**
 * @Author laoyan
 * @Description TODO
 * @Date 2022/8/3 9:47
 * @Version 1.0
 */
public class Demo01 {

    public static void main(String[] args) {
        System.out.println(Arrays.toString(args));
        System.out.println(args[0]);
        System.out.println(args[1]);
    }
}

服务器上怎么办?没有idea

需要使用jar命令:

复制代码
hadoop jar wc.jar com.bigdata.day12.workcount.Demo01 /input /output

通过以上方式给args传递数据。
如果是纯java项目如何运行你的jar包?
java -jar xxxxx.jar  Main方法的全路径  Main方法的参数

4、目前学了哪些端口,分别是什么?

复制代码
3306   mysql连接的端口
22     windows连接linux,进行sftp访问的端口
9870   hdfs页面访问的端口号  http://192.168.32.128:9870
9820   hdfs的通讯端口        hdfs://192.168.32.128:9820  
       两个地方见过:java操作hdfs的时候,昨天mapreduce访问hdfs的时候
8088   yarn平台通过web访问的端口号  http://192.168.32.128:8088

二、Yarn介绍

1、理论

复制代码
    Apache YARN(Yet another Resource Negotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序。
	YARN被引入Hadoop2,最初是为了改善MapReduce的实现,但是因为具有足够的通用性,同样可以支持其他的分布式计算模式,比如Spark,Tez等计算框架。
复制代码
大数据技术大致分为四代:
1、MapReduce                (淘汰)
2、MapReduce的升级版(Tez)  (淘汰)
3、Spark(一系列的技术)  目前正在流行  运行比较快
4、Flink   正在悄悄的流行起来,代表未来(流行起来了,阿里巴巴购买的)-- 实时即未来

2、组成部分

复制代码
ResourceManager:
是在系统中的所有应用程序之间管理资源的最终权威,即管理整个集群上的所有资源分配,内部含有一个Scheduler(资源调度器)
NodeManager:
是每台机器的资源管理器,也就是单个节点的管理者,负责启动和监视容器(container)资源使用情况,并向ResourceManager及其 Scheduler报告使用情况.
container:
即集群上的可使用资源,包含cpu、内存、磁盘、网络等(虚拟机,或者Docker)
AppMaster(项目经理):
实际上是框架的特定的库,每启动一个应用程序,都会启动一个AM,它的任务是与ResourceManager协商资源,并与NodeManager一起执行和监视任务。

3、Yarn的工作流程(重点)--重要程度和mr是一样的

复制代码
1. 调用waitForCompletion方法每秒轮询作业的进度,内部封装了submit()方法,用于创建JobCommiter实例,并且调用其的submitJobInternal方法。提交成功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到控制台。

2. JobCommiter实例会向ResourceManager申请一个新应用ID,用于MapReduce作业ID。这期间JobCommiter也会进行检查输出路径的情况,以及计算输入分片。

3. 如果成功申请到ID,就会将运行作业所需要的资源(包括作业jar文件,配置文件和计算所得的输入分片元数据文件)上传到一个用ID命名的目录下的HDFS上。此时副本个数默认是10.

4. 准备工作已经做好,再通知ResourceManager调用submitApplication方法提交作业。

5. ResourceManager调用submitApplication方法后,会通知Yarn调度器(Scheduler),调度器分配一个容器,在节点管理器的管理下在容器中启动 application master进程。

6. application master的主类是MRAppMaster,其主要作用是初始化任务,并接受来自任务的进度和完成报告。

7. 然后从HDFS上接受资源,主要是split。然后为每一个split创建MapTask以及参数指定的ReduceTask,任务ID在此时分配

8. 然后Application Master会向资源管理器请求容器,首先为MapTask申请容器,然后再为ReduceTask申请容器。

9. 一旦ResourceManager中的调度器(Scheduler),为Task分配了一个特定节点上的容器,Application Master就会与NodeManager进行通信来启动容器。

10. 运行任务是由YarnChild来执行的,运行任务前,先将资源本地化(jar文件,配置文件,缓存文件)

11. 然后开始运行MapTask或ReduceTask。

12. 当收到最后一个任务已经完成的通知后,application master会把作业状态设置为success。然后Job轮询时,知道成功完成,就会通知客户端,并把统计信息输出到控制台

三、Yarn的历史日志配置【可选项】

1、jobHistory

为什么要配置日志呢?原因是因为我们的任务不一定每次都是成功的,如果失败了,需要查阅日志,发现日志有没有配置。

复制代码
我们在YARN运行MapReduce的程序的时候,任务会被分发到不同的节点,在不同的Container内去执行。如果一个程序执行结束后,我们想去查看这个程序的运行状态呢?每一个MapTask的执行细节?每一个ReduceTask的执行细节?这个时候我们是查看不到的,因此我们需要开启记录历史日志的服务。

我的日志是分散在多台电脑上的,如果任务失败了,每个节点只记录自己的那一部分,我们需要去各个节点上查阅日志,效率太低了,将这些日志聚合在一起就好了。所以我们还需要配置日志聚合服务。

复制代码
历史日志服务开启之后,Container在运行任务的过程中,会将日志记录下来,保存到当前的节点。例如: 在bigdata02节点上开启了一个Container去执行MapTask,那么此时就会在bigdata02的$HADOOP_HOME/logs/userlogs中记录下来日志。我们可以到不同的节点上去查看日志。虽然这样可以查看,但是很不方便!因此,我们一般还会开启另外的一个服务: 日志聚合。顾名思义,就是将不同节点的日志聚合到一起保存起来。

配置:

复制代码
<!-- 添加如下配置 -->

<!-- 历史任务的内部通讯地址 -->
<property>
  <name>MapReduce.jobhistory.address</name>
  <value>bigdata01:10020</value>
</property>

<!--历史任务的外部监听页面-->
<property>
  <name>MapReduce.jobhistory.webapp.address</name>
  <value>bigdata01:19888</value>
</property>

<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/installs/hadoop</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/installs/hadoop</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/installs/hadoop</value>
</property>

<!-- 添加如下配置 -->

<!-- 是否需要开启日志聚合 -->
<!-- 开启日志聚合后,将会将各个Container的日志保存在yarn.nodemanager.remote-app-log-dir的位置 -->
<!-- 默认保存在/tmp/logs -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 历史日志在HDFS保存的时间,单位是秒 -->
<!-- 默认的是-1,表示永久保存 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

<property>
    <name>yarn.log.server.url</name>
    <value>http://bigdata01:19888/jobhistory/logs</value>
</property>

将mapred-site.xml 和yarn-site.xml 分发到其他两台上。

复制代码
cd /usr/local/hadoop/etc/hadoop/
xsync.sh mapred-site.xml yarn-site.xml

重启yarn服务:

复制代码
stop-dfs.sh
start-dfs.sh
还要记得启动history服务:
mapred --daemon start historyserver
复制代码
运行一个yarn的任务,随便一个即可:

hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /home/wc.txt /home/output4

访问我的yarn平台:http://192.168.32.128:8088

会看到一个运行的任务,点击这个任务就可以查看日志了:

点完之后,发现不管用,你可以查看一下你的URL是什么?

因为windows电脑上,压根不知道bigdata01 对应的IP是多少。所以访问不了。

在Linux上我们知道bigdata01对应的IP是多少,因为我们配置了hosts文件。

此时需要修改windows上的 hosts文件。为了更加方便的修改windows上的hosts,可以使用一个工具:

SwitchHosts。

先关闭电脑上的各种杀毒软件,因为有一种病毒是专门修改hosts文件的。

右键,以管理员身份运行这个软件。否则修改不了。

修改完之后,就可以点击logs 链接了。

也可以直接修改host文件,地址在:

复制代码
C:\Windows\System32\drivers\etc

2、timeline(时间轴服务)--了解

配置日志信息。

JobHistory服务,只针对于MR应用程序,Spark,Tez等这样的服务,是无法看到日志的。

这个工具或者服务,不仅可以查看MapReduce,还可以查看Spark应用程序的日志。

复制代码
目前位置,Timeline Server有V1、V1.5、V2三种版本,其中V2的版本正在测试中,功能尚不完善,且后端依赖HBase。所以目前我们以V1.5的版本为例。

<property>
<name>yarn.timeline-service.enabled</name>
<value>true</value>
</property>

<property>
<name>yarn.resourcemanager.system-metrics-publisher.enabled</name>
<value>true</value>
</property>

<property>
<name>yarn.timeline-service.generic-application-history.enabled</name>
<value>true</value>
</property>

<property>
<name>yarn.timeline-service.hostname</name>
<value>bigdata01</value>
</property>

<property>
<name>yarn.timeline-service.bind-host</name>
<value>bigdata01</value>
</property>

<property>
<name>yarn.timeline-service.http-cross-origin.enabled</name>
<value>true</value>
</property>

<property>
<name>yarn.timeline-service.ttl-enable</name>
<value>true</value>
</property>

<!-- 保存35天 -->
<property>
<name>yarn.timeline-service.ttl-ms</name>
<value>3024000000</value>
</property>

<!-- 设置log server地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://bigdata01:8188/applicationhistory/logs</value>
</property>

将yarn-site.xml 分发到其他两台电脑上。

复制代码
重启yarn服务:
stop-yarn.sh
start-yarn.sh
// 记得启动我们的时间轴服务:
yarn --daemon start timelineserver

访问地址:http://192.168.32.128:8188

如何查看日志呢?

复制代码
记得演示一个mapreduce任务
相关推荐
ʚɞ 短腿欧尼6 分钟前
文本数据可视化
信息可视化·数据分析
@十八子德月生1 小时前
8天Python从入门到精通【itheima】-1~5
大数据·开发语言·python·学习
元6331 小时前
Hadoop集群的常用命令
大数据·hadoop
武汉格发Gofartlic3 小时前
FEKO许可证的安全与合规性
大数据·运维·安全
安特尼3 小时前
招行数字金融挑战赛数据赛道赛题一
人工智能·python·机器学习·金融·数据分析
姬激薄4 小时前
HDFS概述
大数据·hadoop·hdfs
依年南台4 小时前
克隆虚拟机组成集群
大数据·hadoop
依年南台4 小时前
搭建大数据学习的平台
大数据·学习
请你喝好果汁6416 小时前
TWASandGWAS中GBS filtering and GWAS(1)
信息可视化·数据挖掘·数据分析
张人玉6 小时前
数据可视化大屏——物流大数据服务平台(二)
大数据·信息可视化