目录

 

Hadoop可配置参数详解

<1> core-site.xml

<2> hdfs-site.xml

<3>mapred-site.xml

<4>yarn-site.xml

参考


Hadoop可配置参数详解

配置文件名

配置对象

主要内容

core-site.xml

集群全局参数

用于定义系统级别的参数,如HDFS  URL、Hadoop的临时目录等

hdfs-site.xml

HDFS参数

如名称节点和数据节点的存放位置、文件

副本的个数、文件读取权限等

mapred-site.xml

Mapreduce参数

包括JobHistory Server和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等

yarn-site.xml

集群资源管理系统参数

配置 ResourceManager,NodeManager 的通信端口,web监控端口等

<1> core-site.xml

name

 value

Description

fs.default.name

hdfs://master:9000

定义master的URI和端口

fs.checkpoint.dir

${hadoop.tmp.dir}(默认)
/dfs/namesecondary

SNN的元数据以,号隔开,hdfs会把元数据冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉

fs.checkpoint.period

1800

定义ND的备份间隔时间,秒为单位,只对SNN效,默认一小时

fs.checkpoint.size

33554432

以日志大小间隔做备份间隔,只对SNN生效,默认64M

fs.checkpoint.edits.dir

${fs.checkpoint.dir}(默认)

SNN的事务文件存储的目录,以,号隔开,hdfs会把事务文件冗余复制到这些目录

fs.trash.interval

10800

HDFS垃圾箱设置,可以恢复误删除,分钟数,0为禁用,添加该项无需重启hadoop

hadoop.tmp.dir

/tmp/Hadoop

临时文件夹,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务。

hadoop.http.filter.initializers

org.apache.hadoop.security.
AuthenticationFilterInitializer
(排版调整,实际配置不要回车)

需要jobtracker,tasktracker
NN,DN等http访问端口用户验证使用,需配置所有节点

hadoop.http.authentication.type

simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#

验证方式,默认为简单,也可自己定义class,需配置所有节点

hadoop.http.authentication.token.validity

36000

验证令牌的有效时间,需配置所有节点

hadoop.http.authentication.signature.secret
 

默认可不写参数

默认不写在hadoop启动时自动生成私密签名,需配置所有节点

hadoop.http.authentication.cookie.domain

domian.tld

http验证所使用的cookie的域名,IP地址访问则该项无效,必须给所有节点都配置域名才可以。

hadoop.http.authentication. simple.anonymous.allowed

true | false

简单验证专用,默认允许匿名访问,true

hadoop.http.authentication.kerberos.principal

HTTP/localhost@$LOCALHOST

Kerberos验证专用,参加认证的实体机必须使用HTTP作为K的Name

hadoop.http.authentication.kerberos.keytab

/home/xianglei/hadoop.keytab

Kerberos验证专用,密钥文件存放位置

hadoop.security.authorization

true|false

Hadoop服务层级验证安全验证,需配合hadoop-policy.xml使用,配置好以后用dfsadmin,mradmin -refreshServiceAcl刷新生效

hadoop.security.authentication

simple | kerberos

hadoop本身的权限验证,非http访问,simple或者kerberos

hadoop.logfile.size

1000000000

设置日志文件大小,超过则滚动新日志

hadoop.logfile.count

20

最大日志数

io.bytes.per.checksum

1024

每校验码所校验的字节数,不要大于io.file.buffer.size

io.skip.checksum.errors

true | false

处理序列化文件时跳过校验码错误,不抛异常。默认false

io.serializations

org.apache.hadoop.io.serializer.WritableSerialization

序列化的编解码器

io.seqfile.compress.blocksize

1024000

块压缩的序列化文件的最小块大小,字节

io.compression.codecs

org.apache.hadoop.io.compress.DefaultCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,

org.apache.hadoop.io.compress.SnappyCodec
(排版调整,实际配置不要回车)

Hadoop所使用的编解码器,gzip、bzip2为自带,lzo需安装hadoopgpl或者kevinweil,逗号分隔。
snappy需要单独安装并修改hadoop-env.sh配置LD_LIBRARY_PATH=snappy类库位置

io.compression.codec.lzo.class

com.hadoop.compression.lzo.LzoCodec

LZO所使用的压缩编码器 

io.file.buffer.size

131072

用作序列化文件处理时读写buffer的大小

webinterface.private.actions

true | false

设为true,则JT和NN的tracker网页会出现杀任务删文件等操作连接,默认是false

topology.script.file.name

/hadoop/bin/RackAware.py

机架感知脚本位置 

topology.script.number.args

1000

机架感知脚本管理的主机数,IP地址 

 

<2> hdfs-site.xml

 name

 value

Description 

dfs.default.chunk.view.size

32768

namenode的http访问页面中针对每个文件的内容显示大小,通常无需设置。

dfs.datanode.du.reserved

1073741824

每块磁盘所保留的空间大小,需要设置一些,主要是给非hdfs文件使用,默认是不保留,0字节

dfs.name.dir

/opt/data1/hdfs/name,
/opt/data2/hdfs/name,
/nfs/data/hdfs/name

NN所使用的元数据保存,一般建议在nfs上保留一份,作为1.0的HA方案使用,也可以在一台服务器的多块硬盘上使用

dfs.web.ugi

nobody,nobody

NN,JT等所使用的web tracker页面服务器所使用的用户和组

dfs.permissions

true | false

dfs权限是否打开,我一般设置false,通过开发工具培训别人界面操作避免误操作,设置为true有时候会遇到数据因为权限访问不了。

dfs.permissions.supergroup

supergroup

设置hdfs超级权限的组,默认是supergroup,启动hadoop所使用的用户通常是superuser。

dfs.data.dir

/opt/data1/hdfs/data,
/opt/data2/hdfs/data,
/opt/data3/hdfs/data,
...

真正的datanode数据保存路径,可以写多块硬盘,逗号分隔

dfs.datanode.data.dir.perm

755

datanode所使用的本地文件夹的路径权限,默认755

dfs.replication

3

hdfs数据块的复制份数,默认3,理论上份数越多跑数速度越快,但是需要的存储空间也更多。有钱人可以调5或者6

dfs.replication.max

512

有时dn临时故障恢复后会导致数据超过默认备份数。复制份数的最多数,通常没什么用,不用写配置文件里。

dfs.replication.min

1

最小份数,作用同上。

dfs.block.size

134217728

每个文件块的大小,我们用128M,默认是64M。这个计算需要128*1024^2,我碰上过有人直接写128000000,十分浪漫。

dfs.df.interval

60000

磁盘用量统计自动刷新时间,单位是毫秒。

dfs.client.block.write.retries

3

数据块写入的最多重试次数,在此次数之前不会捕获失败。

dfs.heartbeat.interval

3

DN的心跳检测时间间隔。秒

dfs.namenode.handler.count

10

NN启动后展开的线程数。

dfs.balance.bandwidthPerSec

1048576

做balance时所使用的每秒最大带宽,使用字节作为单位,而不是bit

dfs.hosts

/opt/hadoop/conf/hosts.allow

一个主机名列表文件,这里的主机是允许连接NN的,必须写绝对路径,文件内容为空则认为全都可以。

dfs.hosts.exclude

/opt/hadoop/conf/hosts.deny

基本原理同上,只不过这里放的是禁止访问NN的主机名称列表。这在从集群中摘除DN会比较有用。

dfs.max.objects

0

dfs最大并发对象数,HDFS中的文件,目录块都会被认为是一个对象。0表示不限制

dfs.replication.interval

3

NN计算复制块的内部间隔时间,通常不需写入配置文件。默认就好

dfs.support.append

true | false

新的hadoop支持了文件的APPEND操作,这个就是控制是否允许文件APPEND的,但是默认是false,理由是追加还有bug。

dfs.datanode.failed.volumes.tolerated

0

能够导致DN挂掉的坏硬盘最大数,默认0就是只要有1个硬盘坏了,DN就会shutdown。

dfs.secondary.http.address

0.0.0.0:50090

SNN的tracker页面监听地址和端口

dfs.datanode.address

0.0.0.0:50010

DN的服务监听端口,端口为0的话会随机监听端口,通过心跳通知NN

dfs.datanode.http.address

0.0.0.0:50075

DN的tracker页面监听地址和端口

dfs.datanode.ipc.address

0.0.0.0:50020

DN的IPC监听端口,写0的话监听在随机端口通过心跳传输给NN

dfs.datanode.handler.count

3

DN启动的服务线程数

dfs.http.address

0.0.0.0:50070

NN的tracker页面监听地址和端口

dfs.https.enable

true | false

NN的tracker是否监听在HTTPS协议,默认false

dfs.datanode.https.address

0.0.0.0:50475

DN的HTTPS的tracker页面监听地址和端口

dfs.https.address

0.0.0.0:50470

NN的HTTPS的tracker页面监听地址和端口

dfs.datanode.max.xcievers

2048

相当于linux下的打开文件最大数量,文档中无此参数,当出现DataXceiver报错的时候,需要调大。默认256

 

<3>mapred-site.xml

 name

value

Description

hadoop.job.history.location

 

job历史文件保存路径,无可配置参数,也不用写在配置文件里,默认在logs的history文件夹下。

hadoop.job.history.user.location

 

用户历史文件存放位置

io.sort.factor

30

这里处理流合并时的文件排序数,我理解为排序时打开的文件数

io.sort.mb

600

排序所使用的内存数量,单位兆,默认1,我记得是不能超过mapred.child.java.opt设置,否则会OOM

mapred.job.tracker

hadoopmaster:9001

连接jobtrack服务器的配置项,默认不写是local,map数1,reduce数1

mapred.job.tracker.http.address

0.0.0.0:50030

jobtracker的tracker页面服务监听地址

mapred.job.tracker.handler.count

15

jobtracker服务的线程数

mapred.task.tracker.report.address

127.0.0.1:0

tasktracker监听的服务器,无需配置,且官方不建议自行修改

mapred.local.dir

/data1/hdfs/mapred/local,
/data2/hdfs/mapred/local,
...

mapred做本地计算所使用的文件夹,可以配置多块硬盘,逗号分隔

mapred.system.dir

/data1/hdfs/mapred/system,
/data2/hdfs/mapred/system,
...

mapred存放控制文件所使用的文件夹,可配置多块硬盘,逗号分隔。

mapred.temp.dir

/data1/hdfs/mapred/temp,
/data2/hdfs/mapred/temp,
...

mapred共享的临时文件夹路径,解释同上。

mapred.local.dir.minspacestart

1073741824

本地运算文件夹剩余空间低于该值则不在本地做计算。字节配置,默认0

mapred.local.dir.minspacekill

1073741824

本地计算文件夹剩余空间低于该值则不再申请新的任务,字节数,默认0

mapred.tasktracker.expiry.interval

60000

TT在这个时间内没有发送心跳,则认为TT已经挂了。单位毫秒

mapred.map.tasks

2

默认每个job所使用的map数,意思是假设设置dfs块大小为64M,需要排序一个60M的文件,也会开启2个map线程,当jobtracker设置为本地是不起作用。

mapred.reduce.tasks

1

解释同上

mapred.jobtracker.restart.recover

true | false

重启时开启任务恢复,默认false

mapred.jobtracker.taskScheduler

org.apache.hadoop.mapred.
CapacityTaskScheduler

org.apache.hadoop.mapred.
JobQueueTaskScheduler

org.apache.hadoop.mapred.
FairScheduler

重要的东西,开启任务管理器,不设置的话,hadoop默认是FIFO调度器,其他可以使用公平和计算能力调度器

mapred.reduce.parallel.copies

10

reduce在shuffle阶段使用的并行复制数,默认5

mapred.child.java.opts

-Xmx2048m

-Djava.library.path=
/opt/hadoopgpl/native/

Linux-amd64-64

每个TT子进程所使用的虚拟机内存大小

tasktracker.http.threads

50

TT用来跟踪task任务的http server的线程数

mapred.task.tracker.http.address

0.0.0.0:50060

TT默认监听的httpIP和端口,默认可以不写。端口写0则随机使用。

mapred.output.compress

true | false

任务结果采用压缩输出,默认false,建议false

mapred.output.compression.codec

org.apache.hadoop.io.
compress.DefaultCodec

输出结果所使用的编解码器,也可以用gz或者bzip2或者lzo或者snappy等

mapred.compress.map.output

true | false

map输出结果在进行网络交换前是否以压缩格式输出,默认false,建议true,可以减小带宽占用,代价是会慢一些。

mapred.map.output.compression.codec

com.hadoop.compression.
lzo.LzoCodec

map阶段压缩输出所使用的编解码器

map.sort.class

org.apache.hadoop.util.
QuickSort

map输出排序所使用的算法,默认快排。

mapred.hosts

conf/mhost.allow

允许连接JT的TT服务器列表,空值全部允许

mapred.hosts.exclude

conf/mhost.deny

禁止连接JT的TT列表,节点摘除是很有作用。

mapred.queue.names

ETL,rush,default

配合调度器使用的队列名列表,逗号分隔

mapred.tasktracker.map.
tasks.maximum

12

每服务器允许启动的最大map槽位数。

mapred.tasktracker.reduce.
tasks.maximum

6

每服务器允许启动的最大reduce槽位数

 

<4>yarn-site.xml

hadoop 的yarn-site.xml文件中涉及到的其他配置项按照组件可以分成两类,其中之一是对 ResourceManager 的配置,主要配置项有:

  • yarn.resourcemanager.address:该配置项用于提示 ResourceManager 暴露给 Client 的地址。Client 可以利用这个地址向 ResourceManager 提交应用程序,也可以用来杀死某个应用程序等。其默认端口是 8032 ,而 URL 是 ResourceManager 的 hostname ,在本课程中是 localhost (对于后面的相关设置项也是一样)。
  • yarn.resourcemanager.scheduler.address:该配置项用于提示 ResourceManager 暴露给 ApplicationMaster 的访问地址。后者可以通过该地址从 ResourceManager 处申请和释放资源,默认端口是 8030 。
  • yarn.resourcemanager.resource-tracker.address:该配置项用于提示 ResourceManager 暴露给 NodeManager 的地址。后者可以通过该地址向 ResourceManager 发送心跳,也可以拉取到待执行的任务,默认端口是8031。
  • yarn.resourcemanager.admin.address: ResourceManager 暴露给管理员的访问地址,后者可以通过该地址向 ResourceManager 发送用于管理目的的各项命令,其默认端口是 8033 。
  • yarn.resourcemanager.webapp.address:ResourceManager 对外暴露的 WebUI 地址,我们稍后就会在浏览器中通过访问该地址来查看集群的各类信息,其默认端口是 8088 。
  • yarn.resourcemanager.scheduler.class:待启用的 ResourceManager 调度器的主类名称。该选项用于配置调度器的类型,可以在 FIFO、CapacityScheduler 以及 FairScheduler 等调度器名称中进行选择。
  • yarn.resourcemanager.resource-tracker.client.thread-count:该选项用于配置 Handler 的线程数量。Handler 可以处理来自 NodeManager 的 RPC 请求,默认情况下有 50 个 Handler 线程。
  • yarn.resourcemanager.scheduler.client.thread-count:与上一选项类似,但这个 Handler 用于处理来自 ApplicationMaster 的 RPC 请求。
  • yarn.scheduler.minimum-allocation-mb:用于配置单个调度器可申请的最小的内存资源数量,即运行 MapReduce 作业的时候,每个 Task 最少可以申请到的内存容量,默认是 1024MB 。同样的参数还有 yarn.scheduler.maximum-allocation-mb,指的是最大的内存资源数量,默认情况下最多可申请 3072MB 。
  • yarn.scheduler.minimum-allocation-vcores:单个调度器可以申请到的最小虚拟 CPU 核数(vCPU)。例如默认值 1 表示 MapRedce 作业中的每个 Task 最少可以申请到 1 个虚拟 CPU 。同样的参数还有 yarn.scheduler.maximum-allocation-vcores,默认情况下最多可以申请 32 个虚拟 CPU 。
  • yarn.resourcemanager.nodes.exclude-path:该选项用于指示 NodeManager 的黑名单。具体而言,若发现某些 NodeManager 存在故障率或者任务执行失败率非常高的问题,就可以通过该参数将其之加到黑名单中。类似的参数还有 yarn.resourcemanager.nodes.include-path,作用是相反的,即白名单。
  • yarn.resourcemanager.nodemanagers.heartbeat-interval-ms:该参数用于配置 NodeManager 的心跳间隔时间,默认值是 1000 毫秒。

另一类是对 NodeManager 的配置,除了刚刚提到的 aux-services ,其他的主要配置项有:

  • yarn.nodemanager.resource.memory-mb:NodeManager 的可用物理内存总量,需要注意这个参数一旦被设置,在 YARN 的整个运行过程中不允许被动态修改。其默认值是 8192MB ,即便实际可用物理内存不足这个数量,YARN 也会使用该值进行工作。
  • yarn.nodemanager.vmem-pmem-ratio:该配置项用于设置一个比例,即每使用 1MB 的物理内存最多可以用多大的虚拟内存,默认情况下该比例为 2.1 。
  • yarn.nodemanager.resource.cpu-vcores:NodeManager 的可用虚拟 CPU 总数,默认值是 8 个。
  • yarn.nodemanager.local-dirs:NodeManager 的中间结果存放目录路径,允许配置多个目录。 默认值:${hadoop.tmp.dir}/nm-local-dir
  • yarn.nodemanager.log-dirs:NodeManager 的日志存放目录路径,该配置项允许配置多个目录。
  • yarn.nodemanager.log.retain-seconds:NodeManager 的日志的最长存放时间,默认情况下是 10800 秒,即 3 个小时。

参考

core-site.xm:https://blog.csdn.net/iteye_3893/article/details/82617400

                     官网:http://hadoop.apache.org/docs/r2.6.1/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml:https://blog.csdn.net/iteye_3893/article/details/82617401

                     官网:http://hadoop.apache.org/docs/r2.6.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

mapred-site.xml:https://blog.csdn.net/gyxinguan/article/details/73996570

                     官网:http://hadoop.apache.org/docs/r2.6.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

yarn-site.xml:http://blog.sina.com.cn/s/blog_9b85a32d0102ysor.html

                     官网:http://hadoop.apache.org/docs/r2.6.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐