大数据开发深入MapReduce(第九篇)

165 阅读2分钟

一、MapReduce任务日志查看

想要查看MapReduce程序执行过程中产生的日志信息怎么办?

1.1、开启Yarn日志聚合功能

需要开启YARN的日志聚合功能,把散落在NodeManager节点上的日志统一收集功能,方便查看日志。修改yarn-site.xml配置,增加下面两个属性

yarn.log-aggregation-enable

yarn.log.server.url

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

最终配置信息如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASS</value>
    </property>
    <property>
        <name>yarn.application.classpath</name>
        <value>/root/software/hadoop-3.3.4/etc/hadoop:/root/software/hadoop-3.3.4/share/hadoop/common/lib/*:/root/software/hadoop-3.3.4/share/hadoop/common/*:/root/software/hadoop-3.3.4/share/hadoop/hdfs:/root/software/hadoop-3.3.4/share/hadoop/hdfs/lib/*:/root/software/hadoop-3.3.4/share/hadoop/hdfs/*:/root/software/hadoop-3.3.4/share/hadoop/mapreduce/*:/root/software/hadoop-3.3.4/share/hadoop/yarn:/root/software/hadoop-3.3.4/share/hadoop/yarn/lib/*:/root/software/hadoop-3.3.4/share/hadoop/yarn/*</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://bigdata01:19888/jobhistory/logs/</value>
    </property>
</configuration>
  1. 停止目前的hadoop

    sbin/stop-all.sh

  2. 重启目前的hadoop

    sbin/start-all.sh

  3. 查看启动的进程

    jps

  4. 启动history进程

    bin/mapred --daemon start historyserver

    这时候会启动一个JobHistoryServer进程

image-20220911174623093

重新执行:

hadoop jar hdfs-1.0-SNAPSHOT-jar-with-dependencies.jar com.strivelearn.hadoop.hdfs.wordcount.WordCountMain /hello.txt /out1

在网页客户端查看日志:

  1. http://192.168.234.100:8088/cluster

    image-20220911180105597

  2. 点击map\reduce http://192.168.234.100:19888/jobhistory/job/job_1662889481116_0001

    image-20220911180213934

  3. 日志查看

    http://192.168.234.100:19888/jobhistory/logs/bigdata01:36920/container_1662889481116_0001_01_000002/attempt_1662889481116_0001_m_000000_0/root

    image-20220911180340990

还可以使用命令的方式查看日志:

yarn logs -applicationId 任务的Id

eg:

yarn logs -applicationId application_1662889481116_0001

image-20220911180648879

二、停止Hadoop集群中的任务

如果一个mapreduce任务处理的数据量比较大的话,这个任务会执行很长时间,几十分钟甚至几个小时,但是在执行一半的时候,发现代码有问题,需要修改代码重新提交执行。之前提交的任务就没有任何意义了。因为执行的逻辑都是错的,所以想要把它进行停止掉,不然就是浪费资源。

2.1、使用yarn命令停止任务

yarn application -kill 任务id

三、MapReduce程序扩展

MapReduce任务由map阶段和reduce阶段组成的,但是reduce阶段不是必须的,那么也就意味着MapReduce程序可以只包含map阶段。

在组装job的时候设置reduce的task数目为0就可以了,并且reduce代码也不需要写了。

//禁用reduce代码
job.setNumReduceTasks(0);
3.1、查看reduce的结果
  1. hdfs dfs -ls /out1
  2. hdfs dfs -cat /out1/part-r-00000

image-20220911221535301