Hadoop参数汇总
@(hadoop)[配置]
linux参数
以下参数最好优化一下:
- 文件描述符
ulimit -n
- 用户最大进程 nproc (hbase需要 hbse book)
- 关闭swap分区
- 设置合理的预读取缓冲区
- Linux的内核的IO调度器
JVM参数
JVM方面的优化项Hadoop Performance Tuning Guide
Hadoop参数大全
适用版本:4.3.0
主要配置文件:
- core
- hdfs
- yarn
- mapred
重要性表示如下:
- 重要
- 一般
- 不重要
core-default.xml
-
hadoop.common.configuration.version
配置文件的版本。
-
hadoop.tmp.dir=/tmp/hadoop-${user.name}
Hadoop的临时目录,其它目录会基于此路径。本地目录。
只可以设置一个值;建议设置到一个足够空间的地方,而不是默认的/tmp下
服务端参数,修改需重启 -
hadoop.security.authorization=false
是否开启安全服务验证。
建议不开启。认证操作比较复杂,在公司内部网络下,重要性没那么高
-
io.file.buffer.size=4096
在读写文件时使用的缓存大小。这个大小应该是内存Page的倍数。
建议1M
-
io.compression.codecs=null
压缩和解压缩编码类列表,用逗号分隔。这些类是使用Java ServiceLoader加载。
-
fs.defaultFS=file:///
默认文件系统的名称。URI形式。uri's的scheme需要由(fs.SCHEME.impl)指定文件系统实现类。 uri's的authority部分用来指定host, port等。默认是本地文件系统。
HA方式,这里设置服务名,例如:hdfs://mycluster1
HDFS的客户端访问HDFS需要此参数。 -
fs.trash.interval=0
以分钟为单位的垃圾回收时间,垃圾站中数据超过此时间,会被删除。如果是0,垃圾回收机制关闭。可以配置在服务器端和客户端。如果在服务器端配置trash无效,会检查客户端配置。如果服务器端配置有效,客户端配置会忽略。
建议开启,建议4320(3天)
垃圾回收站,如有同名文件被删除,会给文件顺序编号,例如:a.txt,a.txt(1) -
fs.trash.checkpoint.interval=0
以分钟为单位的垃圾回收检查间隔。应该小于或等于fs.trash.interval。如果是0,值等同于fs.trash.interval。每次检查器运行,会创建新的检查点。
建议设置为60(1小时)
-
dfs.ha.fencing.methods=null
HDFS的HA功能的防脑裂方法。可以是内建的方法(例如shell和sshfence)或者用户定义的方法。建议使用sshfence(hadoop:9922),括号内的是用户名和端口,注意,这需要NN的2台机器之间能够免密码登陆
fences是防止脑裂的方法,保证NN中仅一个是Active的,如果2者都是Active的,新的会把旧的强制Kill。
-
dfs.ha.fencing.ssh.private-key-files=null
使用sshfence时,SSH的私钥文件。 使用了sshfence,这个必须指定
-
ha.zookeeper.quorum=null
Ha功能,需要一组zk地址,用逗号分隔。被ZKFailoverController使用于自动失效备援failover。
-
ha.zookeeper.session-timeout.ms=5000
ZK连接超时。ZKFC连接ZK时用。设置一个小值可以更快的探测到服务器崩溃(crash),但也会更频繁的触发失效备援,在传输错误或者网络不畅时。建议10s-30s
-
hadoop.http.staticuser.user=dr.who
在网页界面访问数据使用的用户名。默认值是一个不真实存在的用户,此用户权限很小,不能访问不同用户的数据。这保证了数据安全。也可以设置为hdfs和hadoop等具有较高权限的用户,但会导致能够登陆网页界面的人能看到其它用户数据。实际设置请综合考虑。如无特殊需求。使用默认值就好
-
fs.permissions.umask-mode=22
在创建文件和目录时使用此umask值(用户掩码)。类linux上的文件权限掩码。可以使用8进制数字也可以使用符号,例如:"022" (8进制,等同于以符号表示的u=rwx,g=r-x,o=r-x),或者"u=rwx,g=rwx,o="(符号法,等同于8进制的007)。注意,8进制的掩码,和实际权限设置值正好相反,建议使用符号表示法,描述更清晰
-
io.native.lib.available=true
是否启动Hadoop的本地库,默认启用。本地库可以加快基本操作,例如IO,压缩等。
-
hadoop.http.filter.initializers=org.apache.hadoop.http.lib.StaticUserWebFilter
Hadoop的Http服务中,用逗号分隔的一组过滤器类名,每个类必须扩展自org.apache.hadoop.http.FilterInitializer。 这些组件被初始化,应用于全部用户的JSP和Servlet页面。 列表中定义的顺序就是过滤器被调用的顺序。
-
hadoop.security.authentication
安全验证规则,可以是simple和kerberos。simple意味着不验证。
-
hadoop.security.group.mapping=org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback
user到group的映射类。ACL用它以给定user获取group。默认实现是 org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback, 如果JNI有效,它将发挥作用,使用Hadoop的API去获取user的groups列表。如果JNI无效,会使用另一个基于shell的实现, ShellBasedUnixGroupsMapping。这个实现是基于Linux、Unix的shell的环境。
-
hadoop.security.groups.cache.secs=300
user到gourp映射缓存的有效时间。如果超时,会再次调用去获取新的映射关系然后缓存起来。
-
hadoop.security.service.user.name.key=null
如果相同的RPC协议被多个Server实现,这个配置是用来指定在客户端进行RPC调用时,使用哪个principal name去联系服务器。不建议使用
-
hadoop.security.uid.cache.secs=14400
安全选项。不建议使用
-
hadoop.rpc.protection=authentication
rpc连接保护。可取的值有authentication(认证), integrity(完整) and privacy(隐私)。不建议使用
-
hadoop.work.around.non.threadsafe.getpwuid=false
一些系统已知在调用getpwuid_r和getpwgid_r有问题,这些调用是非线程安全的。这个问题的主要表现特征是JVM崩溃。如果你的系统有这些问题,开启这个选项。默认是关闭的。
-
hadoop.kerberos.kinit.command=kinit
用来定期的向Hadoop提供新的Kerberos证书。所提供命令需要能够在运行Hadoop客户端的用户路径中查找到,否则,请指定绝对路径。不建议使用
-
hadoop.security.auth_to_local=null
映射kerberos principals(代理人)到本地用户名
-
io.bytes.per.checksum=512
每次进行校验和检查的字节数。一定不能大于io.file.buffer.size.
-
io.skip.checksum.errors=FALSE
是否跳过校验和错误,默认是否,校验和异常时会抛出错误。
-
io.serializations=org.apache.hadoop.io.serializer.WritableSerialization,org.apache.hadoop.io.serializer.avro.AvroSpecificSerialization,org.apache.hadoop.io.serializer.avro.AvroReflectSerialization
序列化类列表,可以被用来获取序列化器和反序列化器(serializers and deserializers)。
-
io.seqfile.local.dir=${hadoop.tmp.dir}/io/local
本地文件目录。sequence file在merge过程中存储内部数据的地方。可以是逗号分隔的一组目录。最好在不同磁盘以分散IO。实际不存在的目录会被忽略。
-
io.map.index.skip=0
跳过的索引实体数量在entry之间。默认是0。设置大于0的值可以用更少的内存打开大MapFiles。注意:MpaFile是一组Sequence文件,是排序后的,带内部索引的文件
-
io.map.index.interval=128
MapFile包含两个文件,数据文件和索引文件。每io.map.index.interval个记录写入数据文件,一条记录(行key,数据文件位置)写入索引文件。
-
fs.default.name=file:///
过时。使用(fs.defaultFS)代替
-
fs.AbstractFileSystem.file.impl=org.apache.hadoop.fs.local.LocalFs
文件系统实现类:file
-
fs.AbstractFileSystem.hdfs.impl=org.apache.hadoop.fs.Hdfs
文件系统实现类:hdfs
-
fs.AbstractFileSystem.viewfs.impl=org.apache.hadoop.fs.viewfs.ViewFs
文件系统实现类:viewfs (例如客户端挂载表)。
在实现federation特性时,客户端可以部署此系统,方便同时访问多个nameservice
-
fs.ftp.host=0.0.0.0
非Hdfs文件系统设置。暂不关注
-
fs.ftp.host.port=21
非Hdfs文件系统设置。暂不关注
-
fs.df.interval=60000
磁盘使用统计刷新间隔,以毫秒为单位
-
fs.s3.block.size=67108864
非Hdfs文件系统设置。暂不关注
-
fs.s3.buffer.dir=${hadoop.tmp.dir}/s3
非Hdfs文件系统设置。暂不关注
-
fs.s3.maxRetries=4
非Hdfs文件系统设置。暂不关注
-
fs.s3.sleepTimeSeconds=10
非Hdfs文件系统设置。暂不关注
-
fs.automatic.close=true
默认的,文件系统实例在程序退出时自动关闭,通过JVM shutdown hook方式。可以把此属性设置为false取消这种操作。这是一个高级选项,需要使用者特别关注关闭顺序。不要关闭
-
fs.s3n.block.size=67108864
非Hdfs文件系统设置。暂不关注
-
io.seqfile.compress.blocksize=1000000
SequenceFiles以块压缩方式压缩时,块大小大于此值时才启动压缩。
-
io.seqfile.lazydecompress=TRUE
懒惰解压,仅在必要时解压,仅对块压缩的SequenceFiles有效。
-
io.seqfile.sorter.recordlimit=1000000
在SequenceFiles.Sorter spill过程中,保存在内存中的记录数
-
io.mapfile.bloom.size=1048576
在BloomMapFile使用的布隆过滤器内存大小。
-
io.mapfile.bloom.error.rate=0.005
BloomMapFile中使用布隆过滤器失败比率. 如果减少这个值,使用的内存会成指数增长。
-
hadoop.util.hash.type=murmur
默认Hash算法实现. 'murmur':MurmurHash, 'jenkins':JenkinsHash.
-
ipc.client.idlethreshold=4000
连接数阀值,超过此值,需要进行空闲连接检查
-
ipc.client.kill.max=1