- 浏览: 109528 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zenoh:
是啊,我也纳闷,apache hadoop2.2.0的已经修复 ...
安装CDH5 hadoop2.2.0遇到的配置问题 -
Molisa:
你好,我有两个问题请教一下:1.为了密码安全,你有没有试过使用 ...
使用oozie调度sqoop从oracle导入hbase
前一阵子发现用户提交的hive query和hadoop job会导致集群的load非常高,经查看配置,发现很多用户擅自将mapred.child.java.opts设置的非常大,比如-Xmx4096m(我们默认设置是-Xmx1024m), 导致了tasktracker上内存资源耗尽,进而开始不断swap磁盘上数据,load飙升
TaskTracker在spawn一个map/reduce task jvm的时候,会根据用户JobConf里面的值设定jvm的参数,然后写入一个taskjvm.sh文件中,然后调用linux命令"bin/bash -c taskjvm.sh"来执行task,
mapred.child.java.opts就是设定jvm的参数之一,在新版本中已经标注Deprecateded,取而代之的是区分Map task和Reduce task的jvm opts,mapred.map.child.java.opts和mapred.reduce.child.java.opts(默认值为-Xmx200m)
当用户在不设该值情况下,会以最大1G jvm heap size启动task,有可能导致OutOfMemory,所以最简单的做法就是设大参数,并且由于这个值不是final,所以用户在自己的mapred-site.xml中可以覆盖默认值。但是如果很多用户都无限度设置的话,high load问题就来了。
其实在构造JVM Args的过程中,是有另外一个admin参数可以覆盖用户端设置的mapreduce.admin.map.child.java.opts, mapreduce.admin.reduce.child.java.opts
经测试,如果相同的jvm arg如果写在后面,比如"-Xmx4000m -Xmx1000m",后面的会覆盖前面的,“-Xmx1000m”会最终生效,通过这种方式,我们就可以有限度的控制heap size了
最终在mapred-site.xml中加上
构造child java opts的call stack:
不过这种方式只是限定了task的jvm heap最大限制,如果用户hive query优化不够好还是会抛出OOM,其实是把问题抛给了用户,
接下来还要和用户一起看下到底是哪些query会占用如此大memory,看看有没有进一步优化的空间
转自:http://tech.ddvip.com/2013-10/1381314271203741.html
TaskTracker在spawn一个map/reduce task jvm的时候,会根据用户JobConf里面的值设定jvm的参数,然后写入一个taskjvm.sh文件中,然后调用linux命令"bin/bash -c taskjvm.sh"来执行task,
mapred.child.java.opts就是设定jvm的参数之一,在新版本中已经标注Deprecateded,取而代之的是区分Map task和Reduce task的jvm opts,mapred.map.child.java.opts和mapred.reduce.child.java.opts(默认值为-Xmx200m)
当用户在不设该值情况下,会以最大1G jvm heap size启动task,有可能导致OutOfMemory,所以最简单的做法就是设大参数,并且由于这个值不是final,所以用户在自己的mapred-site.xml中可以覆盖默认值。但是如果很多用户都无限度设置的话,high load问题就来了。
其实在构造JVM Args的过程中,是有另外一个admin参数可以覆盖用户端设置的mapreduce.admin.map.child.java.opts, mapreduce.admin.reduce.child.java.opts
经测试,如果相同的jvm arg如果写在后面,比如"-Xmx4000m -Xmx1000m",后面的会覆盖前面的,“-Xmx1000m”会最终生效,通过这种方式,我们就可以有限度的控制heap size了
最终在mapred-site.xml中加上
<property> <name>mapreduce.admin.map.child.java.opts</name> <value>-Xmx1024m</value> </property> <property> <name>mapreduce.admin.reduce.child.java.opts</name> <value>-Xmx1536m</value> </property>
构造child java opts的call stack:
不过这种方式只是限定了task的jvm heap最大限制,如果用户hive query优化不够好还是会抛出OOM,其实是把问题抛给了用户,
接下来还要和用户一起看下到底是哪些query会占用如此大memory,看看有没有进一步优化的空间
转自:http://tech.ddvip.com/2013-10/1381314271203741.html
发表评论
-
-snn.saturn.local:8485 failed on connection exception: java.net.ConnectException
2014-05-07 15:12 02014-01-26 00:46:35,631 INFO ... -
Hadoop 归档 和HIVE 如何使用har 归档 文件
2014-05-01 23:47 1059Hadoop archive 唯一的优势可能就是将众多的小 ... -
Hadoop的JVM重用
2014-05-01 20:21 1100Hadoop中有个参数是mapred.job.reuse. ... -
Hadoop 优化总结(一)
2014-04-27 12:09 16021. 使用自定义Writable 自带的Text很好用,但 ... -
hadoop调优
2014-04-26 12:01 0硬件级别提高磁盘IO的 ... -
启动hadoop 报错:A fatal error has been detected by the Java Runtime
2014-04-25 10:10 0今天在重启hadoop集群的时候,一个节点报了下面的一个错,由 ... -
java.io.IOException: Cannot obtain block length for LocatedBlock{BP-
2014-04-25 10:07 0今天的job在执行的时候,出现了下述的异常: java. ... -
hadoop报的一个job提交的错
2014-04-24 10:56 0Diagnostics: Application a ... -
hadoop hdfs HA 启动不了ZKFC
2014-04-23 11:47 0测试环境master1 系统重做了,原来的所有数据都丢失,后来 ... -
Hadoop平台优化综述(一)
2014-04-19 18:48 01. 概述 随着企业 ... -
大数据处理分析的六大最好工具
2014-04-19 11:59 0Hadoop Hadoop 是一个能够对大量数据进行分布式处 ... -
Shuffle$ShuffleError
2014-04-06 10:10 0Error: org.apache.hadoop.mapr ... -
hadoop2.2.0 CDH 源码编译
2014-03-27 13:29 01 下载 源码 wget chd5 2 安装软件 yum ... -
hadoop参数配置优化
2014-03-13 15:12 722hadoop.tmp.dir 默认值: /tmp 说明: 尽 ... -
Hadoop为什么处理小数据量时效果不好?
2014-03-11 16:50 1173Every file, directory and bloc ... -
Hadoop : MapReduce中的Shuffle和Sort分析
2014-03-03 14:06 892MapReduce 是现今一个非常流行的分布式计算框架,它被 ... -
关于Hadoop的shuffle
2014-03-03 11:16 892我们知道每个reduce task输入的key都是按照k ... -
Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError:
2014-03-01 23:17 4284hadoop执行JOB在reduce阶段 ... -
hadoop Caused by: java.io.IOException: Filesystem closed
2014-02-25 13:46 6545今天在执行hive的时候报了下面的错: 2014-02 ... -
Error in storing RMDelegationToken with sequence number:
2014-02-20 11:05 1164今天用oozie调度hadoop任务时,发现在每次在执行时,R ...
相关推荐
2. **合理设置Map/Reduce Task数量** - **减少Map数量**:通过小文件合并或调整JVM重用次数来减少Map数量,降低资源浪费。JVM重用可以使得JVM实例在同一个Job中重复使用,通常设置为10-20次,具体数值需根据实际...
- `yarn.app.mapreduce.am.command-opts`: AM的Java选项,例如JVM堆大小。 - `mapreduce.map.memory.mb` 和 `mapreduce.reduce.memory.mb`: 分别为Map任务和Reduce任务分配的内存。 - `mapreduce.map.java.opts` 和 ...
- 启用JVM重用:设置**mapreduce.job.jvm.numtasks**,该参数指定单个JVM实例可以运行的Map或Reduce任务的数量。 - 根据作业的具体情况调整JVM重用策略。 综上所述,通过对Hive作业的各个阶段进行细致的调优,可以...
- DataNode, TaskTracker, Map 和 Reduce 的 Task JVM 在 datanode01, datanode02, datanode03 上运行 - **数据备份**: - 每个文件有三份副本 - **数据存储路径**: - HDFS 及 Map-Reduce 数据存储在 `/data/...
- **mapreduce.task.jvm.numtasks**:设置每个JVM执行的任务数量,重用JVM可以减少启动时间,但过多可能导致内存不足。 7. **Reduce侧优化** - **io.sort.factor**和**io.sort.mb**:在Reduce阶段同样适用,调整...
设置子进程的JVM参数,例如堆大小。 32. mapred.child.env 设置子进程的环境变量。 33. mapreduce.admin.user.env 定义管理员用户的环境。 34. yarn.app.mapreduce.am.log.level 定义ApplicationMaster的日志级别...
在Shuffle过程中,reduce端的缓冲区大小决定了每次可以从map端拉取的数据量。增大这个值(如通过`spark.reducer.maxSizeInFlight`参数设置)可以减少网络传输的次数,进而提高效率。默认值为48MB,可以根据实际情况...
默认未设置,用于限制reduce阶段合并map输出的内存使用。建议根据硬件资源调整,例如设置为200MB。 4. **io.sort.factor**: 默认值为10,表示排序时并行处理的流数量。可以增加此值以提高排序性能,例如设置为...
JVM重用能减少启动JVM的开销,通过设置`hive.mapred.reduce.tasks.speculative.execution`为false,可以避免不必要的任务推测执行,提高JVM利用率。 **9.8 推测执行** 虽然在某些场景下可以提高效率,但在大数据...
在启动Hadoop作业时,可以通过设置环境变量`HADOOP_HEAPSIZE`来自定义JVM的堆大小。 2. **HADOOP_OPTS**: 这个变量包含了一组特定于Hadoop的Java选项,可能包括安全、日志、调试等相关的配置。在实际运行时,这些...
2. **Task并行度**:合理设置Map和Reduce任务数量,以充分利用集群资源,避免过载或资源浪费。 3. **内存调优**:根据数据规模和计算需求调整MapReduce的内存参数,防止内存溢出。 4. **Compressio编码**:使用压缩...
- 优化Map和Reduce任务的数量。 - 合理分配内存资源。 ##### 12.7.2 确定Job基线 - 确定Job的基线配置对于后续的性能调优至关重要。基线配置应包括但不限于: - 默认的Map和Reduce任务数量。 - 默认的内存和CPU...
- **mapreduce.map.java.opts** 和 **mapreduce.reduce.java.opts**:控制Java虚拟机(JVM)的堆内存大小。 - **dfs.blocksize**:定义HDFS中的块大小,默认为128MB或256MB。对于大文件,增大块大小可以减少元数据...
3. **mapred.child.java.opts**:该配置用于设定JVM进程的最大堆内存。由于reduce任务通常需要更大的内存,因此合理设置此参数可避免内存溢出,但也不能设置得过大,否则可能增加GC开销。 4. **Input Split的大小**...
- `mapreduce.map.java.opts` 和 `mapreduce.reduce.java.opts`: 定义了Map任务和Reduce任务的JVM初始堆大小。 - `mapreduce.task.io.sort.mb` 和 `mapreduce.task.io.sort.factor`: 控制排序阶段使用的内存以及...
- **减少溢写次数**:可以通过调整`mapreduce.task.io.sort.mb`(默认100M)和`mapreduce.map.sort.spill.percent`(默认80%)来增加环形缓冲区大小和溢出阈值,从而减少溢写次数。 - **异常重试**:通过设置`...
4. **Reduce Task Execution**:Reduce任务也由C++子进程执行,它们读取经过Shuffle后的中间结果,并进行聚合处理,最终输出结果。 ##### 2.3 消息序列 在HCE框架中,为了实现Java与C++之间的交互,设计了一套消息...
- **合理设置Map和Reduce数量**。 - **设置Map、Reduce共存**。 - **规避使用Reduce**。 - **增加Reduce端并行性**。 - **增大Reduce端内存大小**。 - **IO传输**: - **采用数据压缩方法**来提高传输效率。
同时,它引入了堆外内存(Off-Heap)存储,以处理超过JVM堆大小的数据。 9. **故障恢复**: Spark Core通过检查点和血统(Lineage)来实现容错。如果Executor失败,Spark可以通过重新计算丢失的任务来恢复状态,...
TaskTracker作为工作节点,负责接收和执行JobTracker分配的任务,包括MapTask和ReduceTask。JvmManager则管理TaskTracker上的JVM实例,以优化资源利用率。 理解Hadoop源码有助于我们更深入地了解其内部工作机制,...