- 浏览: 307884 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (165)
- hadoop (47)
- linux (11)
- nutch (7)
- hbase (7)
- solr (4)
- zookeeper (4)
- J2EE (1)
- jquery (3)
- java (17)
- mysql (14)
- perl (2)
- compass (4)
- suse (2)
- memcache (1)
- as (1)
- roller (1)
- web (7)
- MongoDB (8)
- struts2 (3)
- lucene (2)
- 算法 (4)
- 中文分词 (3)
- hive (17)
- noIT (1)
- 中间件 (2)
- maven (2)
- sd (0)
- php (2)
- asdf (0)
- kerberos 安装 (1)
- git (1)
- osgi (1)
- impala (1)
- book (1)
- python 安装 科学计算包 (1)
最新评论
-
dandongsoft:
你写的不好用啊
solr 同义词搜索 -
黎明lm:
meifangzi 写道楼主真厉害 都分析源码了 用了很久. ...
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
meifangzi:
楼主真厉害 都分析源码了
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
zhdkn:
顶一个,最近也在学习设计模式,发现一个问题,如果老是看别人的博 ...
Java观察者模式(Observer)详解及应用 -
lvwenwen:
木南飘香 写道
高并发网站的架构
hadoop 性能调优
环境:
4台suse 各 4G 内存 1T硬盘 4核cpu
3台 redhat 各 2G内存 500G 硬盘 双核cpu
由于没有真正意义上的服务器,所以当运行大量map reduce任务的时候 map 运行速度还可以接受 但reduce 速度 特别慢,所以开发
对集群进行调优。
hadoop集群调优分两个方面,map和reduce
map调优:
map 任务执行会产生中间数据,但这些中间结果并没有直接IO到磁盘上,而是先存储在缓存(buffer)中,并在缓存中进行一些预排序来优化整个map的性能,该存储map中间数据的缓存默认大小为100M,由io.sort.mb 参数指定.这个大小可以根据需要调整。当map任务产生了非常大的中间数据时可以适当调大该参数,使缓存能容纳更多的map中间数据,而不至于大频率的IO磁盘,当系统性能的瓶颈在磁盘IO的速度上(由于我的是pc 机,因此磁盘读写速度很慢,相信大多数的人都是这样的情况,可以交流),可以适当的调大此参数来减少频繁的IO带来的性能障碍.
由于map任务运行时中间结果首先存储在缓存中,但是不是当整个缓存被填满时才将其写入磁盘,这样会增加map任务的等待,所以默认当 缓存的使用量达到80%(或0.8)的时候就开始写入磁盘,这个过程叫做spill(也叫做磁盘溢出),进行spill的缓存大小可以通过io.sort.spill.percent 参数调整,这个参数可以影响spill的频率.进而可以影响IO的频率.当map任务计算成功完成之后(也可以不成功单个的map)如果map任务有输出.则会产生多个spill。这些文件就是map的输出结果,但
是此时map任务虽然产生了输出结果,但是切记此时map任务仍然没有退出作业,接下来map必须将些spill进行合并,这个过程叫做merge, merge过程是并行处理spill的,每次并行多少个spill是由参数io.sort.factor指定的默认为10个.但是当spill的数量非常大的时候,merge一次并行运行的spill仍然为10个,这样仍然会频繁的IO处理,因此适当的调大每次并行处理的spill数有利于减少merge数因此可以影响map的性能。当map输出中间结果的时候也可以配置压缩,这个在前面的文章中我提到过,这里不再赘述了.
reduce调优:
reduce 运行阶段分为shuflle(copy) sort reduce, shuffle 阶段为reduce 全面拷贝map任务成功结束之后产生的中间结果,如果上面map任务用了压缩的方式,那么reduce 将map任务中间结果拷贝过来的时候首先要做的第一件事情就是解压缩,这一切是在reduce的 缓存中做的,当然也会占用一部分cpu,但是应该不会cpu的性能有影响,我的pc 没有发现cpu 因为这个过程被占用的 过多.为了优化reduce的执行时间,reduce也不是等到所有的map数据都拷贝过来的时候才开始运行reduce任务,而是当job执行完第一个map执行完才开始运行的.reduce 在shuffle阶段 实际上是从不同的并且已经完成的map上去下载属于自己的这个reduce,由于map任务数很多,所有这个copy过程是并行的,既同时有许多个reduce取拷贝map.这个并行 的线程是通过mapred.reduce.parallel.copies 参数指定的默认为5个,也就是说无论map的任务数是多少个,默认情况下一次只能有5个reduce的线程去拷贝map任务的执行结果.所以当map任务数很多的情况下可以适当的调整该参数,这样可以让reduce快速的获得运行数据来完成任务。reduce线程在下载map数据的时候也可能因为各种各样的原因,网络原因,系统原因,存储该map数据所在的datannode 发生了故障,这种情况下reduce任务将得不到该
datanode上的数据了,同时该 download thread 会尝试从别的datanode下载,可以通过mapred.reduce.copy.backoff (默认为30秒)来调整下载线程的下载时间,如果网络不好的集群可以通过增加该参数的值来增加下载时间,以免因为下载时间过长reduce将该线程判断为下载失败。
reduce 下载线程在map结果下载到本地时,由于是多线程并行下载,所以也需要对下载回来的数据进行merge,所以map阶段设置的io.sort.factor 也同样会影响这个reduce的。同map也一样,reduce 将从map下载来的数据也立刻写入磁盘,而是当缓冲区被占用到一定的阀值的时候才写入磁盘,reduce的这个大小mapred.job.shuffle.input.buffer.percent(默认为0.7)来指定,同map一样 该缓冲区大小也不是等到完全被占满的时候才写入磁盘而是默认当当完成0.66的时候就开始写磁盘操作,该参数是通过mapred.job.shuffle.merge.percent 指定的。当reduce 开始进行计算的时候通过:mapred.job.reduce.input.buffer.percent 来指定需要多少的内存百分比来作为reduce读已经sort好的数据的buffer百分比,默认为0.当默认时reduce是全部从磁盘开始读处理数
据
总结:总之map reduce调优的一个原则就是 给shuffle 尽量多的内存,给中间结果多些内存,给并行任务数调大(当然一些都得因人而异,根据自己集群及网络的实际情况来调优,调优的时候可以根据工具ganglia来查看效果)
发表评论
-
博客地址变更
2013-08-16 10:29 1247all the guys of visiting the bl ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:36 2760taskTracker 生成map reduce ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:33 0taskTracker 生成map reduce ... -
hadoop 源码分析(五)hadoop 任务调度TaskScheduler
2013-04-01 11:07 3957hadoop mapreduce 之所有能够实现job的运行 ... -
hadoop 源码分析(四)JobTracker 添加job 到schduler 队列中
2013-03-29 18:37 2893启动 JobTracker 1. 进入main方法: ... -
hadoop 源码分析(三) hadoop RPC 机制
2013-03-28 15:13 2423Hadoop 通信机制采用自己编写的RPC. 相比于 ... -
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker
2013-03-27 12:57 38161.JobClient 客户端类 通过 ... -
hadoop 源码分析(一) jobClient 提交到JobTracker
2013-03-26 13:41 3630Hadoop 用了2年多了.从最初一起创业的 ... -
RHadoop 安装教程
2013-02-01 17:18 1643RHadoop 环境安装 硬件: centos6 ... -
pig
2012-11-16 19:28 1227转自:http://www.hadoopor.c ... -
hadoop与hive的映射
2012-11-15 10:21 2385hadoop与hive的映射 ... -
hadoop distcp
2012-07-31 10:00 2840hadoop distcp 使用:distcp ... -
MapReduce中Mapper类和Reducer类4函数解析
2012-07-20 18:05 2140MapReduce中Mapper类和Reducer类4函数解析 ... -
hadoop metrics 各参数解释
2012-07-17 18:59 1528hadoop metrics 各参数解释 研究使用hadoo ... -
Hbase几种数据入库(load)方式比较
2012-07-17 14:52 13931. 预先生成HFile入库 这个地址有详细的说明http:/ ... -
Hadoop客户端环境配置
2012-05-11 14:59 1788Hadoop客户端环境配置 1. 安装客户端(通过端用户可以 ... -
hadoop 通过distcp进行并行复制
2012-05-02 15:25 2493通过distcp进行并行复制 前面的HDFS访问模型都集中于 ... -
linux crontab 执行hadoop脚本 关于hadoop环境变量引入
2012-04-10 12:11 0crontab问题 crontab的特点:PATH不全和无终 ... -
hadoop fs 命令封装
2012-04-09 09:39 0hadoop fs 命令封装 #!/usr/bin/env ... -
map-reduce编程核心问题
2012-02-22 13:38 12911-How do we break up a large p ...
相关推荐
为了充分发挥Hadoop的性能优势,进行合理的系统调优是非常必要的。本文将基于提供的标题、描述、标签以及部分内容,深入探讨Hadoop调优的关键知识点。 #### Hadoop概述 Hadoop是一个开源软件框架,用于分布式存储...
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据...
从Hadoop配置文件入手,经历大量的实验,以求通过改变一些配置参数以提高Hadoop集群的性能。 从Hadoop作业调度入手,优化集群作业调度算法。
Hadoop作业调优是提升大数据处理效率的关键环节,通过对Hadoop MapReduce框架中的参数进行精细调整,可以显著改善作业的性能。以下是对标题和描述中涉及的参数及原理的详细说明: 1. **MapTask运行内部原理** - **...
【Hadoop性能调优】涉及多个层面,包括硬件选择、配置参数调整、数据分布策略等。选择适合Hadoop的硬件配置至关重要,一般考虑硬盘I/O性能、内存大小和CPU计算能力。在配置优化方面,调整如Block Size、Replication ...
Hadoop性能调优 主要涉及hdfs、yarn、mapreduce、hive等的调优,同时也包括一些linux系统产生调优
Hadoop参数调优是指通过调整Hadoop配置文件中的各个参数来达到性能优化的目的。Hadoop配置文件中包含了大量的参数,每个参数都有其特定的作用和默认值。通过调整这些参数,可以大大提高Hadoop的性能。但是,参数调整...
文档内容围绕Hadoop生态系统中的两个主要组件Hive和Hadoop进行展开,对它们的工作原理、性能调优策略等方面进行了深入讨论。 首先,Hive是建立在Hadoop上的一个数据仓库工具,可以将结构化的数据文件映射为一张...
总的来说,Hadoop的配置调优是一个综合考虑硬件资源、数据特性、作业需求和系统性能的过程。每个参数的调整都需要谨慎,因为它们之间存在相互影响的关系。通过深入理解这些配置项的作用和相互关系,可以有效地优化...
Hadoop和Hive调优是当前大数据处理中非常重要的一部分,如何提高Hadoop和Hive的性能,将直接影响到整个数据处理的效率和质量。本文将总结个人在学习和测试Hive过程中的调优经验,包括Datanode的热插拔、启动自动...
基于Hadoop的电商大数据平台性能调优主要涉及两大方面:数据重新组织和平台参数调优。针对电商大数据平台的特点,通过调整存储数据格式、优化数据表的分区与分桶策略,以及调整涉及业务主要组件的关键参数,可以显著...
本课程“Hadoop大数据开发与性能调优实战培训课程-Hadoop组件详解”旨在深入探讨Hadoop的主要组件及其优化策略,帮助开发者和数据工程师提升在大数据环境中的实践能力。 首先,我们要了解Hadoop的基础架构,它主要...
【标题】:“五分钟学大数据-Hadoop企业级调优手册1” ...综上所述,Hadoop企业级调优涵盖了从基础参数配置到集群性能测试、扩展与维护的全方位流程,旨在最大化HDFS的性能和稳定性,为企业的大数据应用提供有力支撑。
### 大数据各类性能调优 #### 12.1 配置原则 在大数据环境中,合理配置资源是实现高效能的关键。以下是一些基本原则: **原则1:CPU核数分配原则** - **数据节点**: 建议预留2~4个核心给操作系统和其他进程(如...
Cloudera Hadoop 5&Hadoop高阶管理及调优课程,完整版,提供课件代码资料下载。 内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1、Hadoop2.0高阶运维,包括Hadoop...5、Hadoop各组件性能调优
Hadoop性能调优指南介绍了一种有效的方法来提升Hadoop集群的运行效率,它不仅涵盖了硬件优化,还包括了系统和Hadoop架构层面的优化。Hadoop是一个开源的分布式存储和计算框架,广泛应用于大数据的存储与处理。对于...
8. **Hadoop性能调优**:包括Datanode和Namenode的内存设置、Block大小调整、网络优化、任务调度策略等,这些都是提升Hadoop性能的关键。 9. **Hadoop故障排查**:学习识别和解决Hadoop运行中的常见问题,如数据...
Hadoop大数据开发与性能调优实战培训课程.pptx