hadoop 层面性能调优

  1. 守护进行内存调优
    a)NameNode 和 DataNode 内存调整在 hadoop-env.sh 文件中

NameNode: ExportHADOOP_NAMENODE_OPTS=”-Xmx512m-Xms512m -Dhadoop.security.logger= HADOOPSECURITYLOGGER:INFO,RFASDhdfs.audit.logger= {HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS”

DataNode:
export HADOOP_DATANODE_OPTS=”-Xmx256m -Xms256m -Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS”

-Xmx -Xms 这两个参数一般保持一致,以避免每次垃圾回收完成后 JVM 重新分配内存。
b)REsourceManager 和 NodeManager 内存调整在 yarn-env.sh 文件中

REsourceManager:
export YARN_RESOURCEMANAGER_HEAPSIZE=1000 默认 export YARN_RESOURCEMANAGER_OPTS=”………..”可以覆盖上面的值

NodeManager:
export YARN_NODEMANAGER_HEAPSIZE=1000 默认export YARN_NODEMANAGER_OPTS=”“;可以覆盖上面的值

常驻内存经验配置:
namenode:16G
datanode:2-4G
ResourceManager:4G
NodeManager:2G
Zookeeper:4G
Hive Server:2G
2. mr中间目录要配置多个,分散IO 压力

http://hadoop.apache.org/docs/r2.6.0/

配置文件yarn-default.xml 分散 IO 压力
yarn.nodemanager.local-dirs
yarn.nodemanager.log-dirs

配置文件 mapred-default.xml:
mapreduce.cluster.local.dir

配置文件 hdfs-default.xml:提高可靠性
dfs.namenode.name.dir
dfs.namenode.edits.dir
dfs.datanode.data.dir
3. mr中间结果要压缩

a)配置 mapred-site.xml 文件中配置

mapreduce.map.output.compress
true


mapreduce.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec

程序运行时指定参数 hadoop jar /home/hadoop/tv/tv.jar MediaIndex -Dmapreduce.compress.map.output=true -Dmapreduce.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec /tvdata /media
b)使用合理的压缩算法(cpu 和磁盘) cpu:如果是 cpu 的瓶颈,可以更换速度快的压缩算法 磁盘:如果是磁盘的瓶颈,可以更换压缩力度大的压缩算法 一般情况我们使用 snappy 压缩,比较均衡 lzo
4. hdfs文件系统中避免,大量小文件存在

  1. 根据具体情况,在 Map 节点使用 Combiner,减少输出结果

  2. 重用 Writable 类型

比如 声明一个对象 Text word = new Text(); map(),reduce()方法里面重用
7. 根据集群节点具体情况,调整 task 的并行度

设置 map 和 reduce 最大任务个数:
mapreduce.tasktracker.map.tasks.maximum
mapreduce.tasktracker.reduce.tasks.maximum

配置文件 mapred-default.xml:
设置 map 和 reduce 单个任务内存大小:
mapreduce.map.memory.mb 1G 默认
mapreduce.reduce.memory.mb 1G 默认
8. 要有效的监控手段(使用nmon,条件允许会部署ganglia搜集各种指标,分析指标发现瓶颈,然后指定措施)

硬件层面性能调优:

机架分开,节点均匀放置
操作系统层面性能调优:
多个网卡:多网卡绑定,做负载均衡或者主备
磁盘:多个磁盘挂载到不同目录下,存放数据做计算的磁盘不要做 raid

集群规划:

集群节点内存分配:
比如一个数据节点,假如 task 并行度为 8 DataNode(2~4G)+ NodeManager(2G)+Zookeeper(4G)+1G(单个任务默认大小)*8=16G~18G

集群规模: 假如 每天数据 1T 数据保存一个月,每个节点硬盘 2T 1T*3(副本)30(天)=90T=n*2T(60~70%) n=60 节点左右 企业中数据保留 7 天 15 天比较常见,数据比较重要的话 1 个月

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值