千家信息网

hadoop系统参数如何优化

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章给大家分享的是有关hadoop系统参数如何优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。hadoop系统参数优化为了提高其数据性能,很多人开始优化Hadoop。
千家信息网最后更新 2025年12月01日hadoop系统参数如何优化

这篇文章给大家分享的是有关hadoop系统参数如何优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

hadoop系统参数优化
  为了提高其数据性能,很多人开始优化Hadoop。总结看来,对于Hadoop,当前主要有几个优化思路:
(1) 从应用程序角度进行优化。由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路。
(2) 对Hadoop参数进行调优。当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路。
(3) 从系统实现角度进行优化。这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往效果明显

3.2.1 Linux文件系统参数调整
(1) noatime 和 nodiratime属性
文件挂载时设置这两个属性可以明显提高性能。。默认情况下,Linux ext2/ext3 文件系统在文件被访问、创建、修改时会记录下文件的时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间。如果系统运行时要访问大量文件,关 闭这些操作,可提升文件系统的性能。Linux 提供了 noatime 这个参数来禁止记录最近一次访问时间戳。

(2) readahead buffer
调整linux文件系统中预读缓冲区地大小,可以明显提高顺序读文件的性能。默认buffer大小为256 sectors,可以增大为1024或者2408 sectors(注意,并不是越大越好)。可使用blockdev命令进行调整。

Command:
察看: blockdev --report
变更: blockdev --setra 1024 /dev/sda

(3) 避免RAID和LVM操作
避免在TaskTracker和DataNode的机器上执行RAID和LVM操作,这通常会降低性能。

3.2.2 Hadoop通用参数调整
(1) dfs.namenode.handler.count或mapred.job.tracker.handler.count(hdfs-default)
namenode或者jobtracker中用于处理RPC的线程数,默认是10,较大集群,可调大些,比如64。
(2) dfs.datanode.handler.count(hdfs-default)
datanode上用于处理RPC的线程数。默认为3,较大集群,可适当调大些,比如8。需要注意的是,每添加一个线程,需要的内存增加。
(3) mapreduce.tasktracker.http.threads (mapred-default)
HTTP server上的线程数。运行在每个TaskTracker上,用于处理map task输出。大集群,可以将其设为40~50。

3.2.3 HDFS相关配置
(1) dfs.replication(hdfs-default)
文件副本数,通常设为3,不推荐修改。
(2) dfs.block.size(hdfs-default)
HDFS中数据block大小,默认为64M,对于较大集群,可设为128MB或者256MB。(也可以通过参数mapred.min.split.size配置)
(3) mapred.local.dir(mapred-default)和dfs.data.dir(hdfs-default)
这两个参数mapred.local.dir和dfs.data.dir 配置的值应当是分布在各个磁盘上目录,这样可以充分利用节点的IO读写能力。运行 Linux sysstat包下的iostat -dx 5命令可以让每个磁盘都显示它的利用率。

3.2.4 map/reduce 相关配置
(1) {map/reduce}.tasks.maximum(mapred-default)
同时运行在TaskTracker上的最大map/reduce task数,一般设为(core_per_node)/2~2*(cores_per_node)。
(2) io.sort.factor(mapred-default)
当一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,map task最后做的一件事就是执行merge sort,把这些spill文件合成一个文件(partition)。执行merge sort的时候,每次同时打开多少个spill文件由该参数决定。打开的文件越多,不一定merge sort就越快,所以要根据数据情况适当的调整。
(3) mapred.child.java.opts(mapred-default)
设置JVM堆的最大可用内存,需从应用程序角度进行配置。

3.2.5 map task相关配置
(1) io.sort.mb(mapred-default)
Map task的输出结果和元数据在内存中所占的buffer总大小。默认为100M,对于大集群,可设为200M。当buffer达到一定阈值,会启动一个后台线程来对buffer的内容进行排序,然后写入本地磁盘(一个spill文件)。
(2) io.sort.spill.percent(mapred-default)
这个值就是上述buffer的阈值,默认是0.8,即80%,当buffer中的数据达到这个阈值,后台线程会起来对buffer中已有的数据进行排序,然后写入磁盘。
(3) io.sort.record.percent (mapred-default)
Io.sort.mb中分配给元数据的内存百分比,默认是0.05。这个需要根据应用程序进行调整。
(4) mapred.compress.map.output/ Mapred.output.compress(mapred-default)
中间结果和最终结果是否要进行压缩,如果是,指定压缩方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。推荐使用LZO压缩。Intel内部测试表明,相比未压缩,使用LZO压缩的 TeraSort作业运行时间减少60%,且明显快于Zlib压缩。

3.2.6 reduce task相关配置
(1) Mapred.reduce.parallel
Reduce shuffle阶段copier线程数。默认是5,对于较大集群,可调整为16~25。

这种基于参数的调优比较"静态",因为一套参数配置只对于一类作业是最优的。通过对这些参数的研究,可以寻找参数配置与不同作业特征之间的关联。

感谢各位的阅读!关于"hadoop系统参数如何优化"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

文件 参数 系统 配置 数据 线程 调整 时间 集群 运行 性能 磁盘 明显 较大 内存 大小 应用程序 程序 角度 作业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 5000字网络安全毕业论文范文 湖北网络技术分类服务标准 网络安全法大股东 电脑a7服务器是什么原因 关于网络安全的文献最新 嫁软件开发男好吗 互动教育网络技术 数据库某个值保留小数位 缺乏网络技术支撑 广州市超宝网络技术有限公司 手机服务器一般选择什么 保定网络服务器机柜安装工程 excel人事数据库模板 未转变者好玩的服务器推荐 开发效率是软件开发核心问题 网络安全活动裁剪 小学生国家网络安全绘画 北京捷瑞丰网络技术 上海猎美互联网科技有限公司 如何在家异地用数据库 分布式数据库安全技术 软件开发项目启动会材料 部落冲突9本升级数据库 职业学校计算机网络技术好吗 手游沙巴克传奇清空数据库 与高校合作软件开发协议 国家网络安全基础知识考试题 hdfs 关系型数据库 加强财政网络安全工作的通知 网络安全加密赛道前景
0