一、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>
-
停止目前的hadoop
sbin/stop-all.sh
-
重启目前的hadoop
sbin/start-all.sh
-
查看启动的进程
jps
-
启动history进程
bin/mapred --daemon start historyserver
这时候会启动一个JobHistoryServer进程
重新执行:
hadoop jar hdfs-1.0-SNAPSHOT-jar-with-dependencies.jar com.strivelearn.hadoop.hdfs.wordcount.WordCountMain /hello.txt /out1
在网页客户端查看日志:
-
http://192.168.234.100:8088/cluster
-
点击map\reduce http://192.168.234.100:19888/jobhistory/job/job_1662889481116_0001
-
日志查看
还可以使用命令的方式查看日志:
yarn logs -applicationId 任务的Id
eg:
yarn logs -applicationId application_1662889481116_0001
二、停止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的结果
- hdfs dfs -ls /out1
- hdfs dfs -cat /out1/part-r-00000