调优相关参数总结(部分)

题目一、运维与管理
 HDFS 调优;(hdfs-site.xml 配置hadoop的hdfs的参数,/usr/hadoop/hadoop-2.7.3/etc/hadoop)
 Yarn 调优; (yarn-site.xml配置yarn的参数/usr/hadoop/hadoop-2.7.3/etc/hadoop))
 MapReduce 调优; (主要是性能调优)
 集群权限管理;
 开启集群。
一.调优
HDFS调优: 平台(hdfs-site.xml 配置hadoop的hdfs的参数,/usr/hadoop/hadoop-2.7.3/etc/hadoop)(不怕大文件,怕很多小文件)
dfs.namenode.handle.count (hdfs-site.xml)(namenode中用户RPC调用的线程数)
默认为10,公式20logN,eg:20结点=26
格式:

dfs.namenode.handle.count

10

  1. dfs.datanode.handler.count (hdfs-site.xml)(datanode中用于处理RPC·调用的线程数)
    默认为3,推荐20(生产环境)
    格式:

dfs.datanode.handler.count

3

  1. dfs.repalication (hdfs-site.xml) (数据块默认副本数(备份数,复制因子))
    默认为3,每个datanode上只能有一个副本数
    格式:

dfs.repalication

3

  1. dfs.block.size (hdfs-site.xml)(hdfs数据块的大小(hadoop1.0默认64mb,hadoop2.0默认128mb))
    如果大部分文件大小在200~256之间吗,那么数据块的大小就可以设置为256mb,其余可以默认,数据块太小会增加namenode的压力,数据块太小会增加数据定位的时间,这个值和磁盘的转速有关
    格式:

dfs.block.size

128

  1. dfs.datanode.data.dir (hdfs-site.xml) (hdfs数据存储的目录)
    我们可以设置多个磁盘目录,增加磁盘IO的性能,多个目录可以用逗号来进行分割
    格式:

dfs.datanode.data.dir

  1. hadoop.tmp.dir (core-site.xml)(hadoop的临时目录,默认是在系统的根目录下面的tmp)
    推荐设置多个 目录,提高hdfs和MapReduce的IO效率
    格式:

hadoop.tmp.dir

  1. io.file.buffer.size (core-site.xml)(hdfs文件缓冲区的大小,core-site.xml)
    默认为4096,即4k,推荐值为131072,即128k
    格式:

io.file.buffer.size

131072

  1. fs.trash.interval (core-site.xml) (hdfs清理回收站的时间周期,单位为min)
    默认为0(0表示不使用回收站的特性),推荐4—7(10080 min)天,也可以手动去清理
    格式:

fs.trash.interval

10080

  1. dfs.datanode.du.reserved (hdfs-site.xm)(datanode保留的空间大小(单位为字节))
    默认情况下,datanode会占用全部可用的磁盘空间,这个配置项可以使datanode保留部分的磁盘空间,让其他的程序去使用,推荐稍微空出点空间,5—10GB即可
    格式:

        dfs.datanode.du.reserved
        10737418240 
     

  2. dfs.datanode.socket (服务监控的时间)
    默认为3s,生产环境调到30s
    格式:

dfs

3

  1. dfs.support.append (hdfs-site.xml、hbase-site.xml) (开启hdfs追加同步,可以优秀的配合habsede的数据同步和持久化)
    默认值为true
    格式:

dfs.support.append

true

  1. dfs.datanode.max.transfer.threads (hdfs-site.xml )(优化DataNode允许最大文件打开数)
    默认值为4096,设置为4096或者更高
    格式:

dfs.datanode.max.transfer.threads

4096

  1. dfs.image.transfer.timeout (hdfs-site.xml)(优化延迟高的数据操作的等待时间)
    默认为60000毫秒,建议设置更大的值,以确保socket不会被timeout掉
    格式:

dfs.image.transfer.timeout

60000

  1. mapreduce.map.output.compress (mapreduce.site.xml)
    mapreduce.map.output.compress.code (优化数据的写入效率)
    开启这两个数据可以大大提高文件的写入效率,减少写入时间。
    第一个属性值修改为true;第二个属性值修改为:org.apche.hadoop.io.compress.GzipCodec 或者其他压缩方式
    格式:

mapreduce.map.output.compress

true

mapreduce.map.output.compress.code

org.apche.hadoop.io.compress.GzipCodec

15. hbase.regionserver.handler.count (hbase.site.xml) (设施RPC监听数量) 默认值为30,可以根据客户端请求数进行调整,读写请求多时,增加此值 格式:

hbase.regionserver.handler.count

30

  1. hbase.hregion.max.filesize (hbase-site.xml) (优化HStore文件大小)
    默认值为10737418240(10GB),如果需要图运行hbase的mr任务,可减小此值
    格式:

hbase.hregion.max.filesize

10737418240

  1. hbase.client.write.buffer (hbase-site.xml) (优化客户端缓存)
    用户指定客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多的内存,反之则反之。一般我们需要设定一定缓存大小,以达到减少RPC的次数的目的。
    格式:

hbase.client.write.buffer

  1. hbase.client.scanner.caching (hbase.site.xml)(扫描hbase所需的行数)
    值越大,消耗内存越大
    格式:

hbase.client.scanner.caching

  1. 机架感知 (rack-aware配置,启用hdfs机架感知的功能可以优化数据块备份的分布,增强hdfs的性能和可靠性)
    减少服务和结点同时宕机的概率,步骤如下:
    NameNode所在节点的/home/bigdata/apps/hadoop/etc/hadoop的core-site.xml配置文件中配置一个选项:

topology.script.file.name

/usr/hadoop/hadoop-2.7.3/etc/hadoop/topology.sh

在上面value路径上vi topology.sh,内容如下:(创建sh脚本topology.sh)

#!/bin/bash
HADOOP_CONF=/usr/software/hadoop-2.7.3/sh
while [ $# -gt 0 ] ; do
nodeArg= 1 e x e c < 1 exec< 1exec<{HADOOP_CONF}/topology.data
result=""
while read line ; do
ar=( l i n e ) i f [ " line ) if [ " line)if["{ar[0]}" = “ n o d e A r g " ] ∣ ∣ [ " nodeArg" ]||[ " nodeArg"]["{ar[1]}” = “ n o d e A r g " ] ; t h e n r e s u l t = " nodeArg" ]; then result=" nodeArg"];thenresult="{ar[2]}”
fi
done
shift
if [ -z “ r e s u l t " ] ; t h e n e c h o − n " / d e f a u l t − r a c k " e l s e e c h o − n " result" ] ; then echo -n "/default-rack" else echo -n " result"];thenechon"/defaultrack"elseechon"result”
fi
done
在此要注意的是,要给topology.sh赋予可执行权限
chond 777 topology.sh
配置机架数据 (topolopy.data) (/usr/hadoop/hadoop-2.7.3/etc/hadoop/toplogy.data)
第一列为IP地址, 第二列为主机名,第三列为机架位置
120.27.4.193 master /master/rack1

120.25.225.181 slave1 /dd/rack1

120.25.81.15 slave2 /dd/rack2
120.25.81.15 slave3 /dd/rack2
重启hadoop (先关闭,再开启)
输入命令:hdfs dfsadmin -printTopology
Yarn调优:
cup参数

  1. yarn.nodemanager.resource.cpu-vcores(默认是8,该节点服务器上yarn可以使用的虚拟CPU个数,推荐将值配置与物理核心个数相同,如果节点CPU核心不足8个,要调小这个值,yarn不会智能的去检测物理核心数)

2.yarn.scheduler.minimum-allocation-vcores (默认为1,单个任务最小可申请的虚拟核心数)

3.yarn.scheduler.maximum-allocation-vcores(默认为4,单个任务最大可申请的虚拟核心数,如果申请资源时,超过这个配置,会抛出InvalidResourceRequestException)

Memory参数
4. yarn.nodemanager.resource.memory-mb(默认为8G,设置该节点上yarn可使用的内存,如果节点内存资源不足8G,要减少这个值,yarn不会智能的去检测内存资源,一般这个设置yarn的可用内存资源)

5.yarn.scheduler.minimum-allocation-mb (默认1024MB,单个任务最小申请物理内存量,根据自己的业务设定)

  1. yarn.scheduler.maximum-allocation-mb (默认为8291MB,单个任务最大申请物理内存量)

MapReduce调优: (怕数据倾斜)(主要是性能调优)(mapred-default.xml)
1.数据输入(合并小文件方式)
//如果不设置InputFormat,它默认用的是TextInputformat.class

    job.setInputFormatClass(CombineTextInputFormat.class);

    CombineTextInputFormat.setMaxInputSplitSize(job, 4194304);

    CombineTextInputFormat.setMinInputSplitSize(job, 2097152);

2.Map阶段
减少溢写(spill)次数,减少磁盘IO
mapreduce.task.io.sort.mb (默认100Mb,实际开发中可设置大一些)
mapreduce.map.sort.split.precent (一般默认值为80%(写0.8),也可直接设置为100%)
格式:

减少合并(merge)次数,缩短mr处理时间
mapreduce.task.io.sort.factor (排序文件时,一次最多合并的留数,实际开发中可把这个值设置为100)
格式:

在map之后,不影响业务逻辑前提下,先进行combine处理,减少 I/O
mapreduce.task.min.num.spills.for.combine (默认值为3,运行combiner时,所需的最少溢出文件数,如果已指定combiner)
格式:

3.Reduce阶段
mapreduce.job.reduce.slowstart.completedmapsv (默认值0.05,当map task 在执行到5%,就开始为reduce申请资源)
格式:

mapred.job.reduce.input.buffer.percent (默认值为0.0 ,在reduce过程中,内存中保存map输出的空间占整个堆空间的比例,如果reducer需要的内存较少,可以增加这个值来最小化访问磁盘的次数)
格式:

4.Shuffle阶段
Shuffle过程尽量多地提供内存空间,以防止出现内存溢出现象
mapred.map.child.java.opts (默认值 -Xmx200吗,在用户不设置的情况下,会以最大1G jvm heap size 启动map task,有可能导致内存溢出,所以最简单的方式就是设大参数,一般设置为 -Xmx1024m)
格式:

mapreduce.reduce.child.java.opts (默认值 -Xmx200吗,在用户不设置的情况下,会以最大1G jvm heap size 启动reduce task,有可能导致内存溢出,所以最简单的方式就是设大参数,一般设置为 -Xmx1024m)
格式:

其他参数调优:(参数配置都在mapred-default.xml)
mapreduce.map.memory.mb (默认值1024,一个Map Task实际使用的资源上限,如果Map Task实际使用超过这个值吗,则会被强制杀死)
格式:

mapreduce.reduce.memory.mb (默认值为1024一个Reduce Task实际使用的资源上限,如果Map Task实际使用超过这个值吗,则会被强制杀死)
格式:

mapreduce.map.cpu.vcores (默认值为1,每各Map task可使用的最多cpu core数目)
格式:

mapreduce.reduce.cpu.vcores (默认值为1,每各Reduce可使用的最多cpu core数目)
格式:

mapreduce.reduce.shuffer.parallelcopies (默认值为4,每次Map Task 最大重试次数,一旦重试次数超过该值,则认为Map Task 运行失败)
格式:

mapreduce.reduce.maxattempts (默认值为4,每各Reduce Task 最大重试次数,一旦重试参数超过该值,则认为Map Task 运行失败)
格式:

二.集群权限管理 (https://www.cnblogs.com/hanxiaohui/p/8526997.html)
1. 配置Service Level Authorization

hadoop.security.authorization (core-site.xml)(hadoop.security.authorization=true则开启ServiceLevel Authorization,若为false则不经过任何验证,所有用户拥有全部权限。(修改此配置需要重启hadoop))
格式:

hadoop.security.authorization
true

2. Service LevelAuthorization有9个可配置的属性,每个属性可指定拥有相应访问权限的用户或者用户组。这9个ACL属性如下(hadoop-policy.xml)
security.client.protocol.acl
security.client.datanode.protocol.acl
security.datanode.protocol.acl
security.inter.datanode.protocol.acl
security.namenode.protocol.acl
security.inter.tracker.protocol.acl
security.job.submissing.protocol.acl
security.task.umbilical.protocol.acl
security.refresh.policy.protocol.acl

这9个属性的配置方法相同,具体如下:
每个可配置多个用户,用户之间用“,”分割;可配置多个用户组,分组之间用“,”分割,用户和分组之间用空格分割,如果只有分组,前面保留一个空格,如:

security.job.submission.protocol.acl
alice,bobgroup1,group2

默认情况下,这9个属性不对任何用户和分组开放。
该配置文件可使用以下命令动态加载:
(1)    更新namenode相关属性:bin/hadoop dfsadmin –refreshServiceAcl
(2)    更新jobtracker相关属性:bin/hadoopmradmin –refreshServiceAcl

2.  调度器配置
mapred.jobtracker.taskScheduler (mapred-site.xml) (启用Access Contol onJob Queues需选择一个支持多队列管理的调度器,所以mapred.jobtracker.taskScheduler只能为CapacityTaskScheduler或FairScheduler。)

mapred.jobtracker.taskScheduler
org.apache.hadoop.mapred.CapacityTaskScheduler

mapred.queue.names (mapred-site.xml) (配置队列)

mapred.queue.names
default,hadoop,stat,query

3、 Access Contol on JobQueues配置
mapred.acls.enabled (mapred-site.xml)Access Contol on Job Queues开关
mapred.acls.enabled=true开启,为false关闭。

mapred.acls.enabled
true

具体ACL属性在mapred-queue-acl.xml里,如:

mapred.queue.stat.acl-submit-job
user1,user2 group1,group2

表示user1,user2和group1,group2可以向stat queue提交job。

4、 DFS permission配置
dfs.permission (hdfs-site.xml )
dfs.permission是否开启文件权限验证,true开启,false不进行读写权限验证。(注:dfs.permission开启与否dfs permission信息都不会改变后丢失,chown、chgrp、chmod操作也始终会验证权限,dfspermission信息只在namenode里,并不在danode里与blocks关联)
用chown、chgrp、chmod修改文件/目录的属主、属组和权限。

dfspermission
true

补:Job ACL
Job ACL默认值配置在mapred-site.xml里,如下:

mapreduce.job.acl-view-job
user1


mapreduce.job.acl-modify-job
user1

表示,默认情况下,user1用户拥有job的查看和修改权限。 
Job提交者可以指定mapreduce.job.acl-view-job和mapreduce.job.acl-modify-job值,提交时指定的值会覆盖默认值。
Job提交者、superuser、集群管理员(mapreduce.cluster.administrators)、JobQueue管理员始终拥有该权限。

三.开启集群
关闭防火墙
systemctl stop firewalld
启动zookeeper(/usr/zookeeper/zookeeper-3.4.10)
bin/zkServer.sh start //开启
bin/zkServer.sh stop //关闭
bin/zkServer.sh status //查看
启动hadoop(/usr/hadoop/hadoop-2.7.3)
sbin/start-all.sh
jps
可以通过hdfs dfsadmin -report来查看节点数也可浏览器查看                  
启动hive
在slave1(服务端)  hive service metastore
在master(客户端) bin/hive --servivce metastore

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值