温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

hadoop层面性能如何调优

发布时间:2021-12-08 11:13:27 来源:亿速云 阅读:121 作者:小新 栏目:云计算

这篇文章主要为大家展示了“hadoop层面性能如何调优”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hadoop层面性能如何调优”这篇文章吧。

hadoop 层面性能调优

1. 守护进行内存调优 

a)NameNode 和 DataNode 内存调整在 hadoop-env.sh 文件中 

NameNode: ExportHADOOP_NAMENODE_OPTS="-Xmx512m-Xms512m -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.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 文件中配置 

<property>

 <name>mapreduce.map.output.compress</name> 

 <value>true</value> 

</property> 

<property> 

<name>mapreduce.map.output.compress.codec</name> 

<value>org.apache.hadoop.io.compress.SnappyCodec</value> 

</property>
程序运行时指定参数 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文件系统中避免,大量小文件存在 

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


6. 重用 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 个月

以上是“hadoop层面性能如何调优”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI