借鉴:https://blog.csdn.net/wangming520liwei/article/details/78923216

Hadoop 参数配置 详解

一、常用端口

组件

节点

默认端口

配置

用途说明

HDFS

DataNode

50010

dfs.datanode.address

datanode服务端口,用于数据传输

HDFS

DataNode

50075

dfs.datanode.http.address

http服务的端口

HDFS

DataNode

50475

dfs.datanode.https.address

https服务的端口

HDFS

DataNode

50020

dfs.datanode.ipc.address

ipc服务的端口

HDFS

NameNode

50070

dfs.namenode.http-address

http服务的端口

HDFS

NameNode

50470

dfs.namenode.https-address

https服务的端口

HDFS

NameNode

8020

fs.defaultFS

接收Client连接的RPC端口,用于获取文件系统metadata信息。

HDFS

journalnode

8485

dfs.journalnode.rpc-address

RPC服务

HDFS

journalnode

8480

dfs.journalnode.http-address

HTTP服务

HDFS

ZKFC

8019

dfs.ha.zkfc.port

ZooKeeper FailoverController,用于NN HA

YARN

ResourceManager

8032

yarn.resourcemanager.address

RM的applications manager(ASM)端口,ResourceManager对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等

YARN

ResourceManager

8030

yarn.resourcemanager.scheduler.address

scheduler组件的IPC端口,ResourceManager对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。

YARN

ResourceManager

8031

yarn.resourcemanager.resource-tracker.address

IPC

ResourceManager对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。

YARN

ResourceManager

8033

yarn.resourcemanager.admin.address

IPC

ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。

YARN

ResourceManager

8088

yarn.resourcemanager.webapp.address

http服务端口

ResourceManager天)
垃圾回收站,如有同名文件被删除,会给文件顺序编号,例如: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。

9.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=10

定义客户端最大数量,超过会被断开连接

ipc.client.connection.maxidletime=10000

毫秒,最大时间,超过后客户端会断开和服务器的连接。

ipc.client.connect.max.retries=10

客户端连接重试次数。

ipc.client.connect.max.retries.on.timeouts=45

在连接超时后,客户端连接重试次数

ipc.server.listen.queue.size=128

定义服务器端接收客户端连接的监听队列长度

ipc.server.tcpnodelay=false

在服务器端开启/关闭Nagle's算法,此算法可以延迟小数据包发送,从而达到网络流量更有效利用。但是这对小数据包是不利的。默认关闭。建议false,即开启Nagle算法

ipc.client.tcpnodelay=false

参考ipc.server.tcpnodelay,客户端参数。或许可以考虑关闭Nagle算法,增加客户端响应速度

hadoop.rpc.socket.factory.class.default=org.apache.hadoop.net.StandardSocketFactory

高级选项,暂不考虑

hadoop.rpc.socket.factory.class.ClientProtocol=null

高级选项,暂不考虑

hadoop.socks.server=null

高级选项,暂不考虑

net.topology.node.switch.mapping.impl=org.apache.hadoop.net.ScriptBasedMapping

机架感知实现类。

net.topology.script.file.name=null

配合ScriptBasedMapping使用。脚本文件。此脚本文件,输入是ip地址,输出是机架路径。

net.topology.script.number.args=100

机架感知脚本文件的参数最大数量。脚本每次运行被传递的参数,每个参数是一个ip地址

net.topology.table.file.name=null

在net.topology.script.file.name被设置为org.apache.hadoop.net.TableMapping时,可以使用此配置。文件格式是一个有两个列的文本文件,使用空白字符分隔。第一列是DNS或IP地址,第二列是机架路径。如无指定,使用默认机架(/default-rack)

file.stream-buffer-size=4096

非hdfs文件系统,暂不关注

s3.stream-buffer-size=4096

非hdfs文件系统,暂不关注

kfs.stream-buffer-size=4096

非hdfs文件系统,暂不关注

ftp.stream-buffer-size=4096

非hdfs文件系统,暂不关注

tfile.io.chunk.size=1048576

非hdfs文件系统,暂不关注

hadoop.http.authentication.type=simple

Oozie Http终端安全验证。可选值:simple | kerberos |#AUTHENTICATION_HANDLER_CLASSNAME#

建议simple,关闭验证

hadoop.http.authentication.token.validity=36000

安全选项。暂不关注

hadoop.http.authentication.signature.secret.file=${user.home}/hadoop-http-auth-signature-secret

安全选项。暂不关注

hadoop.http.authentication.cookie.domain=null

安全选项。暂不关注

hadoop.http.authentication.simple.anonymous.allowed=TRUE

安全选项。暂不关注

hadoop.http.authentication.kerberos.principal=HTTP/_HOST表示任意空闲端口。

xferPort dfs.datanode.address 50010 数据流地址   数据传输 infoPort    dfs.datanode.http.address 50075 ipcPort     dfs.datanode.ipc.address 50020命令

dfs.datanode.http.address=0.0.0.0:50075

DN的HTTP服务地址和端口。0表示任意空闲端口。

dfs.datanode.ipc.address=0.0.0.0:50020

DN的IPC地址和端口。0表示任意空闲端口。

dfs.namenode.rpc-address=0.0.0.0:50090

NN的RPC地址和端口

dfs.namenode.http-address=0.0.0.0:50070

NN的HTTP地址和端口。0表示任意空闲端口。

dfs.datanode.du.reserved=0

每个磁盘(volume)的保留空间,字节。要注意留足够的空间给非HDFS文件使用。建议保留磁盘容量的5%或者50G以上

dfs.namenode.name.dir.restore=FALSE

设置为true,允许NN尝试恢复之前失败的dfs.namenode.name.dir目录。在创建checkpoint是做此尝试。如果设置多个磁盘,建议允许

dfs.namenode.edits.dir=${dfs.namenode.name.dir}

本地文件,NN存放edits文件的目录。可以是逗号分隔的目录列表。edits文件会存储在每个目录,冗余安全。

dfs.namenode.shared.edits.dir=null

在多个NN中共享存储目录,用于存放edits文件。这个目录,由active写,由standby读,以保持命名空间数据一致。此目录不需要是dfs.namenode.edits.dir中列出的。在非HA集群中,它不会使用。建议使用qj方式,可以不关注这个选项

dfs.namenode.edits.journal-plugin.qjournal=org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager

qj方式共享edits。建议使用此方式

dfs.permissions.enabled=true

是否在HDFS中开启权限检查。

dfs.permissions.superusergroup=supergroup

超级用户组。仅能设置一个。

dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data

本地磁盘目录,HDFS数据应该存储Block的地方。可以是逗号分隔的目录列表(典型的,每个目录在不同的磁盘)。这些目录被轮流使用,一个块存储在这个目录,下一个块存储在下一个目录,依次循环。每个块在同一个机器上仅存储一份。不存在的目录被忽略。必须创建文件夹,否则被视为不存在。

dfs.replication=3

数据块副本数。此值可以在创建文件是设定,客户端可以只有设定,也可以在命令行修改。不同文件可以有不同的副本数。默认值用于未指定时。

dfs.replication.max=512

最大块副本数,不要大于节点总数。

dfs.namenode.replication.min=1

最小块副本数。在上传文件时,达到最小副本数,就认为上传是成功的

dfs.blocksize=67108864

块大小,字节。可以使用后缀: k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa)指定大小(就像128k, 512m, 1g,等待)。

dfs.client.block.write.retries=3

客户端写数据到DN时,最大重试次数。超过重试次数就会报出错误。

dfs.client.block.write.replace-datanode-on-failure.enable=true

在进行pipeline写数据(上传数据的方式)时,如果DN或者磁盘故障,客户端将尝试移除失败的DN,然后写到剩下的磁盘。一个结果是,pipeline中的DN减少了。这个特性是添加新的DN到pipeline。这是一个站点范围的选项。当集群规模非常小时,例如3个或者更小,集群管理者可能想要禁止掉此特性。

dfs.client.block.write.replace-datanode-on-failure.policy=DEFAULT

此属性仅在dfs.client.block.write.replace-datanode-on-failure.enable设置为true时有效。

ALWAYS: 总是添加新的DN

NEVER: 从不添加新的DN

DEFAULT: 设r是副本数,n是要写的DN数。在r>=3并且floor(r/2)>=n或者r>n(前提是文件是hflushed/appended)时添加新的DN。

dfs.heartbeat.interval=3

DN的心跳间隔,秒

dfs.namenode.handler.count=10

NN的服务线程数。用于处理RPC请求。

dfs.namenode.safemode.threshold-pct=0.999f

数据进入安全模式阀值,百分比,float形式,数据块达到最小副本数(dfs.namenode.replication.min)的百分比。值小于等于0意味着在退出安全模式前不等待数据修复。大于1的值将导致无法离开安全模式。

dfs.namenode.safemode.extension=30000

安全模式扩展存在时间,在需要的阀值达到后,毫秒。可以设置为0,或者比较短的一个时间,例如3秒

dfs.datanode.balance.bandwidthPerSec=1048576

在做数据平衡时,每个DN最大带宽占用,每秒字节。默认值是1M。建议可以到10M

dfs.hosts=null

文件名,包含了一个host列表,允许列表内机器连到NN。必须指定完整路径。如果值为空,全部hosts都允许连入。

dfs.hosts.exclude=null

文件名,包含了一个hosts列表,不允许列表内机器连到NN。必须指定完整路径。如果值为空。没有host被禁止。如果上述2个都设置并且有重合,dfs.hosts中优先级高。

dfs.stream-buffer-size=4096

文件流缓存大小。需要是硬件page大小的整数倍。在读写操作时,数据缓存大小。注意和core-default.xml中指定文件类型的缓存是不同的,这个是dfs共用的

dfs.namenode.num.extra.edits.retained=1000000

除最小的必须的editlog之外,额外保留的editlog文件数量。这是有用的,可以用于审核目的,或者HA设置一个远程Standby节点并且有时可能离线时,都需要保留一个较长的backlog。

典型的,每个edit大约几百字节,默认的1百万editlog大约有百兆到1G。注意:早先的extra edits文件可能操作这里设置的值,因为还有其它选项,例如dfs.namenode.max.extra.edits.segments.retained

建议值:2200,约3天的

dfs.datanode.handler.count=10

DN的服务线程数。这些线程仅用于接收请求,处理业务命令

dfs.datanode.failed.volumes.tolerated=0

可以接受的卷的失败数量。默认值0表示,任一个卷失败都会导致DN关闭。

建议设置此值,避免个别磁盘问题。如果此值超过真实磁盘数,将会报错,启动失败

dfs.namenode.support.allow.format=true

NN是否允许被格式化?在生产系统,把它设置为false,阻止任何格式化操作在一个运行的DFS上。

建议初次格式化后,修改配置禁止

dfs.client.failover.max.attempts=15

专家设置。客户端失败重试次数。

dfs.client.failover.connection.retries=0

专家设置。IPC客户端失败重试次数。在网络不稳定时建议加大此值

dfs.client.failover.connection.retries.on.timeouts=0

专家设置。IPC客户端失败重试次数,此失败仅指超时失败。在网络不稳定时建议加大此值

dfs.nameservices=null

nameservices列表。逗号分隔。

我们常用的仅配置一个,启动federation功能需要配置多个

dfs.nameservice.id=null

nameservice id,如果没有配置或者配置多个,由匹配到的本地节点地址配置的IP地址决定。我们进配置一个NS的情况下,建议这里不配置

dfs.ha.namenodes.EXAMPLENAMESERVICE=null

包含一个NN列表。EXAMPLENAMESERVICE是指具体的nameservice名称,通常就是dfs.nameservices中配置的。值是预备配置的NN的ID。

ID是自己取的,不重复就可以,例如nn1,nn2

dfs.ha.namenode.id=null

NN的ID,如果没有配置,由系统决定。通过匹配本地节点地址和配置的地址。

这里设置的是本机的NN的ID(此配置仅对NN生效),由于要配置2个NN,建议没有特殊需要,这里不进行配置

dfs.ha.automatic-failover.enabled=FALSE

是否开启自动故障转移。建议开启,true

dfs.namenode.avoid.write.stale.datanode=FALSE

决定是否避开在脏DN上写数据。写操作将会避开脏DN,除非超过一个配置的比率(dfs.namenode.write.stale.datanode.ratio)。

尝试开启

dfs.journalnode.rpc-address=0.0.0.0:8485

JournalNode RPC服务地址和端口

dfs.journalnode.http-address=0.0.0.0:8480

JournalNode的HTTP地址和端口。端口设置为0表示随机选择。

dfs.namenode.audit.loggers=default

审查日志的实现类列表,能够接收audit事件。它们需要实现org.apache.hadoop.hdfs.server.namenode.AuditLogger接口。默认值"default"可以用于引用默认的audit logger, 它使用配置的日志系统。安装客户自己的audit loggers可能影响NN的稳定性和性能。

建议default,开启

dfs.client.socket-timeout=60*1000

dfs.datanode.socket.write.timeout=8*60*1000

dfs.datanode.socket.reuse.keepalive=1000

dfs.namenode.logging.level=info

DFS的NN的日志等级。值可以是:info,dir(跟踪命名空间变动),"block" (跟踪块的创建删除,replication变动),或者"all".

dfs.namenode.secondary.http-address=0.0.0.0:50090

SNN的http服务地址。如果是0,服务将随机选择一个空闲端口。使用了HA后,就不再使用SNN了

dfs.https.enable=FALSE

允许HDFS支持HTTPS(SSL)。建议不支持

dfs.client.https.need-auth=FALSE

安全选项,暂不关注

dfs.https.server.keystore.resource=ssl-server.xml

安全选项,暂不关注

dfs.client.https.keystore.resource=ssl-client.xml

安全选项,暂不关注

dfs.datanode.https.address=0.0.0.0:50475

安全选项,暂不关注

dfs.namenode.https-address=0.0.0.0:50470

安全选项,暂不关注

dfs.datanode.dns.interface=default

DN汇报它的IP地址的网卡。我们给DN指定了0.0.0.0之类的地址,这个地址需要被解析成对外地址,这里指定的是网卡名,即那个网卡上绑定的IP是可以对外的IP,一般的,默认值就足够了

dfs.datanode.dns.nameserver=default

DNS的域名或者IP地址。DN用它来确定自己的域名,在对外联系和显示时调用。一般的,默认值就足够了

dfs.namenode.backup.address=0.0.0.0:50100

NN的BK节点地址和端口,0表示随机选用。使用HA,就不需要关注此选项了。建议不使用BK节点

dfs.namenode.backup.http-address=0.0.0.0:50105

使用HA,就不需要关注此选项了。建议不使用BK节点

dfs.namenode.replication.considerLoad=true

设定在选择存放目标时是否考虑负载。需要

dfs.default.chunk.view.size=32768

在浏览器中查看一个文件时,可以看到的字节数。

dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name

本地磁盘目录,NN存储fsimage文件的地方。可以是按逗号分隔的目录列表,fsimage文件会存储在全部目录,冗余安全。这里多个目录设定,最好在多个磁盘,另外,如果其中一个磁盘故障,不会导致系统故障,会跳过坏磁盘。由于使用了HA,建议仅设置一个。如果特别在意安全,可以设置2个

dfs.namenode.fs-limits.max-component-length=0

路径中每个部分的最大字节长度(目录名,文件名的长度)。0表示不检查长度。长文件名影响性能

dfs.namenode.fs-limits.max-directory-items=0

设置每个目录最多拥有多少个子目录或者文件。0表示无限制。同一目录下子文件和目录多影响性能

dfs.namenode.fs-limits.min-block-size=1048576

最小的Block大小,字节。在NN创建时强制验证。避免用户设定过小的Block Size,导致过多的Block,这非常影响性能。

dfs.namenode.fs-limits.max-blocks-per-file=1048576

每个文件最大的Block数。在NN写时强制检查。用于防止创建超大文件。

dfs.block.access.token.enable=FALSE

访问DN时是否验证访问令牌。建议false,不检查

dfs.block.access.key.update.interval=600

安全选项,暂不关注

dfs.block.access.token.lifetime=600

安全选项,暂不关注

dfs.datanode.data.dir.perm=700

本地数据目录权限设定。8进制或者符号方式都可以。

dfs.blockreport.intervalMsec=21600000

数据块汇报间隔,毫秒,默认是6小时。

dfs.blockreport.initialDelay=0

第一次数据块汇报时延迟,秒。目的是减轻NN压力?

dfs.datanode.directoryscan.interval=21600

DN的数据块扫描间隔,秒。磁盘上数据和内存中数据调整一致。

dfs.datanode.directoryscan.threads=1

线程池要有多少线程用来并发的压缩磁盘的汇报数据。

dfs.namenode.safemode.min.datanodes=0

NN收到回报的DN的数量的最小值,达不到此值,NN不退出安全模式。(在系统启动时发生作用)。<=0的值表示不关心DN数量,在启动时。大于DN实际数量的值会导致无法离开安全模式。建议不设置此值

dfs.namenode.max.objects=0

DFS支持的最大文件、目录、数据块数量。0无限制。

dfs.namenode.decommission.interval=30

NN周期性检查退役是否完成的间隔,秒。

dfs.namenode.decommission.nodes.per.interval=5

NN检查退役是否完成,每dfs.namenode.decommission.interval秒检查的节点数量。

dfs.namenode.replication.interval=3

NN周期性计算DN的副本情况的频率,秒。

dfs.namenode.accesstime.precision=3600000

HDFS文件的访问时间精确到此值,默认是1小时。0表示禁用访问时间。

dfs.datanode.plugins=null

DN上的插件列表,逗号分隔。

dfs.namenode.plugins=null

NN上的插件列表,逗号分隔。

dfs.bytes-per-checksum=512

每次计算校验和的字节数。一定不能大于dfs.stream-buffer-size。

dfs.client-write-packet-size=65536

客户端写数据时的包的大小。包是块中的更小单位数据集合

dfs.client.write.exclude.nodes.cache.expiry.interval.millis=600000

最大周期去让DN保持在例外节点队列中。毫秒。操过此周期,先前被排除的DN将被移除缓存并被尝试再次申请Block。默认为10分钟。

dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary

本地文件系统中,DFS SNN应该在哪里存放临时[用于合并|合并后](to merge)的Image。如果是逗号分隔的目录列表,Image文件存放多份。冗余备份。建议不使用SNN功能,忽略此配置

dfs.namenode.checkpoint.edits.dir=${dfs.namenode.checkpoint.dir}

建议不使用SNN功能,忽略此配置

dfs.namenode.checkpoint.period=3600

建议不使用SNN功能,忽略此配置

dfs.namenode.checkpoint.txns=1000000

建议不使用SNN功能,忽略此配置

dfs.namenode.checkpoint.check.period=60

建议不使用SNN功能,忽略此配置

dfs.namenode.checkpoint.max-retries=3

建议不使用SNN功能,忽略此配置

dfs.namenode.num.checkpoints.retained=2
建议不使用SNN功能,忽略此配置

dfs.namenode.num.extra.edits.retained=1000000

数量限制,额外的edits事务数。

dfs.namenode.max.extra.edits.segments.retained=10000

extra edit日志文件segments的最大数量。除了用于NN重启时的最小edits文件之外。一个segments包含多个日志文件

dfs.namenode.delegation.key.update-interval=86400000

NN中更新主代理令牌的时间间隔,毫秒。安全选项,不关注

dfs.namenode.delegation.token.max-lifetime=604800000

NN中更新主代理令牌的时间间隔,毫秒。安全选项,不关注

dfs.namenode.delegation.token.renew-interval=86400000

NN中更新主代理令牌的时间间隔,毫秒。安全选项,不关注

dfs.image.compress=FALSE

Image文件要压缩吗?

dfs.image.compression.codec=org.apache.hadoop.io.compress.DefaultCodec

Image文件压缩编码。必须是在io.compression.codecs中定义的编码。

dfs.image.transfer.timeout=600000

Image文件传输时超时。HA方式使用不到,可不关注

dfs.image.transfer.bandwidthPerSec=0

Image文件传输时可以使用的最大带宽,秒字节。0表示没有限制。HA方式使用不到,可不关注

dfs.datanode.max.transfer.threads=4096

= 旧参数 dfs.datanode.max.xcievers
DN上传送数据出入的最大线程数。

dfs.datanode.readahead.bytes=4193404

预读磁盘数据。如果Hadoop本地库生效,DN可以调用posix_fadvise系统获取页面数据到操作系统的缓存中。这个配置指定读取当前读取位置之前的字节数。设置为0,取消此功能。无本地库,此功能也无效。?

dfs.datanode.drop.cache.behind.reads=FALSE

在有些场景下,特别是对一些大的,并且不可能重用的数据,缓存在操作系统的缓存区是无用的。此时,DN可以配置自动清理缓存区数据,在已经发生向客户端之后。此功能自动失效,在读取小数据片时。(例如HBase的随机读写场景)。通过释放缓存,这在某些场景下可以提高性能。Hadoop本地库无效,此功能无效。看起来是一个可以尝试的特性

dfs.datanode.drop.cache.behind.writes=FALSE

同dfs.datanode.drop.cache.behind.reads相似。

dfs.datanode.sync.behind.writes=FALSE

如果是true,在写之后,DN将指示操作系统把队列中数据全部立即写磁盘。和常用的OS策略不同,它们可能在触发写磁盘之前等待30秒。Hadoop本地库无效,此功能无效。

dfs.client.failover.sleep.base.millis=500

专家设置。失败重试间的等待时间,毫秒。这里的值是个基本值,实际值会根据失败/成功次数递增/递减50%。第一次失败会立即重试。第二次将延迟至少dfs.client.failover.sleep.base.millis毫秒。依次类推。

dfs.client.failover.sleep.max.millis=15000

专家设置。失败重试见的等待时间最大值,毫秒。

dfs.ha.log-roll.period=120

StandbyNode要求Active滚动EditLog,由于StandBy只能从已经完成的Log Segments中读,所以Standby上的数据新鲜程度依赖于以如何的频率滚动日志。秒。另外,故障转移也会触发一次日志滚动,所以StandbyNode在Active之前,数据也会更新成最新的。秒,默认是2分钟。

dfs.ha.tail-edits.period=60

StandbyNode以此频率检测共享目录中最新的日志,秒。

dfs.ha.zkfc.port=8019

zkfc的rpc端口

dfs.support.append=TRUE

是否允许append。

dfs.client.use.datanode.hostname=FALSE

是否客户端应该使用DN的HostName,在连接DN时,默认是使用IP。

dfs.datanode.use.datanode.hostname=FALSE

是否DN应该使用HostName连接其它DN,在数据传输时。默认是是IP。

dfs.client.local.interfaces=null

逗号分隔的网卡列表,用于在客户端和DN之间传输数据时。当创建连接时,客户端随机选择一个并绑定它的socket到这个网卡的IP上。名字可以以网卡名(例如"eth0"),子网卡名(eg "eth0:0"),或者IP地址(which may be specified using CIDR notation to match a range of IPs)。

dfs.namenode.kerberos.internal.spnego.principal=${dfs.web.authentication.kerberos.principal}

安全选项,暂不关注

dfs.secondary.namenode.kerberos.internal.spnego.principal=${dfs.web.authentication.kerberos.principal}

安全选项,暂不关注

dfs.namenode.avoid.read.stale.datanode=FALSE

决定是否避开从脏DN上读数据。脏DN指在一个指定的时间间隔内没有收到心跳信息。脏DN将被移到可以读取节点列表的尾端。尝试开启

dfs.namenode.stale.datanode.interval=30000

标记一个DN是脏的时间间隔。例如,如果NN在此设定的时间内没有接收到来自某一个节点的心跳信息,此DN将被标记为脏的。此间隔不能太小,否则容易导致被频繁的标记为脏DN。

我们建议是1分钟

dfs.namenode.write.stale.datanode.ratio=0.5f

当全部DN被标记为脏DN的比率高于此阀值,停止不写数据到脏DN的策略,以免造成热点问题(有效的,可写的DN太少,压力太大)。

dfs.namenode.invalidate.work.pct.per.iteration=0.32f

高级属性。改变需小心。

dfs.namenode.replication.work.multiplier.per.iteration=2

高级属性。改变需小心。

dfs.webhdfs.enabled=FALSE

在NN和DN上开启WebHDFS (REST API)功能。

可以开启尝试

hadoop.fuse.connection.timeout=300

秒,在fuse_dfs中缓存libhdfs连接对象的超时时间。 小值使用内存小。大值可以加快访问,通过避开创建新的连接对象。

hadoop.fuse.timer.period=5

dfs.metrics.percentiles.intervals=null

Comma-delimited set of integers denoting the desired rollover intervals (in seconds) for percentile latency metrics on the Namenode and Datanode. By default, percentile latency metrics are disabled.

dfs.encrypt.data.transfer=FALSE

是否加密传输数据?仅需要配置在NN和DN。客户端可以自行判断。

dfs.encrypt.data.transfer.algorithm=null

可以设置为"3des"或"rc4"。否则使用默认的,通常是usually 3DES。3DES更安全,RC4更快。

dfs.datanode.hdfs-blocks-metadata.enabled=TRUE

布尔值,设定后台DN端是否支持DistributedFileSystem#getFileVBlockStorageLocations API。

dfs.client.file-block-storage-locations.num-threads=10

在调用DistributedFileSystem#getFileBlockStorageLocations()的并发RPC的线程数

dfs.client.file-block-storage-locations.timeout=60

Timeout (in seconds) for the parallel RPCs made in DistributedFileSystem#getFileBlockStorageLocations().

dfs.domain.socket.path=/var/run/hadoop-hdfs/dn._PORT

可选选项。socket文件路径,unix下。用来在DN和本地的HDFS客户端加快网络连接。如果字符串"_PORT"出现在路径中,它将被DN的TCP端口替换。

yarn-site.xml

yarn.app.mapreduce.am.resource.mb=1536

AM申请的内存

yarn.resourcemanager.address=0.0.0.0:8032

RM地址:端口

yarn.resourcemanager.scheduler.address=0.0.0.0:8030

调度器地址:端口

yarn.admin.acl=*

ACL中谁可以管理YARN集群

yarn.resourcemanager.admin.address=0.0.0.0:8033

RM管理接口地址:端口

yarn.resourcemanager.am.max-retries=1

AM重试最大次数。服务端参数。重启生效。

建议4

yarn.resourcemanager.nodes.include-path=null

存储有效节点列表的文件

yarn.resourcemanager.nodes.exclude-path=null

存储拒绝节点列表的文件。如和包含文件冲突,包含文件优先级高

yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler

调度器实现类。

建议使用公平调度器

yarn.scheduler.minimum-allocation-mb=1024

每个container想RM申请内存的最小大小。兆字节。内存请求小于此值,实际申请到的是此值大小。默认值偏大

yarn.scheduler.maximum-allocation-mb=8192

每个container向RM申请内存的最大大小,兆字节。申请值大于此值,将最多得到此值内存。

yarn.resourcemanager.recovery.enabled=FALSE

是否启动RM的状态恢复功能。如果true,必须指定yarn.resourcemanager.store.class。尝试启用

yarn.resourcemanager.store.class=null

用于持久存储的类。尝试开启

yarn.resourcemanager.max-completed-applications=10000

RM中保存的最大完成的app数量。内存中存储。

yarn.nodemanager.address=0.0.0.0:0

NM中的container管理器的地址:端口

yarn.nodemanager.env-whitelist=JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,YARN_HOME

container应该覆盖而不是使用NM的环境变量名单。允许container自己配置的环境变量

yarn.nodemanager.delete.debug-delay-sec=0

秒,一个app完成后,NM删除服务将删除app的本地文件目录和日志目录。为了诊断问题,把这个选项设置成足够大的值(例如,设置为10分钟),可以继续访问这些目录。设置此选项,需要重启NM。Yarn应用的工作目录根路径是yarn.nodemanager.local-dirs,Yarn应用日志目录的根路径是yarn.nodemanager.log-dirs。

调试问题时可用

yarn.nodemanager.local-dirs=${hadoop.tmp.dir}/nm-local-dir

本地文件存储目录,列表。一个应用的本地文件目录定位方式:${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}。每个container的工作目录,是此目录的子目录,目录名是container_${contid}。

非常重要,建议配置多个磁盘,平衡IO。

yarn.nodemanager.log-dirs=${yarn.log.dir}/userlogs

存储container日志的地方。一个应用的本地日志目录定位是:${yarn.nodemanager.log-dirs}/application_${appid}。每个container的日志目录在此目录下,名字是container_{$contid}。每个container目录中包含stderr, stdin, and syslog等container产生的文件

非常重要,建议配置多个磁盘

yarn.log-aggregation-enable=FALSE

是否允许日志汇聚功能。建议开启

yarn.log-aggregation.retain-seconds=-1

保存汇聚日志时间,秒,超过会删除,-1表示不删除。 注意,设置的过小,将导致NN垃圾碎片。建议3-7天= 7 * 86400 = 604800

yarn.nodemanager.log.retain-seconds=10800

保留用户日志的时间,秒。在日志汇聚功能关闭时生效。

建议7天

yarn.nodemanager.remote-app-log-dir=/tmp/logs

汇聚日志的地方,目录路径,HDFS系统。

对于开了权限检查的系统,注意权限问题。HDFS上。

yarn.nodemanager.remote-app-log-dir-suffix=logs

汇聚日志目录路径后缀。汇聚目录创建在{yarn.nodemanager.remote-app-log-dir}/${user}/{thisParam}

yarn.nodemanager.resource.memory-mb=8192

NM上可以用于container申请的物理内存大小,MB。

yarn.nodemanager.vmem-pmem-ratio=2.1

在设置container的内存限制时,虚拟内存到物理内存的比率。Container申请的内存如果超过此物理内存,可以以此比率获取虚拟内存用于满足需求。虚拟地址的是物理地址的倍数上限。建议设置的大点,例如:4.1,8.1,此虚拟内存并非内存,而是占用的虚拟地址。

yarn.nodemanager.webapp.address=0.0.0.0:8042

NM的网页界面地址和端口。

yarn.nodemanager.log-aggregation.compression-type=none

汇聚日志的压缩类型。汇聚日志是TFile格式文件。Hadoop-3315。可以使用的值有none,lzo,gz等。

可以尝试

yarn.nodemanager.aux-services=null

请配置为:mapreduce.shuffle,在Yarn上开启MR的必须项

yarn.nodemanager.aux-services.mapreduce.shuffle.class=org.apache.hadoop.mapred.ShuffleHandler

对应参考yarn.nodemanager.aux-services

mapreduce.job.jar=null

Job客户端参数。提交的job的jar文件。

mapreduce.job.hdfs-servers=${fs.defaultFS}

Job客户端参数。

yarn.application.classpath=$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/,$HADOOP_COMMON_HOME/share/hadoop/common/lib/,$HADOOP_HDFS_HOME/share/hadoop/hdfs/,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/,$YARN_HOME/share/hadoop/yarn/*,$YARN_HOME/share/hadoop/yarn/lib/*

YARN应用的CLASSPATH,逗号分隔列表。

yarn.app.mapreduce.am.job.task.listener.thread-count=30

MR AM处理RPC调用的线程数。

yarn.app.mapreduce.am.job.client.port-range=null

MR AM能够绑定使用的端口范围。例如:50000-50050,50100-50200。 如果你先要全部的有用端口,可以留空(默认值null)。

yarn.app.mapreduce.am.job.committer.cancel-timeout=60000

毫秒,如果job被kill了,等待output committer取消操作的时间。

yarn.app.mapreduce.am.scheduler.heartbeat.interval-ms=1000

MR AM发送心跳到RM的时间间隔,毫秒

yarn.app.mapreduce.client-am.ipc.max-retries=3

在重新连接RM获取Application状态前,客户端重试连接AM的次数。

yarn.app.mapreduce.client.max-retries=3

客户端重连RM/HS/AM的次数。这是基于ipc接口上的规则

yarn.ipc.client.factory.class=null

创建客户端IPC类的工厂类

yarn.ipc.serializer.type=protocolbuffers

使用哪种序列化类

yarn.ipc.server.factory.class=null

创建IPC服务类的工厂类

yarn.ipc.exception.factory.class=null

创建IPC异常的工厂类

yarn.ipc.record.factory.class=null

创建序列化记录的工厂类

yarn.ipc.rpc.class=org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC

RPC类实现类

yarn.resourcemanager.client.thread-count=50

RM用来处理客户端请求的线程数

yarn.am.liveness-monitor.expiry-interval-ms=600000

AM报告间隔,毫秒。?

yarn.resourcemanager.principal=null

安全选项

yarn.resourcemanager.scheduler.client.thread-count=50

调度器用于处理请求的线程数

yarn.resourcemanager.webapp.address=0.0.0.0:8088

RM的网页接口地址:端口

yarn.resourcemanager.resource-tracker.address=0.0.0.0:8031

yarn.acl.enable=TRUE

开启访问控制

yarn.resourcemanager.admin.client.thread-count=1

RM管理端口处理事务的线程数

yarn.resourcemanager.amliveliness-monitor.interval-ms=1000

RM检查AM存活的间隔

yarn.resourcemanager.container.liveness-monitor.interval-ms=600000

检查container存活的时间间隔,毫秒。建议短一些,例如3分钟

yarn.resourcemanager.keytab=/etc/krb5.keytab

安全选项

yarn.nm.liveness-monitor.expiry-interval-ms=600000

RM判断NM死亡的时间间隔。
非主动检查,被动等待,不连接时间超过此值
10分钟无检查到活动,判定NM死亡

yarn.resourcemanager.nm.liveness-monitor.interval-ms=1000

RM检查NM存活的时间间隔。

yarn.resourcemanager.resource-tracker.client.thread-count=50

处理资源跟踪调用的线程数。?

yarn.resourcemanager.delayed.delegation-token.removal-interval-ms=30000

安全选项

yarn.resourcemanager.application-tokens.master-key-rolling-interval-secs=86400

安全选项

yarn.resourcemanager.container-tokens.master-key-rolling-interval-secs=86400

安全选项

yarn.nodemanager.admin-env=MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX

应该从NM传送到container的环境变量

yarn.nodemanager.container-executor.class=org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor

启动containers的类。

yarn.nodemanager.container-manager.thread-count=20

用于container管理的线程数

yarn.nodemanager.delete.thread-count=4

mapred-site.xml

mapreduce.job.maps

默认 每个job的maptask数量,默认值是2

mapreduce.job.reduces

默认 每个job的reducetask数量,默认值是1

mapreduce.reduce.shuffle.parallelcopies

shuffle的并行数量,默认值是5

mapreduce.task.timeout

一个task 超时时间默认600000milliseconds

(转)hadoop 配置文件解释的更多相关文章

  1. [分享] 封装工具ES4配置文件解释

    [分享] 封装工具ES4配置文件解释 LiQiang 发表于 2015-2-3 14:41:21 https://www.itsk.com/thread-346132-1-4.html [分享] 封装 ...

  2. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  3. hadoop分布式安装部署详细视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)

    参考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...

  4. mongd配置文件解释

    mongd配置文件解释 系统日志配置 systemLog: verbosity: <int> quiet: <boolean> traceAllExceptions: < ...

  5. hadoop分布式安装部署具体视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)

    參考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...

  6. Linux系统 /etc目录下主要配置文件解释

    这些都是比较有实用性的系统配置,收藏下,以备不时之需!以下是etc下重要配置文件解释: 1./etc/hosts  #文件格式: IPaddress hostname aliases #文件功能: 提 ...

  7. hadoop配置文件加载顺序(转)

    原文  http://www.cnblogs.com/wolfblogs/p/4147485.html 用了一段时间的hadoop,现在回来看看源码发现别有一番味道,温故而知新,还真是这样的 在使用h ...

  8. Hadoop配置文件

    部分内容参考:http://www.linuxqq.net/archives/964.html  http://slaytanic.blog.51cto.com/2057708/1100974/ ht ...

  9. Hadoop配置文件-mapred-site.xml

    name value Description hadoop.job.history.location   job历史文件保存路径,无可配置参数,也不用写在配置文件里,默认在logs的history文件 ...

随机推荐

  1. springboot之手动控制事务

    一.事务的重要性,相信在实际开发过程中,都有很深的了解了.但是存在一个问题我们经常在开发的时候一般情况下都是用的注解的方式来进行事务的控制,说白了基于spring的7种事务控制方式来进行事务的之间的协 ...

  2. Java Web-Redis学习

    Java Web-Redis学习 基本概念 Redis是一款高性能的NOSQL系列的.非关系型数据库 NOSQL:not only SQL,是一系列非关系型数据库的总称,例如radis.hbase等数 ...

  3. JavaScript 基础(数据类型、函数、流程控制、对象)

    一.JavaScript概述 1.1 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名Script ...

  4. SpringBoot启动流程与源码

    一 main方法作为程序的入口,执行SpringApplication.run(),传入参数是启动类的class对象@SpringBootApplication注解 二 run中首先new Sprin ...

  5. springboot mvc自动配置(目录)

    对于长时间基于spring框架做web开发的我们,springmvc几乎成为了开发普通web项目的标配.本系列文章基于快速启动的springboot,将从源码角度一点点了解springboot中mvc ...

  6. iOS - App上架流程(复习+已用xcode8)

    一.前言: 今天又要上架一款APP,顺便来复习一下APP上架流程 下面就来详细讲解一下具体流程步骤. 二.准备: 一个已付费的开发者账号(账号类型分为个人(Individual).公司(Company ...

  7. 【js】字符串反转(倒序)的多种处理方式

    今天发布一篇关于字符串反转的几种方式(一种问题的解决方案不是只有一种). 方式1: 这种方式比较简单,推荐使用 字符串转数组,反转数组,数组转字符串. split(""):根据空字 ...

  8. Linux下安装php 扩展fileinfo

    在项目初始部署环境的时候,可能考虑的并不全面,就会少装一些扩展,这里讲解如何添加fileinfo扩展 1.找到php安装的压缩包 2.将压缩包cp到 /data目录下,并解压 cp php-7.0.3 ...

  9. Linux 之 用户、用户组以及权限

    拥有者(user),拥有组(group),其他人(other) 由于Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以 ...

  10. Qt中C++与QML交互

    ###main.c部分int main(int argc, char *argv[]){    QString info1 = "xxxxxxxxxxx";    QString ...