`

Hadoop Map&Reduce个数优化设置以及JVM重用

 
阅读更多

 

       Hadoop与JVM重用对应的参数是mapred.job.reuse.jvm.num.tasks,默认是1,表示一个JVM上最多可以顺序执行的task数目(属于同一个Job)是1。也就是说一个task启一个JVM。

 


       比如在集群中配置每个slave节点最多同时运行16个map和2个reduce。那么在map阶段,slave节点会启动最多16个JVM用于map。如下:

 

 

dm@slave01:/usr/local/hadoop/conf$ jps

4883 Child

4924 Child

4680 Child

4622 Child

4743 Child

4838 Child

4719 Child

4650 Child

4649 Child

5299 Jps

32296 TaskTracker

4663 Child

4767 Child

4897 Child

4794 Child

4878 Child

4698 Child

4633 Child

32049 DataNode

 

 

 

dm@slave01:/usr/local/hadoop/conf$ ps -e | grep java

12597 ?        00:00:02 java

12624 ?        00:00:02 java

12646 ?        00:00:02 java

12661 ?        00:00:02 java

12695 ?        00:00:01 java

12707 ?        00:00:02 java

12710 ?        00:00:02 java

12715 ?        00:00:02 java

12741 ?        00:00:02 java

12787 ?        00:00:01 java

12818 ?        00:00:01 java

12823 ?        00:00:02 java

12831 ?        00:00:01 java

12870 ?        00:00:01 java

12895 ?        00:00:01 java

12922 ?        00:00:01 java

32049 ?        00:00:38 java

32296 ?        00:00:14 java

 

      其中前两个是固定的进程。

 

       为每个task启动一个新的JVM将耗时1秒左右,对于运行时间较长(比如1分钟以上)的job影响不大,但如果都是时间很短的task,那么频繁启停JVM会有开销。


       如果我们想使用JVM重用技术来提高性能,那么可以将mapred.job.reuse.jvm.num.tasks设置成大于1的数。这表示属于同一job的顺序执行的task可以共享一个JVM,也就是说第二轮的map可以重用前一轮的JVM,而不是第一轮结束后关闭JVM,第二轮再启动新的JVM。


       那么最多一个JVM能顺序执行多少个task才关闭呢?这个值就是mapred.job.reuse.jvm.num.tasks。如果设置成-1,那么只要是同一个job的task(无所谓多少个),都可以按顺序在一个JVM上连续执行。


       如果task属于不同的job,那么JVM重用机制无效,不同job的task需要不同的JVM来运行。


       JVM重用技术不是指同一Job的两个或两个以上的task可以同时运行于同一JVM上,而是排队按顺序执行。

       一个tasktracker最多可以同时运行的task数目由mapred.tasktracker.map.tasks.maximummapred.tasktracker.reduce.tasks.maximum

决定,并且这两个参数在mapred-site.xml中设置。其他方法,如在JobClient端通过命令行-Dmapred.tasktracker.map.tasks.maximum=number或者conf.set("mapred.tasktracker.map.tasks.maximum","number")设置都是无效的。

 

mapred.tasktracker.map.tasks.maximummapred.tasktracker.reduce.tasks.maximum的设置可参考:

 

Genie13的Hadoop 关于最大map reducer数目

 

 

 

 

0
0
分享到:
评论

相关推荐

    Hadoop-MindMap 技术全解

    此外,跳过环记录、JVM重用等优化技术也被提及,旨在提高资源利用率和处理效率。任务执行环境包括了子主题1和子主题2,虽然在给出的内容中没有具体说明,但可以推测涉及任务调度、资源管理等高级特性。 Hadoop I/O...

    hadoop作业调优参数整理及原理

    - **mapred.map.tasks**和**mapred.reduce.tasks**:这两个参数分别用于设置Mapper和Reducer的数量。适当调整可以平衡集群资源的使用,提高作业并行度。 5. **Split大小** - **mapred.max.split.size**和**mapred...

    Hive Hadoop Spark优化

    2. **Task并行度**:合理设置Map和Reduce任务数量,以充分利用集群资源,避免过载或资源浪费。 3. **内存调优**:根据数据规模和计算需求调整MapReduce的内存参数,防止内存溢出。 4. **Compressio编码**:使用压缩...

    hadoop 权威指南(第三版)英文版

    本章还详细介绍了Shuffle和排序过程、任务执行环境、推测执行、输出提交器、任务JVM重用和跳过不良记录。 第七章讨论了MapReduce类型和格式,介绍了默认的MapReduce作业类型、输入和输出格式(包括文本、二进制、...

    通用大数据存储和分析处理平台-Hadoop.pdf

    4. **推测执行和JVM重用**:这两种优化策略可以提高MapReduce的性能,通过预测任务可能的延迟并提前启动新的任务实例,以及复用已存在的JVM进程,减少资源浪费。 5. **Hadoop均衡器**:用于调整集群中数据的分布,...

    Hadoop权威指南 第二版(中文版)

     重用JVM  跳过坏记录  任务执行环境 第7章 MapReduce的类型与格式  MapReduce的类型  默认的MapReduce作业  输入格式  输入分片与记录  文本输入  二进制输入  多种输入  数据库输入(和输出)  输出格式...

    Hadoop权威指南(中文版)2015上传.rar

    重用JVM 跳过坏记录 任务执行环境 第7章 MapReduce的类型与格式 MapReduce的类型 默认的MapReduce作业 输入格式 输入分片与记录 文本输入 二进制输入 多种输入 数据库输入(和输出) 输出格式 文本输出 二进制输出 ...

    hive工作调优小结

    JVM重用是指在同一个Java虚拟机实例中重复使用Map或Reduce任务,而不是为每个任务启动新的JVM实例。这可以显著减少任务启动的时间,从而提高性能。 **优化建议**: - 启用JVM重用:设置**mapreduce.job.jvm....

    通用大数据存储和分析处理平台-Hadoop.docx

    - **重用JVM**:减少JVM启动开销,提高效率。 ### 安全性和监控 Hadoop支持安全模式,提供fsck工具进行文件系统检查,以及各种守护进程的配置管理,便于日常维护和监控。 ### 应用场景 Hadoop不仅适用于搜索引擎...

    Mapreduce体系

    它主要由两个主要阶段组成:Map阶段和Reduce阶段,同时依赖于Hadoop的HDFS(Hadoop Distributed File System)作为底层数据存储系统。 HDFS是Hadoop的核心组件之一,它是一种分布式文件系统,能够将大型数据集分布...

    Hadoop实战

    905.2.2 基于DistributedCache的复制联结 985.2.3 半联结:map侧过滤后在reduce侧联结 1015.3 创建一个Bloom filter 1025.3.1 Bloom filter做了什么 1025.3.2 实现一个Bloom filter 1045.3.3 Hadoop 0.20以上版本的...

    通用大数据存储与分析处理平台_Hadoop.docx

    - **重用JVM**:优化资源利用率,避免频繁创建和销毁JVM实例。 - **IDS(Input Descriptor Set)**:MapReduce作业的输入描述符。 - **输入格式和输出格式**:自定义数据输入和输出的类。 - **计数器**:跟踪...

    大数据技术之高频面试题8.0.8(1)(1).docx

    - **启用JVM重用** **1.2.5 Shuffle及优化** **Shuffle过程**: - Map阶段 - Reduce阶段 - IO传输 **优化建议**: - **Map阶段**: - **增大环形缓冲区大小**。 - **增大溢写比例**。 - **减少溢写文件合并...

    大数据-互联网大厂面试真题附含答案高频面试题.pdf

    + 开启 JVM 重用 5. Shuffle 及优化: * Shuffle 过程:Map -> Shuffle -> Reduce * 优化方法: + 增大环形缓冲区大小 + 增大环形缓冲区溢写的比例 + 减少对溢写文件的 merge 次数 + 采用 Combiner 提前...

    大数据各类性能调优

    - 优化Map和Reduce任务的数量。 - 合理分配内存资源。 ##### 12.7.2 确定Job基线 - 确定Job的基线配置对于后续的性能调优至关重要。基线配置应包括但不限于: - 默认的Map和Reduce任务数量。 - 默认的内存和CPU...

    Hive教程.pdf

    - 启用JVM重用。 - 并行化处理。 - **Hive底层MapReduce优化**: - 设置合理的Map数。 - 设置合理的Reduce数。 #### 第三部分:Hive高级知识 - **Hive文件格式**: - **常见文件格式**: TextFile、...

    《企业级Hive实战课程》大纲

    - JVM重用的原理与设置; - Mapper/Reducer数量的合理设定; - 压缩技术与分布式缓存的应用; - 多job间共享中间结果集的技巧; - 执行计划的深入分析; - 几种Join方式(ReduceJoin、MapJoin、SMBJoin)的...

Global site tag (gtag.js) - Google Analytics