前言:本文档适用于新部署的HDP集群,需要修改默认参数值以提高集群的稳定性。
1.Mysql
修改mysql配置文件/etc/my.cnf
参数 说明 默认值 建议值
default-character-set mysql服务器默认字符集设置 utf8
max_connections 最大用户连接数 151 3000
2.Ldap
ldap添加日志方便后期定位问题:
vi slapd.conf
loglevel 4095
vi /etc/rsyslog.conf
local4.* /var/log/openldap.log
service rsyslog restart
service slapd restart
3.Kerberos
参数 说明 默认值 建议值
hadoop.security.auth_to_local 指定的规则将Kerberos主体映射到操作系统用户(系统)帐户 DEFAULT RULE:[2:$1/$2@$0](.*/.*@ocdp)s/(.*)@ocdp/.*/
4.Ambari-server
调整ambari-server堆内存,防止集群增大后,内存不足相应缓慢。
vi /var/lib/ambari-server/ambari-env.sh
export AMBARI_JVM_ARGS=$AMBARI_JVM_ARGS' -Xms1024m -Xmx4096m -XX:MaxPermSize=128m
5.Zookeeper
参数 说明 默认值 建议值
Zookeeper Server Maximum Memory Zookeeper进程堆内存 1024 4096
6.Hdfs
参数 说明 默认值 建议值
NameNode Java heap size Namenode进程堆内存 1024 51200
Namenode 内存调优
namenode 的元数据对象数包含文件的inodes 和指向datanode 数据块的blocks。
元数据大致分成两个层次:Namespace管理层,负责管理文件系统中的树状目录结构以及文件与数据块的映射关系;块管理层,负责管理文件系统中文件的物理块与实际存储位置的映射关系BlocksMap
dfs.blocksize设置为128M,每个namenode 对象大概150 bytes,大概100W个block 消耗一个1G namenode memory
副本影响dfs的存储空间,但不影响namenode 的内存
eg:
200 hosts of 24 TB each = 4800 TB.Blocksize=128 MB, Replication=3
Cluster capacity in MB: 200 * 24,000,000 MB = 4,800,000,000 MB (4800 TB)
Disk space needed per block: 128 MB per block * 3 = 384 MB storage per block
Cluster capacity in blocks: 4,800,000,000 MB / 384 MB = 12,000,000 blocks
集群大概需要12G 的heap size
生产集群namenode heapsize建议值:20480m~167936m(根据集群数据量大小调整)
其它参数优化:
参数 说明 默认值 建议值
dfs.namenode.handler.count Namenode处理线程数 10 200
dfs.datanode.handler.count Datanode处理线程数 10 160
DataNode maximum Java heap size Datanode进程堆内存 1024 4096
fs.trash.interval Hdfs垃圾回收时间 360 1440
dfs.datanode.balance.bandwidthPerSec Hdfs数据均衡带宽 1048576 10485760
dfs.image.trsansfer.timeout Fsimage传输超时 60000 120000
dfs.image.transfer.bandwidthPerSec Fsimage传输带宽 0 52428800
dfs.datanode.du.reserved Datanode磁盘预留空间 0 157286400
7.Yarn
Yarn进程内存配置:
参数 说明 默认值 建议值
ResourceManager Java heap size Resourcemanager进程堆内存 1024 16384
NodeManager Java heap size Nodemanager进程堆内存 1024 4096
AppTimelineServer Java heap size Timelineserver进程堆内存 1024 4096
Yarn资源配置
根据主机物理配置(32v,128G)进行建议
参数 说明 默认值 建议值
yarn.nodemanager.resource.cpu-vcores Nodemanager节点分配最大并发数(vcore) 8 32
yarn.nodemanager.resource.memory-mb Nodemanager节点分配最大内存数 8192 65536
yarn.scheduler.minimum-allocation-vcores 一个container分配最小vcore数 1 1
yarn.scheduler.maximum-allocation-vcores 一个container分配最大vcore数 32 32
yarn.scheduler.minimum-allocation-mb 一个container分配的最小内存 1024 1024
yarn.scheduler.maximum-allocation-mb 一个container分配的最大内存 8192 65536
8.Mapreduce
参数 说明 默认值 建议值
mapreduce.map.memory.mb Map进程堆内存 1024 2048
mapreduce.map.cpu.vcores Map配置的vcore数 1 1
mapreduce.reduce.memory.mb Reduce进程内存 1024 4096
mapreduce.reduce.cpu.vcores Reduce配置的vcore数 1 1
yarn.app.mapreduce.am.resource.mb MRAPPmaster进程内存 1536 4096
yarn.app.mapreduce.am.resource.cpu-vcores MRAPPmaster配置的vcore数 1 1
9.Hive
参数 说明 默认值 建议值
Client Heap Size Client进程堆内存 1024 1024
Metastore Heap Size Metastore进程堆内存 1024 5120
HiveServer2 Heap Size Hiveserver2进程堆内存 1024 8192
根据现场业务需要进行调整的参数:
参数 说明 默认值 建议值
hive.exec.compress.output Hive开启输出压缩 false true
mapreduce.output.fileoutputformat.compress mapreduce输出压缩 false true
mapreduce.output.fileoutputformat.compress.type mapreduce输出压缩级别 RECORD BLOCK
mapreduce.output.fileoutputformat.compress.codec Mapreduce输出压缩算法 org.apache.hadoop.io.compress.DefaultCodec org.apache.hadoop.io.compress.SnappyCodec
hive.exec.compress.intermediate Hive中间结果压缩 false true
mapreduce.map.output.compress mapreduce中间结果压缩 false true
mapreduce.map.output.compress.codec mapreduce中间结果压缩算法 org.apache.hadoop.io.compress.DefaultCodec org.apache.hadoop.io.compress.SnappyCodec
hive.execution.engine Hive执行引擎 mr tez
hive.exec.parallel Hive job并行执行 false true
hive.mapred.mode Hive是否过滤不合理查询 nonstrict strict
hive.merge.mapredfiles Hive开启文件合并 false true
hive.merge.size.per.task Hive文件合并大小 256000000 256000000
hive.merge.smallfiles.avgsize Hive文件合并大小平均值 16000000 256000000
mapreduce.input.fileinputformat.split.minsize 一个map处理的最小数据量 0 256000000
10.Hbase
参数 说明 默认值 建议值
HBase Master Maximum Memory Hbase master进程堆内存 1024 8192
HBase RegionServer Maximum Memory Hbase regionserver进程堆内存 1024 16384
参数 说明 默认值 建议值
hbase.regionserver.handler.count
Regionserver处理线程数 30 150
hbase.regionserver.global.memstore.upperLimit Hbase memory store内存占regionserver堆内存比例上限 0.2 0.4
hbase.regionserver.global.memstore.lowerLimit Hbase memory store内存占regionserver堆内存比例下限 0.18 0.35
hbase.hregion.memstore.flush.size Hbase Memory store内存数据刷到磁盘阈值 134217728 268435456
hbase.hstore.compactionThreshold
一次minor compaction的最小file数 5 10
hfile.block.cache.size storefile的读缓存占用Heap的大小百分比 0.6 0.4
hbase.hstore.blockingStoreFiles 执行block flush的StoreFiles文件数量阀值 100 150
hbase.hstore.compaction.max 一次minor compaction的最大file数 10 20
hbase.hstore.compaction.min 一次minor compaction的最小file数 3 10
hbase.hregion.memstore.block.multiplier Flush最大的store内存(store个数),超过就block写入。 2 8
hbase.server.thread.wakefrequency Block写的延时时间 10000 100
11.Spark
参数 说明 默认值 建议值
spark_daemon_memory sparkThriftServer进程堆内存 1024 10240
spark.executor.cores 每个executor分配的vcore数 1 5