Spark最佳实践之如何有效分配资源

本文探讨如何在AWS EMR上有效地为Spark分配资源,以充分利用集群的计算能力。介绍了EMR集群的资源分配、YARN的资源管理以及如何计算Spark的Driver和Executor配置,以达到资源的最大利用率。
摘要由CSDN通过智能技术生成

一个企业的大数据系统通常由三层构成:底层基础设施、大数据平台、数据智能化应用。随着云计算的发展,大多数中小型企业越来越依赖云厂商提供的服务来构建自己的大数据平台,而不再自己维护底层基础设施。比如,我们公司目前主要使用AWS EMR服务来构建Spark系统。EMR可以帮助我们根据需要快速建立一个Spark集群,让我们从底层机器的维护、集群的部署等繁杂的工作中解放出来,更多的关注在应用层。

基于EMR构建Spark系统时,有两个选择:第一个,构建一个大的EMR集群,在里面跑多个Spark应用;第二个,一个EMR集群只跑一个Spark应用。我们推荐尽量采用后者,这种方式可以充分利用云的优势,达到资源即用即启,应用间相互隔离。在这样的建设模式下,我们的性能调优工作主要包括以下几点:

  • 将一个集群的资源充分分配给Spark
  • 将Spark拿到的资源充分利用起来
  • 优化Spark的使用方法,避免不必要的计算

本文主要探讨第一点,即如何在EMR下为Spark有效分配资源,从而榨干一个集群的所有可用资源。文中所述均基于AWS EMR 5.20、Spark 2.4版本。


1. 整体分析

我们先来谈谈在EMR中通过YARN Cluster模式来部署一个Spark集群时,会涉及到哪些角色与概念,从而搞清楚这中间有哪些与资源相关的事情。

一个EMR集群包含了一组AWS EC2机器,按照功能划分为三种角色:Master、Core、Task。Master机器负责整体的协调与管理;Core和Task机器负责具体任务的执行,区别在于Core机器上会运行HDFS程序用来存储数据。

YARN是Hadoop的一个独立组件,用于集群资源管理,被广泛应用在各种大数据计算引擎的部署中。YARN系统有两种角色:Resource Manager(RM)、Node Manager(NM)。NM运行在每台EMR Core/Task机器上面,负责本机的资源管理;RM运行在EMR Master机器上,负责整个集群的资源管理。YARN在资源管理上主要考虑两点要素:CPU和内存,表现形式是根据申请的CPU和内存数创建一个Container,然后将对应的程序跑在Container进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值