Hadoop参数汇总

本文详细汇总了Hadoop在Linux、JVM和Hadoop本身的关键配置参数,包括文件描述符优化、JVM性能调整、Hadoop的core-default.xml、hdfs-default.xml、yarn-default.xml中的重要参数设置,涉及安全验证、数据缓存、垃圾回收、防脑裂策略等多个方面。
摘要由CSDN通过智能技术生成

Hadoop参数汇总

@(hadoop)[配置]

linux参数

以下参数最好优化一下:

  1. 文件描述符ulimit -n
  2. 用户最大进程 nproc (hbase需要 hbse book)
  3. 关闭swap分区
  4. 设置合理的预读取缓冲区
  5. 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值