题目一、运维与管理
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
2. dfs.datanode.handler.count (hdfs-site.xml)(datanode中用于处理RPC·调用的线程数)
默认为3,推荐20(生产环境)
格式:dfs.datanode.handler.count
3
3. dfs.repalication (hdfs-site.xml) (数据块默认副本数(备份数,复制因子))
默认为3,每个datanode上只能有一个副本数
格式:dfs.repalication
3
4. dfs.block.size (hdfs-site.xml)(hdfs数据块的大小(hadoop1.0默认64mb,hadoop2.0默认128mb))
如果大部分文件大小在200~256之间吗,那么数据块的大小就可以设置为256mb,其余可以默认,数据块太小会增加namenode的压力,数据块太小会增加数据定位的时间,这个值和磁盘的转速有关
格式:dfs.block.size
128
5. dfs.datanode.data.dir (hdfs-site.xml) (hdfs数据存储的目录)
我们可以设置多个磁盘目录,增加磁盘IO的性能,多个目录可以用逗号来进行分割
格式:dfs.datanode.data.dir
6. hadoop.tmp.dir (core-site.xml)(hadoop的临时目录,默认是在系统的根目录下面的tmp)
推荐设置多个 目录,提高hdfs和MapReduce的IO效率
格式:hadoop.tmp.dir
7. io.file.buffer.size (core-site.xml)(hdfs文件缓冲区的大小,core-site.xml)
默认为4096,即4k,推荐值为131072,即128k
格式:io.file.buffer.size
131072
8. fs.trash.interval (core-site.xml) (hdfs清理回收站的时间周期,单位为min)
默认为0(0表示不使用回收站的特性),推荐4—7(10080 min)天,也可以手动去清理
格式:fs.trash.interval
10080
9. dfs.datanode.du.reserved (hdfs-site.xm)(datanode保留的空间大小(单位为字节))
默认情况下,datanode会占用全部可用的磁盘空间,这个配置项可以使datanode保留部分的磁盘空间,让其他的程序去使用,推荐稍微空出点空间,5—10GB即可
格式:
dfs.datanode.du.reserved
10737418240
10. dfs.datanode.socket (服务监控的时间)
默认为3s,生产环境调到30s
格式:dfs
3
11. dfs.support.append (hdfs-site.xml、hbase-site.xml) (开启hdfs追加同步,可以优秀的配合habsede的数据同步和持久化)
默认值为true
格式:dfs.support.append
true
12. dfs.datanode.max.transfer.threads (hdfs-site.xml )(优化DataNode允许最大文件打开数)
默认值为4096,设置为4096或者更高
格式:dfs.datanode.max.transfer.threads
4096
13. dfs.image.transfer.timeout (hdfs-site.xml)(优化延迟高的数据操作的等待时间)
默认为60000毫秒,建议设置更大的值,以确保socket不会被timeout掉
格式:dfs.image.transfer.timeout
60000
14. 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
16. hbase.hregion.max.filesize (hbase-site.xml) (优化HStore文件大小)
默认值为10737418240(10GB),如果需要图运行hbase的mr任务,可减小此值
格式:hbase.hregion.max.filesize
10737418240
17. hbase.client.write.buffer (hbase-site.xml) (优化客户端缓存)
用户指定客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多的内存,反之则反之。一般我们需要设定一定缓存大小,以达到减少RPC的次数的目的。
格式:hbase.client.write.buffer
18. hbase.client.scanner.caching (hbase.site.xml)(扫描hbase所需的行数)
值越大,消耗内存越大
格式:hbase.client.scanner.caching
19. 机架感知 (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={HADOOP_CONF}/topology.data
result=""
while read line ; do
ar=( {ar[0]}" = “{ar[1]}” = “{ar[2]}”
fi
done
shift
if [ -z “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/rack1120.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,单个任务最小申请物理内存量,根据自己的业务设定)
6. yarn.scheduler.maximum-allocation-mb (默认为8291MB,单个任务最大申请物理内存量)
MapReduce调优: (怕数据倾斜)(主要是性能调优)(mapred-default.xml)
1.数据输入(合并小文件方式)
//如果不设置InputFormat,它默认用的是TextInputformat.classjob.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 运行失败)
格式:二.集群权限管理 ()
1. 配置Service Level Authorizationhadoop.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 –refreshServiceAcl2. 调度器配置
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
HDFS配置idea hdfs配置优化
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HDFS的shell操作
HDFS的Shell操作
HDFS hadoop 绝对路径 -
hdfs路径怎么配置 hdfs安装配置
1、环境准备需要环境:PC-1 Suse Linux 9 10.192.1.1PC-2 Suse Linux 9
hdfs路径怎么配置 suse 集群 linux ssh