博主信息
博文 75
粉丝 0
评论 0
访问量 68658
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
小猿圈之Hadoop优化
聆听的博客
原创
720人浏览过

Hadoop框架是现在最主流的的框架之一,越来越多的人去学习,那么你对hadoop的理解是什么?hadoop一定要会优化,那怎么优化呢,小猿圈今天说一下,感兴趣的朋友可以看看小猿圈写的这篇文章。

1、mr程序的效率瓶颈

    功能:分布式离线计算

    计算机性能:CPU、内存、磁盘、网络

    I/O操作优化a

    (1)数据倾斜(代码优化)

    (2)map和reduce数设置不合理

    (3)map运行时间太长,导致reduce等待过久

    (4)小文件过多(combineTextInputFomrat小文件合并)

    (5)不可分块的超大文件(不断的溢写)

    (6)多个溢写小文件需要多次merge

2、mr优化方法

    六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、

    数据倾斜、参数调优

    1­>数据输入

        (1)合并小文件:在执行mr任务前就进行小文件合并

        (2)采用CombineTextInputFormat来作为输入,解决输 入端大量小文件的场景

        mr并不适合处理大量小文件

    2­>Map阶段

        (1)减少溢写次数(增加内存200M 80%)

   

实例

    <property>

            <name>mapreduce.task.io.sort.mb</name>

            <value>100</value>

        </property>

        <property>

            <name>mapreduce.map.sort.spill.percent</name>

            <value>0.80</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        (2)减少合并次数

       

实例

 <property>

            <name>mapreduce.task.io.sort.factor</name>

            <value>10</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        (3)在map之后,不影响业务逻辑情况下进行combiner

    3&shy;>Reduce阶段

        (1)合理设置map与reduce个数

        (2)设置map/reduce共存

        设置运行一定程度的map运行后 启动reduce减少等待时间

       

实例

 <property>

            <name>mapreduce.job.reduce.slowstart.completedmaps</name>

            <value>0.05</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        (3)合理设置reduce端的buffer

       

实例

 <property>

            <name>mapreduce.reduce.markreset.buffer.percent</name>

            <value>0.0</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

    4&shy;>传输

        (1)进行数据压缩

        (2)使用sequenceFile

    5&shy;>数据倾斜

        (1)进行范围分区

        (2)自定义分区

        (3)Combine

        (4)能用mapjoin坚决不用reduce join

    6&shy;>参数调优

        设置核心数

        map核心数设置:

     

实例

  <property>

            <name>mapreduce.map.cpu.vcores</name>

            <value>1</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        reduce核心数设置:

     

实例

   <property>

            <name>mapreduce.reduce.cpu.vcores</name>

            <value>1</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        设置内存

        maptask内存设置:

       

实例

 <property>

            <name>mapreduce.map.memory.mb</name>

            <value>1024</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        reducetask内存设置:

     

实例

   <property>

            <name>mapreduce.reduce.memory.mb</name>

            <value>1024</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

        reduce去map端拿数据并行度

     

实例

  <property>

            <name>mapreduce.reduce.shuffle.parallelcopies</name>

            <value>5</value>

        </property>

运行实例 »

点击 "运行实例" 按钮查看在线实例

hadoop优化小猿圈说了几个优化的方面,大家感觉***?如果有其他方面的优化方法,可以给小猿圈补充,感觉还不错的话,可以去小猿圈学习其他方面内容,希望大家会学到更多全面的内容。

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学