1、 GC调整
默认自动分配GC、
手动修改的话
hadoop-env.sh
export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx1024m"
export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS-Xmx1024m"
关于GC的修改参考
NamenodeGC配置参考
文件对象数量 参考值
10,000,000 “-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M”
20,000,000 “-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G”
50,000,000 “-Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G”
100,000,000 “-Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G”
200,000,000 “-Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G”
300,000,000 “-Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G”
2、NN心跳并发数(集群数量大或者client多,需要调整)
hdfs-site.xml
dfs.namenode.handler.count ##默认是10
2-1、DN最大连接数
dfs.datanode.max.xcievers ##类似于Linux句柄数一般配置65535
3、回收站配置
1) fs.trash.interva 0表示禁用回收站,其他数值表示文件留存时间
2) fs.trash.checkpoint.interval 0则值等于文件留存时间,其他值表示回收站检查间隔时间
3) 要求fs.trash.checkpoint.interval <= fs.trash.interval
4、hdfs多目录
1)NAMEnode
dfs.namenode.name.dir--------hdfs-site.xml
NN本地文件系统存放FSImage的目录,如果逗号多个目录隔开,则会在多个目录中存放同样的数据
2)DATAnode
dfs.datanode.data.dir--------hdfs-site.xml
数据在DN上的存储目录
5、节点内磁盘间数据均衡–3.x特性
1)生成均衡计划
hdfs diskbalancer -plan node1
2)执行计划
hdfs diskbalancer -execute node1.plan.json
3)查看当前均衡任务的执行情况
hdfs diskbalancer -query node1
4)取消均衡任务
hdfs diskbalancer -cancel node1.plan.json
5)参数
dfs.disk.balancer.block.tolerance.percent---磁盘之间均衡阈值,默认10%
dfs.disk.balancer.enable --开启磁盘均衡功能
6、集群节点黑白名单
dfs.hosts.exclude 配置集群黑名单文件,文件中配置主机名,对应主机即不用于集群(隔离),
hdfs dfsadmin -refreshNodes 命令用来刷新NN
7、冷热数据分离,异构存储
dfs.storage.policy.enabled ##是否开启异构存储
异构就是对不同的存储介质配置到不同的数据目录,再对不同的数据进行指定目录存储
dfs.datanode.data.dir ##配置不同介质对应目录
存储类型分为4种
1)RAM_DISK--内存镜像文件系统
2)SSD--SSD硬盘
3)DISK--普通磁盘
4)ARCHIVE--未指定存储介质,一般是用来解决数据存储扩增等
查看所有存储策略
hdfs storagepolicies -listPolicies
指定目录设定存储策略
hdfs storagepolicies -setStoragePolicy -path xxx -policy xxx
查看指定路径的存储策略
hdfs storagepolicies -getStoragePolicy -path /
取消存储策略(ps:取消后存储策略就根据上级目录,如果是根目录,那就是hot)
hdfs storagepolicies -unsetStoragePolicy -path /user
查看文件块分布
hdfs fsck /ztfx -files -blocks -locations
8、安全模式
dfs.namenode.safemode.min.datanodes:最小可用 datanode 数量,默认 0
dfs.namenode.safemode.threshold-pct:副本数达到最小要求的 block 占系统总 block 数的百分比,默认 0.999999,即只丢一个块
dfs.namenode.safemode.extension:稳定时间,默认值 30000 毫秒,即 30 秒
9、MR任务跑的慢
1)机器性能
CPU、磁盘、网络、内存等
2)I/O操作优化
1>数据倾斜
2>Map运行时间太长,导致Reduce等待过久
3>小文件过多
10、MR数据倾斜
1)数据频率倾斜:某区域数据量远远大于其他区域
2)数据大小倾斜:部分记录的大小远远小于平均值
3)思路
1>检查是否空值过多导致,直接过滤空值或者自定义分区,将空值加随机数打散,最后再进行二次聚合
2>能在map阶段做的尽量map阶段
3>设置多个reduce数