Spark在AWS集群上的优化

业务场景:从S3中读取大量小的Avro文件,进行简单处理,转换成parquet文件。 问题点:从S3读取文件,其实是一个文件一个请求发送到S3。并行度低。(当然S3也有并行设置,但是Spark集群每次处理的文件数量是CPU数)。 优化:建立Spark集群时,买较多的CPU数,和较少的内存数。

对于Spark要明确两个资源的概念,CPU和内存。CPU提升task并行度。内存提升运算效率,缓存空间。 采用Spark框架,建立Spark集群时,尽量判断业务的核心处理是属于计算密集型,还是IO密集型。 AWS有不同的机型和服务,适用于不同的业务处理。在计算密集型的处理中,购买内存占比大的机型。在IO密集型的处理中,购买CPU占比较大的机型。 将AWS实例类型从R换为C后,处理速度提升了40%,并且集群花费减少25%。 AWS也提供spot实例服务。此服务即向AWS申请空闲资源,花费更少,但是不一定能申请到。适合处理时间有弹性的任务。处理思路可以为主备集群。spot服务为主集群,再配置另一个备用集群。判断spot服务是否启动,如果没有申请到资源,那么创建备用集群,执行任务。

转载于:https://my.oschina.net/u/3957231/blog/3100952

你可能感兴趣的:(Spark在AWS集群上的优化)