`
wx1568908808
  • 浏览: 31319 次
文章分类
社区版块
存档分类
最新评论

hadoop集群配置与MapReduce性能调优

 
阅读更多

Hadoop安装

     1. 安装前的准备

    安装hadoop首先需要在机器上安装合适版本的java(最新版本肯定没问题),并从Apache镜像中下载稳定版本的hadoop安装包。在集群中安装hadoop通常需要在所有机器上拷贝一份hadoop安装包,并解压缩到安装目录中。

    通常集群中一台机器专门被指定为NameNode,另一台机器专门被指定为ResourceManager。其它服务,例如web app proxy server和MapReduce Job history Server通常根据负载的变化,运行在专用硬件或共享的基础上。集群中其它的机器是DataNode和NodeManager,它们是slaves。

    hadoop的java配置包含两类重要的配置文件:只读的默认配置文件(core-default.xmlhdfs-default.xmlyarn-default.xml and mapred-default.xml),机器特定的配置文件(etc/hadoop/core-site.xmletc/hadoop/hdfs-site.xmletc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml)。另外你也可以通过设置etc/hadoop/hadoop-env.shetc/hadoop/yarn-env.sh,etc/hadoop/mapred-env.sh文件中的值,控制hadoop脚本,配置hadoop守护进程的运行环境。HDFS守护进程是NameNode, SecondaryNameNode, and DataNode进程,YARN守护进程是ResourceManager, NodeManager, WebAppProxy。如果有MapReduce作业运行,那么MapReduce Job History Server进程也将运行。对于大型集群,这些进程通常运行在不同的主机上。

    2. 配置hadoop守护进程运行环境

    使用etc/hadoop/hadoop-env.sh,etc/hadoop/mapred-env.shetc/hadoop/yarn-env.sh脚本设置机器特定的运行环境。必须设置JAVA_HOME,可选的配置包括HADOOP_PID_DIR,HADOOP_LOG_DIR分别是hadoop守护进程id和日志文件路径,HADOOP_HEAPSIZE / YARN_HEAPSIZE设置守护进程JVM最大heap size。

    使用etc/hadoop/core-site.xml配置fs.defaultFS(NameNode URI),io.file.buffer.size(读写SequenceFiles时缓存大小)

    使用etc/hadoop/hdfs-site.xml配置dfs.namenode.name.dir(本地路径用于保存NameNode命名空间和操作日志),dfs.hosts /dfs.hosts.exclude(包含/排除的DataNode列表),dfs.blocksize(HDFS块大小),dfs.namenode.handler.count(NameNode处理来自DataNode的RPC服务线程数量),dfs.datanode.data.dir(DataNode保存数据的本地路径)

    3. NodeManager集群监测脚本,Hadoop提供了一个机制,管理员可以配置NodeManager运行脚本,监测集群的健康状态。监测脚本输出包括字符串“ERROR”,该节点的状态被报告为“unhealthy”,将被ResourceManager加入黑名单,后续不会有tasks分配到该节点。然而,NodeManager监测脚本一直运行,当该节点重新可用时,将自动被ResourceManager加入到集群中。节点的健康状态可以在Resource Manager Web Interface中看到。一些和监测脚本相关的参数可以在etc/hadoop/yarn-site.xml中设置。例如:yarn.nodemanager.health-checker.script.interval-ms设置监测脚本运行的时间间隔。

    4. 在etc/hadoop/slaves文件中,逐行列出所有slave的主机名或者IP地址。Hadoop很多脚本将使用该文件,在多个节点上运行命令。当然,所有机器之间必须能够相互ssh通过。

    5. Hadoop Rack(机架)敏感,利用节点之间的拓扑结构,提高集群的性能和安全性。Hadoop守护进程通过启动一个管理员配置模块,获取机架信息。在启动HDFS前,一般需要配置机架信息。

     6. Hadoop使用Apache log4j,通过etc/hadoop/log4j.properties定制日志配置。

     7. 所有配置结束后,将所有配置文件,分发到所有机器的HADOOP_CONF_DIR目录,该目录在所有机器中必须相同。一般地,HDFS和YARN相关进程采用不同的用户名启动,在大多数配置中,HDFS采用“hdfs”用户名,YARN采用“yarn”用户名。

MapReduce性能调优

    1. Map任务输出的键值对,首先被写入内存(MapOutputBuffer)中,该内存大小默认是100MB,可以通过参数io.sort.mb调整。当MapOutputBuffer剩余空间小于80%(可以通过参数io.sort.spill.percent调整)时,程序开始将内存中的数据写入磁盘中,这也称为spill。

    2. 当Map任务部分完成或者全部完成后,如果Map有输出,就会生成一个或者多个spill文件。在Map完全结束之前,还有一个merge操作,将这些spill文件合并。参数io.sort.factor设置最多能有多少个spill文件参与一次merge操作,默认值是10个。

    3. 当job指定了Combiner的时候,在map端会调用Combiner定义的函数对Map输出结果进行合并。Combiner函数运行的时机可能是在merge操作之后,也可能是之前。通过min.num.spill.for.combine参数,默认为3,当spill文件大于3个的时候,Combiner函数会在merge产生结果文件之前运行。

    4. Map任务的中间结果,spill文件以及最终的merger文件都是支持压缩的,参数mapred.compress.map.output设置为true时,Map产生的中间数据会先压缩,然后再写入磁盘中,这样磁盘IO会减少,但是会消耗计算资源用于数据的压缩和解压。根据观察,大部分job的瓶颈都不是cpu,除非运算逻辑异常复杂,所以对Map中间结果进行压缩通常是有利的。参数mapred.map.output.compression.codec指定具体的压缩方式。

    5. Map任务会根据reducer数量n,将输出结果分成n个分区,因此每一个Map任务都可能包含Reducer需要处理的数据。hadoop job中,当第一个Map任务结束的时候,所有的Reducer就开始尝试从完成的Mapper中下载该Reducer对应分区的数据,该过程称为shuffle。参数mapred.reduce.parallel.copies,默认是5,调整Reducer端下载Mapper端数据的最大线程数量。参数mapred.reduce.copy.backoff,默认是300秒,调整Reducer下载线程等待时间,超过300秒,下载线程仍然失败,该下载线程便会放弃本次下载。io.sort.factor也同时影响Reducer端执行一次merge操作的数据分区数量。mapred.job.shuffle.input.buffer.percent调节shuffle数据使用reduce内存的比例,默认为 70%。mapreduce.reduce.java.opts参数设置Reducer任务最大heap使用量。参数mapred.job.shuffle.merge.percent设置shuffle数据开始执行merge操作时,所占内存比例,默认是66%。参数mapred.job.reduce.input.buffer.percent,默认是0.0,调节Reducer执行reduce函数时,读取已经sort、merge好的数据的内存缓存大小。


转载于:https://my.oschina.net/jhone/blog/481336

分享到:
评论

相关推荐

    基于Hadoop的电商大数据平台性能调优.pdf

    本研究通过搭建一个拥有32个节点的Hadoop集群,并使用TPC-DS(TPC Decision Support Benchmark)基准测试集进行仿真实验,验证了提出的调优思路及方法的有效性。测试结果显示,经过优化的平台性能大约是未进行任何...

    Hadoop集群高可用与性能优化

    总结,Hadoop集群的高可用性和性能优化是一个持续的过程,需要综合考虑硬件配置、软件参数调整、任务调度策略等多个方面。理解并熟练应用上述知识点,有助于构建出一个强大、可靠的Hadoop大数据处理平台。

    hadoop、habse、yarn、MapReduce调优等总结的集合调优.docx

    MapReduce调优主要包括作业调度、任务划分、内存分配等方面,例如调整`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`以适应不同作业的需求,同时优化作业的并行度和数据本地性。 集群权限管理是保障系统...

    2014年大数据处理HADOOP与性能调优

    【Hadoop大数据处理与性能调优】是2014年大数据领域的焦点,随着Cloudera、Hortonworks和Intel等公司推出Hadoop商用版本,大数据技术正逐步发展,旨在解决大规模数据处理的问题并探索解决方案。Hadoop作为开源大数据...

    hadoop调优指南 hadoop调优指南

    在实际应用中,Hadoop集群通常面临着各种挑战,如数据量的增长、查询复杂度的提高以及用户对响应时间的需求增加等。因此,通过合理地调整配置参数、优化硬件资源分配等方式来提升系统的整体性能显得尤为重要。调优的...

    Hadoop集群程序设计与开发PPT.rar

    7. **Hadoop集群部署与管理**:包括配置Hadoop环境、安装集群、数据分布策略、故障检测与恢复、性能调优等内容。 8. **案例分析**:通过实际案例展示Hadoop在日志分析、推荐系统、机器学习等领域的应用,加深对...

    Hadoop开发、运维和调优实战考试资料.pdf

    17. Hadoop集群启动后,可以使用jps命令检查各个关键进程是否正常运行。 18. MapReduce中,每个Task处理的数据并不一定是本地数据或机架本地化数据,而是根据数据分布和Task调度策略动态决定的。 19. JobTracker通过...

    安装hadoop集群

    ### Hadoop集群安装与配置详解 #### 一、引言 随着互联网技术的快速发展和企业数据量的激增,高效处理大规模数据的需求日益迫切。Hadoop作为一种开源的大数据处理框架,因其优秀的分布式处理能力和可扩展性,成为...

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

    Hadoop作业调优是提升大数据处理效率的关键环节,通过对Hadoop MapReduce框架中的参数进行精细调整,可以显著改善作业的性能。以下是对标题和描述中涉及的参数及原理的详细说明: 1. **MapTask运行内部原理** - **...

    hadoop和hive调优个人总结

    自动Balancer是Hadoop集群中的一种负载均衡机制,可以根据集群中的数据分布情况,自动地将数据重新分布到不同的节点上,以提高集群的性能和可靠性。 启动Balancer的命令: hadoop balancer 配置Balancer时传输...

    Hadoop集群搭建总结

    ### Hadoop集群搭建总结 #### 一、Hadoop概述与应用...通过对Hadoop集群的搭建与优化,不仅可以提升数据处理能力,还能为企业带来更多的商业价值。未来,随着技术的不断进步,Hadoop将继续在其领域内扮演关键角色。

    Hadoop MapReduce Cookbook 源码

    1. **Hadoop环境搭建**:讲解如何安装配置Hadoop分布式文件系统(HDFS)和MapReduce框架,包括集群部署和单机模拟。 2. **MapReduce编程模型**:介绍Map和Reduce函数的编写,以及Combiner和Partitioner的使用,它们...

    hadoop集群配置

    ### Hadoop集群配置详解 #### 一、引言 随着大数据时代的到来,处理海量数据的需求日益增长。Hadoop作为一种开源的大数据处理框架,被广泛应用于数据存储与处理领域。为了更好地利用Hadoop的强大功能,搭建一个...

Global site tag (gtag.js) - Google Analytics