Hadoop几个重要的参数配置

本文详细探讨了Hadoop生态系统中几个至关重要的配置参数,包括DFS的副本数、MapReduce的任务并行度以及YARN的内存设置。通过合理调整这些参数,可以优化Hadoop集群的性能和资源利用率,确保大数据处理的高效进行。
摘要由CSDN通过智能技术生成
core-site.xml

配置项        缺省值        配置说明
hadoop.tmp.dir        /tmp/hadoop-${user.name}        只可以设置一个值;建议设置到一个足够空间的地方,而不是默认的/tmp下,服务端参数,修改需重启
fs.defaultFS        file:///        hdfs://node1:9000 默认文件系统的名称。URI形式。uri's的scheme需要由(fs.SCHEME.impl)指定文件系统实现类。 uri's的authority部分用来指定host, port等。默认是本地文件系统。
io.file.buffer.size        4096        131072 在序列文件中使用的读/写缓冲区的大小。单位kb
hdfs-site.xml

配置项        缺省值        配置说明
dfs.blocksize        134217728        块大小的设置。以字节为新文件的默认块大小。您可以使用以下后缀(大小写不敏感):k、m、g、t、p、e来指定大小(比如128k、512m、1g等等),或者以字节为单位提供完整的大小(如134217728 -> 128 MB)。
dfs.namenode.secondary.http-address        0.0.0.0:50090        node1:50090 SecondaryNameNode地址和端口
dfs.replication        3        数据块副本数。当创建文件时,可以指定复制的实际数量。如果在创建时没有指定复制,则使用缺省值。
dfs.namenode.name.dir        file://${hadoop.tmp.dir}/dfs/name        file:/opt/data/hadoop/hdfs/name 本地磁盘目录,NN存储fsimage文件的地方。可以是按逗号分隔的目录列表,fsimage文件会存储在全部目录,冗余安全。这里多个目录设定,最好在多个磁盘,另外,如果其中一个磁盘故障,不会导致系统故障,会跳过坏磁盘。由于使用了HA,建议仅设置一个。如果特别在意安全,可以设置2个
dfs.datanode.data.dir        file://${hadoop.tmp.dir}/dfs/data        本地磁盘目录,HDFS数据应该存储Block的地方。可以是逗号分隔的目录列表(典型的,每个目录在不同的磁盘)。这些目录被轮流使用,一个块存储在这个目录,下一个块存储在下一个目录,依次循环。每个块在同一个机器上仅存储一份。不存在的目录被忽略。必须创建文件夹,否则被视为不存在。
yarn-site.xml

配置项        缺省值        配置说明
yarn.resourcemanager.hostname        0.0.0.0        RM的主机名 配置:master或node1 xxx.xxx.xxx.xxx
yarn.nodemanager.aux-services                 一个逗号分隔的服务列表,服务名称应该只包含A-za-z0-9_,不能从数字开始,请配置为:mapreduce.shuffle,在Yarn上开启MR的必须项
yarn.nodemanager.vmem-check-enabled        true        是否对容器执行虚拟内存限制。
yarn.resourcemanager.address        ${yarn.resourcemanager.hostname}:8032        在RM中应用程序管理器接口的地址。
yarn.resourcemanager.scheduler.address        ${yarn.resourcemanager.hostname}:8030        调度程序的接口地址
yarn.resourcemanager.resource-tracker.address        ${yarn.resourcemanager.hostname}:8031
yarn.resourcemanager.admin.address        ${yarn.resourcemanager.hostname}:8033        RM管理接口的地址
yarn.resourcemanager.webapp.address        ${yarn.resourcemanager.hostname}:8088        RM的网页接口地址:端口
yarn.nodemanager.resource.cpu-vcores        8        容器虚拟CPU核数,cdh默认8,但CM会自动检测内核数并修改。在为容器分配资源时,RM调度程序使用它。这并不用于限制纱线容器使用的物理内核的数量。
yarn.nodemanager.resource.memory-mb        8192        物理内存的大小,在MB中,可以分配给容器。NM上可以用于container申请的物理内存大小,MB。
yarn.nodemanager.pmem-check-enabled        true        是否对容器执行物理限制
yarn.nodemanager.vmem-check-enabled        true        是否对容器进行虚拟内存限制
yarn.nodemanager.vmem-pmem-ratio        2.1        在设置container的内存限制时,虚拟内存到物理内存的比率。Container申请的内存如果超过此物理内存,可以以此比率获取虚拟内存用于满足需求。虚拟地址的是物理地址的倍数上限。建议设置的大点,例如:4.1,8.1,此虚拟内存并非内存,而是占用的虚拟地址。
yarn.scheduler.maximum-allocation-mb        8192        每个container向RM申请内存的最大大小,兆字节。申请值大于此值,将最多得到此值内存。
yarn.scheduler.minimum-allocation-mb        1024        每个container向RM申请内存的最小大小。兆字节。内存请求小于此值,实际申请到的是此值大小。默认值偏大
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产生的文件 。非常重要,建议配置多个磁盘,平衡IO。
mapred-site.xml

配置项        缺省值        配置说明
mapreduce.framework.name        local        执行MapReduce作业的运行时框架.local,classic ,yarn
mapreduce.jobhistory.address        0.0.0.0:10020        MapReduce任务历史服务器IPC主机:端口
mapreduce.jobhistory.webapp.address        0.0.0.0:19888        MapReduce任务历史服务器Web UI主机:端口
mapreduce.job.reduces        1        设置reduce的数量。一般来说在job里面都会通过conf来设置reduce的数量,不采用这个参数。至于reduce的数量,可以根据自己的reduce业务逻辑复杂度以及输出的数据量来调整。
mapred.child.java.opts        -Xmx200m        这个参数是配置每个map或reduce使用的内存数量。默认的是200M。对于这个参数,我个人认为,如果内存是8G,CPU有8个核,那么就设置成1G就可以了。实际上,在map和reduce的过程中对内存的消耗并不大,但是如果配置的太小,则有可能出现”无可分配内存”的错误。所以,对于这个配置我总结了一个简单的公式:map/reduce的并发数量(总和不大于CPU核数)×mapred.child.java.opts < 该节点机器的总内存。当然也可以等于,不过有点风险而已。
mapreduce.reduce.shuffle.parallelcopies        5        reuduce shuffle阶段并行传输数据的数量。集群大可以增大。
mapreduce.map.output.compress        false        map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,如果不压缩,就需要较多的传输带宽。配合 mapreduce.map.output.compress.codec使用,默认是 org.apache.hadoop.io.compress.DefaultCodec,可以根据需要设定数据压缩方式。
mapreduce.task.io.sort.mb        100        Map Task 环形缓冲区所占内存大小。
mapreduce.map.sort.spill.percent        0.8        序列化缓冲区中的软限制。一旦到达,一个线程将开始在后台将内容泄漏到磁盘。注意,当泄漏已经在进行时,如果这个阈值超过了这个阈值,那么收集就不会阻塞,因此,当它被设置为小于5时,泄漏可能大于这个阈值。
mapruduce经常调整的参数有:

mapred.reduce.tasks:手动设置reduce个数
mapreduce.map.output.compress:map输出结果是否压缩
mapreduce.map.output.compress.codec
mapreduce.output.fileoutputformat.compress:job输出结果是否压缩
mapreduce.output.fileoutputformat.compress.type
mapreduce.output.fileoutputformat.compress.codec

提交作业的一些配置属性
常见配置:
(1)mapred.map.tasks:map task数目
(2)mapred.reduce.tasks:reduce task数目
(3)stream.num.map.output.key.fields:指定map task输出记录中key所占的域数目
(4)num.key.fields.for.partition指定对key分出来的前几部分做partition而不是整个
key

对单个MapReduce
– Map个数最好为集群slot的倍数
– Reduce个数最好为集群slot的个数、倍数

Hadoop中通常每个tasktracker会包含多个slots,Job的一个task均对应于tasktracker中的一个slot。系统中map slots总数与reducer slots总数的计算公式如下:
Map slots总数=集群节点数×mapred.tasktracker.map.tasks.maximum

Reducer slots总数=集群节点数×mapred.tasktracker.reduce.tasks.maximum
--------------------- 
作者:wx_411180165 
来源:CSDN 
原文:https://blog.csdn.net/qq_24726509/article/details/85041906 
版权声明:本文为博主原创文章,转载请附上博文链接!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值