Hadoop实战-中高级部分 之 Hadoop作业调优参数调整及原理

第一部分:core-site.xml

•core-site.xml为Hadoop的核心属性文件,参数为Hadoop的核心功能,独立于HDFS与MapReduce。

参数列表

•fs.default.name

•默认值 file:///

•说明:设置Hadoop  namenode的hostname及port,预设是Standalone mode,如果是伪分布式文件系统要设置成

hdfs://localhost:9000,如果使用集群模式则配置为 hdfs://hostname:9000

•hadoop.tmp.dir

•默认值/tmp/hadoop-${user.name}

•会在tmp下根据username生成不同的目录

•fs.checkpoint.dir

•默认值${hadoop.tmp.dir}/dfs/namesecondary

•Sencondary NameNode 镜像存储目录

•fs.checkpoint.period

•默认值: 3600(秒)

• 控制 secondary namenode 的 checkpoint 时间间隔。如果距离上次 checkpoint 的时间大于这个参数的设定,就会触发 checkpoint。secondary namenode 會把 namenode 的 fsimage 和 editlog 做 snapshot。如果存取 Hadoop 的次数频繁或为了減少重起 namenode 的 downtime,可以把這个值设小一点。

•fs.checkpoint.size

•默认值67108864(byte)

•如果 Hadoop 非常的忙碌,editlog 可能会在短时间內变的很大,fs.checkpoint.period 的设定不见得可以完全预测这个状况,所以保险的做法会多设定这个值,以保证当数据大到超过 fs.checkpoint.size 的值也会触发 checkpoint。

•io.file.buffer.size

•默认值 4096

•這是读写 sequence file 的 buffer size, 可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536 到 131072。

•ipc.client.connection.maxidletime

•默认值 10000(毫秒)

•设定 Hadoop client 连接時最大的闲置,默认是是 10 秒。如果 Hadoop cluster 的网络联系不稳,可以把这个值设到 60000(60秒)

•ipc.server.tcpnodelay

•默认值 false

•在 Hadoop server 是否启动 Nagle’s 算法。设 true 会 disable 这个演算法,关掉会减少延迟,但是会增加小数据包的传输。server site 不太需要这定这个值。

•hadoop.security.authorization

•默认值 false

•是不是要开启 账号验证机制,开启之后 Hadoop 在执行任何动作之前都会先确认是否有权限。详細的权限设定会放在 hadoop-policy.xml 裡。例如要让 fenriswolf 这个 account 及 mapreduce group 可以 submit M/R jobs,要设定security.job.submission.protocol.acl

•hadoop.security.authentication

•默认值 simple

• simple 表示沒有 authentication,Hadoop 會用 system account 及 group 來控管q权限。另外可以指定為  kerberos,这部分相对比較复杂,要有一個 kerberos server 并产生 account keytab,在执行任何操作前 client 要先用 kinit 指令對 kerberos server 認證,之後的任何操作都是以 kerberos account 來執行。

•fs.trash.interval

•默认值 0(分)

•清掉垃圾筒的时间。预设是不清, 所以在刪除文件时要自己执行

•hadoop.native.lib

•默认值 true

• 默认 Hadoop 会去找所有可用的 native libraries 并自动 load 进來使用,例如压缩类的 libraries 像 GZIP, LZO 等等。

第二部分:hdfs-site.xml

参数列表

•dfs.block.size

•默认值67108864(字节)

•默认每個 block 是 64MB。如果確定存取的文件块都很大可以改為 134217728(128MB)。Client 也可自行决定要使用的 block size 而不需要更改整個 cluster 的设定。

•dfs.safemode.threshold.pct

•默认值  0.999f

•  Hadoop 启动时会进入 safe mode,也就是安全模式,這时是不能写入数据的。只有当99.9% 的 blocks 达到最小的 dfs.replication.min 数量(默认是3)才会离开safe mode。在 dfs.replication.min 设的比较大或 data nodes 数量比较多时会等比较久。

•dfs.namenode.handler.count

•默认值 10

•设定 namenode server threads 的数量,这些 threads 會用 RPC 跟其他的 datanodes 沟通。当 datanodes 数量太多时会发現很容易出現 RPC timeout,解決方法是提升网络速度或提高这个值,但要注意的是 thread 数量多也表示 namenode 消耗的内存也随着增加

•dfs.datanode.handler.count

•默认值  3

•  指定 data node 上用的 thread 数量。

•dfs.datanode.max.xcievers

•默认值 256

•这个值是指定 datanode 可同時处理的最大文件数量、

•dfs.datanode.du.reserved

•默认值 0

•默认值表示 data nodes 会使用整个 磁盘,写满之后会导致无法再写入 M/R jobs。如果还有其他程式共用这些目录也会受到影响。建议保留至少 1073741824(1G) 的空间。

第三部分:mapred-site.xml

参数列表

•io.sort.mb

•默认值100

•缓存map中间结果的buffer大小(in MB)

•io.sort.record.percent

•默认值 0.05

•io.sort.mb中用来保存map output记录边界的百分比,其他缓存用来保存数据

•io.sort.spill.percent

•默认值0.80

•map开始做spill操作的阈值

•io.sort.factor

•默认值 10

•做merge操作时同时操作的stream数上限。

•min.num.spill.for.combine

•默认值3

•combiner函数运行的最小spill数

•mapred.compress.map.output

•默认值 false

•map中间结果是否采用压缩

•mapred.map.output.compression.codec

•org.apache.hadoop.io.compress.DefaultCodec

•min.num.spill.for.combine

•默认值3

•combiner函数运行的最小spill数

•mapred.compress.map.output

•默认值 false

•map中间结果是否采用压缩

•mapred.map.output.compression.codec

•org.apache.hadoop.io.compress.DefaultCodec

•mapred.reduce.parallel.copies

•默认值5

•每个reduce并行下载map结果的最大线程数

•mapred.reduce.copy.backoff

•默认值 300

•reduce下载线程最大等待时间(in sec)

•io.sort.factor

•默认值10

•org.apache.hadoop.io.compress.DefaultCodec

•mapred.job.shuffle.input.buffer.percent

•默认值0.7

•用来缓存shuffle数据的reduce task heap百分比

•mapred.job.shuffle.merge.percent

•默认值 0.66

•缓存的内存中多少百分比后开始做merge操作

•mapred.job.reduce.input.buffer.percent

•默认值0.0

•sort完成后reduce计算阶段用来缓存数据的百分比

时间: 2024-08-28 17:48:21

Hadoop实战-中高级部分 之 Hadoop作业调优参数调整及原理的相关文章

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

1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内存buffer来进行已经产生的部分结果的缓存,并在内存buffer中进行一些预排序来优化整个map的性能.如上图所示,每一个map都会对应存在一个内存buffer(MapOutputBuffer,即上图的buffer in memory),map会将已经产生的部分结果先写入到该buffer中,这个b

hadoop作业调优参数整理及原理(主要为shuffle过程)

1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内存buffer来进行已经产生的 部分结果的缓存,并在内存buffer中进行一些预排序来优化整个map的性能.如上图所示,每一个map都会对应存在一个内存 buffer(MapOutputBuffer,即上图的buffer in memory),map会将已经产生的部分结果先写入到该buffer中,这

Hadoop调优参数总结

Map端调优参数 属性名称 类型 默认值 说明 io.sort.mb int 100 排序map输出时所使用的内存缓冲区大小,以M为单位.当节点内存较大时,可调高该参数,以减少磁盘写入次数. io.sort.record.percent float 0.05 用作存储map输出(io.sort.mb)记录的比例.剩余的空间用来存储map输出记录本身 io.sort.spill.percent float 0.80 map输出开始写磁盘的阈值. io.sort.factor int 10 map输

数据倾斜是多么痛?spark作业调优秘籍

目录视图 摘要视图 订阅 [观点]物联网与大数据将助推工业应用的崛起,你认同么?      CSDN日报20170703--<从高考到程序员--我一直在寻找答案>      [直播]探究Linux的总线.设备.驱动模型! 数据倾斜是多么痛?spark作业调优秘籍 2017-06-27 13:28 39人阅读 评论(0) 收藏 举报  分类: Spark(124)  原文:https://mp.weixin.qq.com/s?__biz=MzI5OTAwMTM1MQ==&mid=2456

深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)视频教程

14套java精品高级架构课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful 服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运 维架构视频教程 14套精品课程介绍: 1.14套精 品是最新整理的课程,都是当下最火的技术,最火的课程,也是全网课程的精品: 2.14套资 源包含:全套完整高清视频.完整源码.配套文档: 3.知识也 是需要投资的,有投入才会有产出(保证投入产出比是

JVM常用的调优参数

-Xms512m -Xmx1024m -XX:MaxPermSize=1204m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 上面是一般性调优测试,设置Java JVM整体的优化参数: set JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=1204m XX:+CMSClassUnloadingEnabled -XX:+CMSPe

转: jvm调优参数总结

JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured generation和permanet generation.绝大部分的objec被分配在young gener

JVM调优参数

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作系统对内存无限制.我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m.典型设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大可用内存为3550M.-Xms3550m:设

Linux内存子系统及常用调优参数

内存子系统及常用调优参数 内存子系统组件 slab  allocator buddy system kswapd pdflush mmu 虚拟化环境: PA(进程地址)-->HA(虚拟机地址)-->MA(物理机地址) 虚拟机转换:PA-->HA guestOS虚拟机内核,OS物理机内核 shadow PT Memory: TLB:提升性能 HugePages 内存大页面 [[email protected] domain1]# cat /proc/meminfo |grep -i  Hu