大数据运维问题记录(四)

问题描述:有个hadoop集群,跑hive任务的时候慢,而且经常跑的跑的就挂了,报内存不够等等的相关异常,需要我们给解决,优化一下配置

问题解决:跑hive慢,一方面是hive语句的问题,另一方面就是hadoop中mapreduce已经yarn的相关配置没有配置好,第一方面需要项目组开发人员自己解决了,学习如何根据业务优化一下sql

参数配置优化就需要平衡集群中机器的内存,处理器和磁盘的使用

Yarn和MapReduce的总的可用内存应考虑到保留的内存

保留内存=保留系统内存+保留其它应用所用内存(比如hbase,spark等)

建议保留的内存如下(以hbase为例):

大数据运维问题记录(四)_第1张图片

下面的计算是确定每个节点的Container允许的最大数量:

#Container数量=min(2*CORES, 1.8*DISKS, (可用内存)/最低Container的大小)

最低Container的大小这个值是依赖于可用的RAM数量——在较小的存储节点,最小的Container的大小也应较小。下面的表列出了推荐值:

大数据运维问题记录(四)_第2张图片

最后计算的每个Container的内存大小是:

每个Container的内存大小 = max(最小Container内存大小, (总可用内存) /Container数))

其中mapred-site.xml中的与性能有关的主要参数如下:

大数据运维问题记录(四)_第3张图片

yarn-site.xml中与性能有关的参数如下:

大数据运维问题记录(四)_第4张图片

参数的计算方式如下:

大数据运维问题记录(四)_第5张图片

例如:集群节点拥有12个CPU核,48GB内存和12块磁盘

保留内存(Reserved Memory)=6GB系统预留内存+(如果有Hbase)8GB的Hbase内存

最小的容器大小(Min container size)=2GB

容器数目(containers)=min(2*12,1.8*12,(48-6-8)/2)=min(24,21.6,17)=17

每个容器的RAM(RAM-per-container)=max(2,(48-6-8)/17)=max(2,2)=2

大数据运维问题记录(四)_第6张图片

以下配置具体参数还是要根据给其它系统预留的内存数而定

你可能感兴趣的:(大数据运维问题记录(四))