IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop运行MapReduce任务时,异常及解决方案 -> 正文阅读

[大数据]Hadoop运行MapReduce任务时,异常及解决方案

异常代码描述

刚刚开始接触Hadoop,对于MapReduce并不时特别了解,以下记录以下纠结了一天的问题及解决方案

1、执行MapReduce任务

hadoop jar wc.jar hejie.zheng.mapreduce.wordcount2.WordCountDriver /input /output

2、跳出异常 Task failed task_1643869122334_0004_m_000000

[2022-02-03 15:10:59.255]Container killed on request. Exit code is 143
[2022-02-03 15:10:59.333]Container exited with a non-zero exit code 143. 

2022-02-03 15:11:11,860 INFO mapreduce.Job: Task Id : attempt_1643869122334_0004_m_000000_2, Status : FAILED
[2022-02-03 15:11:10.394]Container [pid=4334,containerID=container_1643869122334_0004_01_000004] is running 273537536B beyond the 'VIRTUAL' memory limit. Current usage: 68.0 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1643869122334_0004_01_000004 :
	|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
	|- 4343 4334 4334 4334 (java) 543 250 2518933504 17149 /opt/module/jdk1.8.0_212/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx820m -Djava.io.tmpdir=/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/user01/appcache/application_1643869122334_0004/container_1643869122334_0004_01_000004/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/opt/module/hadoop-3.1.3/logs/userlogs/application_1643869122334_0004/container_1643869122334_0004_01_000004 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 192.168.10.102 39922 attempt_1643869122334_0004_m_000000_2 4 
	|- 4334 4332 4334 4334 (bash) 2 6 9461760 270 /bin/bash -c /opt/module/jdk1.8.0_212/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN   -Xmx820m -Djava.io.tmpdir=/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/user01/appcache/application_1643869122334_0004/container_1643869122334_0004_01_000004/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/opt/module/hadoop-3.1.3/logs/userlogs/application_1643869122334_0004/container_1643869122334_0004_01_000004 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 192.168.10.102 39922 attempt_1643869122334_0004_m_000000_2 4 1>/opt/module/hadoop-3.1.3/logs/userlogs/application_1643869122334_0004/container_1643869122334_0004_01_000004/stdout 2>/opt/module/hadoop-3.1.3/logs/userlogs/application_1643869122334_0004/container_1643869122334_0004_01_000004/stderr  

[2022-02-03 15:11:10.532]Container killed on request. Exit code is 143
[2022-02-03 15:11:10.562]Container exited with a non-zero exit code 143. 

2022-02-03 15:11:22,338 INFO mapreduce.Job:  map 100% reduce 100%
2022-02-03 15:11:23,386 INFO mapreduce.Job: Job job_1643869122334_0004 failed with state FAILED due to: Task failed task_1643869122334_0004_m_000000
Job failed as tasks failed. failedMaps:1 failedReduces:0 killedMaps:0 killedReduces: 0

2022-02-03 15:11:23,653 INFO mapreduce.Job: Counters: 13
	Job Counters 
		Failed map tasks=4
		Killed reduce tasks=1
		Launched map tasks=4
		Other local map tasks=3
		Data-local map tasks=1
		Total time spent by all maps in occupied slots (ms)=30921
		Total time spent by all reduces in occupied slots (ms)=0
		Total time spent by all map tasks (ms)=30921
		Total vcore-milliseconds taken by all map tasks=30921
		Total megabyte-milliseconds taken by all map tasks=31663104
	Map-Reduce Framework
		CPU time spent (ms)=0
		Physical memory (bytes) snapshot=0
		Virtual memory (bytes) snapshot=0

3、解决方案

先上解决方法,在描述问题原因
参考文章中的配置。
首先,跳转到hadoop-3.1.3\etc\hadoop 目录下,执行:

vim mapred-site.xml

添加如下代码,配置运行时内存(如文件内容比较大,可以根据实践情况配置)

<property>
    <name>mapreduce.map.memory.mb</name>
    <value>1024</value>
    <description>修改每个Map task容器申请的内存大小;默认1G</description>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx64m</value>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>1024</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx64m</value>
    <description>一般设置为mapreduce.map.memory.mb的85%左右</description>
</property>
<property>
    <name>mapreduce.task.io.sort.mb</name>
    <value>4</value>


4、刨根问底

其实可以通过http://hadoop103:8088/cluster,看出当前任务的history,查看具体的问题出现在哪里:
在这里插入图片描述
可以看到MapReduce申请了2.4GB的内存空间,超过了默认的虚拟内存2.1GB,内存不够导致异常。
修改mapred-site.xml内存大小即可。
(1)mapreduce.map.memory.mb 默认1G,map执行时分配的内存

(2)mapreduce.reduce.memory.mb 默认1G,reduce执行时分配的内存

(3)yarn.app.mapreduce.am.resource.mb 默认1.5G, MR AppMaster分配的内存
jvm参数默认值
有下面的一些jvm的参数,他们的默认值一般比较容易忽略,记录下来,方便查询
-Xms 默认情况下堆内存的64分之一,最小1M
-Xmx 默认情况下堆内存的4分之一或1G
-Xmn 默认情况下堆内存的64分之一
-XX:NewRatio 默认为2
-XX:SurvivorRatio 默认为8

o -Xms:初始堆大小,如4096M
o -Xmx:最大堆大小,如4096M,如果xms>xmx, 那默认空余堆内存小于40%会触发调整到xmx,但是MinheapFreeRation可以调整
o -XX:NewSize=n:设置年轻代大小,如1024
o -Xmn1024M 设置年轻代大小为1024M
o -XX:NewRatio=n:设置年老代和年轻代的比值。建议值为3至5,如4,表示年老代:年轻代=4:1,年轻代占整个年轻代年老代和的1/5
o -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。建议值3-5。注意Survivor区有两个。如8,表示2*Survivor:Eden=2:8,一个Survivor区占整个年轻代的1/10

-Xmx64M:最大堆空间64MB

深入了解内存设置可参考Yarn下Mapreduce的内存参数理解&xml参数配置

以上参数可以根据实践需要进行调整以达到最优效果。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:06:05  更:2022-02-04 11:08:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:45:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码