MapReduce调优总结与拓展】的更多相关文章

本文为<hadoop技术内幕:深入解析MapReduce架构设计与实现原理>一书第9章<Hadoop性能调优>的总结. 图1 Hadoop层次结构图 从管理员角度进行调优 1.硬件选择 master配置(可靠性,内存,CPU主频等)优于slave. 2.操作系统参数调优 1)增大同时打开的文件描述符和网络连接上限 ulimit 将允许同时打开的文件描述符数增大到一个合适的值. net.core.somaxconn 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值…
下图是演示了Combiner的好处 因为我们知道Hadoop的好处在于集群中有很多小的机器,组成了一个庞大的集群,把一个大的计算任务后者说复杂的计算过程分发到了一个个小的机器上面.但是这个集群一个致命或者是不好的就是大部分会花在磁盘IO上面,如果我们把这部分时间节省了,也就加快了MR的速度,因为Map的output始终要给Reduce做input的,这部分肯定要有磁盘的IO,如果把Maper的输出控制了,这样就加快了.combinner 就是运用了这个逻辑. 思想:合并相同的Key对应的Valu…
MapReduce简介 在Hadoop MapReduce中,框架会确保reduce收到的输入数据是根据key排序过的.数据从Mapper输出到Reducer接收,是一个很复杂的过程,框架处理了所有问题,并提供了很多配置项及扩展点.一个MapReduce的大致数据流如下图: 更详细的MapReduce介绍参考Hadoop MapReduce原理与实例. Mapper的输出排序.然后传送到Reducer的过程,称为shuffle.本文详细地解析shuffle过程,深入理解这个过程对于MapRedu…
hadoop 性能调优与运维 . 硬件选择 . 操作系统调优与jvm调优 . hadoop运维 硬件选择 1) hadoop运行环境 2)  原则一: 主节点可靠性要好于从节点 原则二:多路多核,高频率cpu.大内存, namenode 100万文件的元数据要消耗800M内存,内存决定了集群保存文件数的总量, resourcemanager同时运行的作业会消耗一定的内存. datanode 的内存需要根据cpu的虚拟核数(vcore) 进行配比,CPU的vcore数计算公式为=cpu个数 * 单…
1.HDFS调优 a.设置合理的块大小(dfs.block.size) b.将中间结果目录设置为分布在多个磁盘以提升写入速度(mapred.local.dir) c.设置DataNode处理RPC的线程数(默认为3),大集群可适当加大点(dfs.datanode.handler.count) d.设置NameNode能同时处理请求数(dfs.namenode.handler.count)为集群规模的自然对数lnN的20倍 2.YRAN调优 Yarn的资源表示模型Container,Contain…
当HiveQL跑不出来时,基本上是数据倾斜了,比如出现count(distinct),groupby,join等情况,理解 MR 底层原理,同时结合实际的业务,数据的类型,分布,质量状况等来实际的考虑如何进行系统性的优化. Hive on MR 调优主要从三个层面进行,分别是基于MapReduce优化.Hive架构层优化和HiveQL层优化. MapReduce调优 如果能够根据情况对shuffle过程进行调优,对于提供MapReduce性能很有帮助.一个通用的原则是给shuffle过程分配尽可…
6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数据的储存足迹,加速MapReduce作业下游接收数据.另外,在map和reduce之间的数据需要被压缩以减轻网络IO的压力.压缩技术的具体内容在第5章中介绍. 二进制文件格式 使用二进制文件格式,如Avro和SequenceFile,可以使数据的表达更为紧凑,并提高编组(marshalling)和逆…
6.4.5 优化MapReduce用户JAVA代码 MapReduce执行代码的方式和普通JAVA应用不同.这是由于MapReduce框架为了能够高效地处理海量数据,需要成百万次调用map和reduce函数.每次调用仅用较少时间.那么就不能用普通的经验来预测常见库(含JDK)的性能表现. 进一步阅读 Joshua Bloch的<Effective Java>中有很多如何调优JAVA代码的方法 在技术45中介绍如何用分析器(profiler)查找MapReduce代码中消耗时间的地方.这里要用同…
6.2.4 任务一般性能问题 这部分将介绍那些对map和reduce任务都有影响的性能问题. 技术37 作业竞争和调度器限制 即便map任务和reduce任务都进行了调优,但整个作业仍然会因为环境原因运行缓慢. 问题 需要判断作业是否运行得比集群中其它作业要慢. 方案 将正在执行的reduce任务数和Hadoop集群的最大reduce任务数相比较. 讨论 如果根据前几节的技术,发现作业已经正确配置,任务的吞吐量也正确,那么作业的缓慢就有可能是集群的资源竞争了.下面将介绍如何诊断集群的资源竞争.…