Hadoop 企业优化
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,1 MapReduce 跑的慢的原因2 MapReduce 优化方法MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、数据倾斜问题和常用的调优参数。2.1
千家信息网最后更新 2025年12月02日Hadoop 企业优化
1 MapReduce 跑的慢的原因

2 MapReduce 优化方法
MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、数据倾斜问题和常用的调优参数。
2.1 数据输入

2.2 Map 阶段
2.3 Reduce 阶段
2.4 IO 传输
2.5 数据倾斜问题
2.6 常用的调优参数
2.6.1 资源相关参数
以下参数是在用户自己的MR应用程序中配置就可以生效[mapred-default.xml]
| 配置参数 | 参数说明 |
|---|---|
| mapreduce.map.memory.mb | 一个MapTask可使用的资源上限(单位:MB),默认为1024。如果MapTask实际使用的资源量超过该值,则会被强制杀死 |
| mapreduce.reduce.memory.mb | 一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会被强制杀死 |
| mapreduce.map.cpu.vcores | 每个MapTask可使用的最多cpu core数目,默认值: 1 |
| mapreduce.reduce.cpu.vcores | 每个ReduceTask可使用的最多cpu core数目,默认值: 1 |
| mapreduce.reduce.shuffle.parallelcopies | 每个Reduce去Map中取数据的并行数。默认值是5 |
| mapreduce.reduce.shuffle.merge.percent | Buffer中的数据达到多少比例开始写入磁盘。默认值0.66 |
| mapreduce.reduce.shuffle.input.buffer.percent | Buffer大小占Reduce可用内存的比例。默认值0.7 |
| mapreduce.reduce.input.buffer.percent | 指定多少比例的内存用来存放Buffer中的数据,默认值是0.0 |
应该在YARN启动之前就配置在服务器的配置文件中才能生效[yarn-default.xml]
| 配置参数 | 参数说明 |
|---|---|
| yarn.scheduler.minimum-allocation-mb | 给应用程序Container分配的最小内存,默认值:1024 |
| yarn.scheduler.maximum-allocation-mb | 给应用程序Container分配的最大内存,默认值:8192 |
| yarn.scheduler.minimum-allocation-vcores | 每个Container申请的最小CPU核数,默认值:1 |
| yarn.scheduler.maximum-allocation-vcores | 每个Container申请的最大CPU核数,默认值:32 |
| yarn.nodemanager.resource.memory-mb | 给Containers分配的最大物理内存,默认值:8192 |
Shuffle性能优化的关键参数,应在YARN启动之前就配置好[mapred-default.xml]
| 配置参数 | 参数说明 |
|---|---|
| mapreduce.task.io.sort.mb | Shuffle的环形缓冲区大小,默认100m |
| mapreduce.map.sort.spill.percent | 环形缓冲区溢出的阈值,默认80% |
2.6.2 容错相关参数(MapReduce性能优化)
| 配置参数 | 参数说明 |
|---|---|
| mapreduce.map.maxattempts | 每个Map Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4 |
| mapreduce.reduce.maxattempts | 每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4 |
| mapreduce.task.timeout | Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个Task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该Task处于Block状态,可能是卡住了,也许永远会卡住,为了防止因为用户程序永远Block住不退出,则强制设置了一个该超时时间(单位毫秒),默认是600000。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大,该参数过小常出现的错误提示是"AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster." |
3 HDFS 小文件优化方法
3.1 HDFS 小文件弊端
HDFS 上每个文件都要在 NameNode 上建立一个索引,这个索引的大小约为 150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用 NameNode 的内存空间,另一方面就是索引文件过大使得索引速度变慢。
3.2 HDFS小文件解决方案
小文件的优化无非以下几种方式:
- 在数据采集的时候,就将小文件或小批数据合成大文件再上传 HDFS。
- 在业务处理之前,在 HDFS 上使用MapReduce程序对小文件进行合并。
- 在 MapReduce 处理时,可采用 CombineTextInputFormat 提高效率。
参数
数据
文件
配置
内存
程序
最大
索引
资源
时间
阶段
单位
大小
应用程序
方法
比例
分配
处理
应用
强制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建金融杯网络安全技能大赛
软件开发外包的业务
维普定稿查重会加入数据库吗
杭州领爱网络技术
办理互联网科技经营许可证
魔兽现在哪些服务器可以免费转服
改革开放以来网络安全
有什么是软件开发的
众焰互联网科技有限公司
机场软件开发有哪些公司
软件开发生命周期任务
未成年网络安全教育课件
国泰安数据库中盈余管理指标
网络安全暗月视频
消息中间件 数据库
1核2g服务器可以支持几个微信
淘宝上架不了 网络 云服务器
关系型数据库技术与应用
网络安全认证唐
软件开发用户数据
共享网站用什么服务器好
企业微信数据库密码
数据库性能排行
大量更新数据库崩溃
绥德天气预报软件开发
邮箱在哪里选择数据库
港币数据库
米哈游渠道服和官服服务器互通吗
软件开发公司都有哪些岗位
网络安全排查报告范本