大火的Apache Spark也有诸多不完美

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

现在如果你想要选择一个解决方案来处理企业中的大数据并不是难事,毕竟有很多数据处理框架可以任君选择,如Apache Samza,Apache Storm 、Apache Spark等等。Apache Spark应该是2016年风头最劲的数据处理框架,它在数据的批处理和实时流处理方面有着得天独厚的优势。

Apache Spark为大数据处理提供一套完整的工具,用户在大数据集上进行操作完全不需考虑底层基础架构,它会帮助用户进行数据采集、查询、处理以及机器学习,甚至还可以构建抽象分布式系统。

Apache Spark以速度而闻名,当然这是MapReduce改进的结果,它没有把数据保存在磁盘上,而是选择将数据保存在内存中。另外,Apache Spark提供了三种语言的库,即Scala,Java和Python。

Spark架构

Apache Spark虽然主要用于处理流数据,但是它也包含了很多数据执行操作的组件,上图就展示了它的不同模块。

Spark SQL:Apache Spark附带了SQL接口,这意味着用户可以直接使用SQL查询来与数据进行交互,这些查询统统是由Spark的执行引擎来处理的。

Spark Streaming:此模块提供一组API,用于编写对数据的实时流执行操作的应用程序,它会先将传入的数据流划分为微批次,然后再对数据执行操作。

MLib:MLLib提供了一组API,主要用于对大型数据集运行机器学习算法。

GraphX:支持内置的图操作算法,尤其适用于有很多连接节点的数据集。

除了数据处理库,Apache Spark还附带了一个Web UI。当运行Spark应用程序时,Web UI会默认打开4040端口进行监听,用户可以在其中查看有关任务执行器和统计信息的详细信息,甚至还可以查看任务在执行阶段所花费的时间,从而帮助用户进一步优化性能。

用例

分析:Spark在数据流传入构建实时分析时能够发挥很大作用,它可以有效处理各种来源的大量数据,支持HDFS,Kafka,Flume,Twitter和ZeroMQ,还可以处理自定义数据源。

趋势数据:Apache Spark可用于从传入事件流计算趋势数据。

物联网:物联网系统会生成大量数据然后将其推送到后端进行处理。 Apache Spark能够以固定的间隔(每分钟,小时,周,月等)构建数据管道,还可以基于一组可配置的事件触发操作。

机器学习:因为Spark可以批量处理离线数据并提供机器学习库(MLib),所以用户的数据集上可以轻松应用机器学习算法。 此外,用户可以通过一个大型数据集来实验不同的算法,将MLib与Spark Streaming组合,就可以轻松拥有一个实时机器学习系统。

虽然Apache Spark在很短的时间内就获得了极佳的人气,但是它也不是完美无缺的。

部署棘手

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN。其中,独立部署是最简单直接的方法,而后两种部署方式较为复杂,对于没有经验的新手来说难度很大,在安装依赖的时候可能会遇到一些问题。如果不正确,Spark应用程序将在独立模式下工作,但在集群模式下运行时会遇到类路径异常。

内存问题

因为Apache Spark是为处理大量数据而存在的,所以监控和测量内存使用是至关重要的。Spark中有很多配置是可以根据用例进行调整的,默认配置不一定是最好的,所以建议用户要仔细阅读Spark内存配置的文档,根据自己的需求及时作出调整。

版本发布频繁导致API更改

Apache Spark无论是1.x.x版本还是2.x.x版本都一直遵循着三四个月的发布周期,虽说版本的快速迭代代表了Spark的活力和开发人员功能开发的能力,但是它也意味着API的变化。对于,不希望API变化的用户来说,频繁的版本发布反而成了一大难题,甚至为了确保Spark应用程序不受API更改的影响不得不增加额外的开销。

Python支持不成熟

Apache Spark支持Scala,Java和Python,这很对开发人员的胃口,但是这三者的地位并非平起平坐的,尤其是在涉及到新功能时,Java和Scala总是可以第一时间更新,而 Python库需要一些时间才能赶上最新的API和功能。所以用户在选用最新版本的Spark时,应该首先考虑使用Java或Scala实现,如果选用Python则需考虑 feature/API中是否已经支持。

文档贫乏

文档教程和代码演练对于新手快速提升能力非常重要,而Apache Spark的样例虽然会和文档一起分享出来,但是大部分的示例都很基本,有质量的深度样例很少,所以对于想要学习Spark的用户来说参考意义并不是很大。

后记

Apache Spark能够在短时间内击败其它对手走红,不是没有道理的,它的确是一款很好的大数据处理框架,但是如果你的数据没有达到一定的量级,选用Spark无异于杀鸡用牛刀,而简单的解决方案不失为一个更好的选择。


本文作者:田晓旭

来源:51CTO

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
8月前
|
分布式计算 大数据 数据处理
Apache Spark:提升大规模数据处理效率的秘籍
【4月更文挑战第7天】本文介绍了Apache Spark的大数据处理优势和核心特性,包括内存计算、RDD、一站式解决方案。分享了Spark实战技巧,如选择部署模式、优化作业执行流程、管理内存与磁盘、Spark SQL优化及监控调优工具的使用。通过这些秘籍,可以提升大规模数据处理效率,发挥Spark在实际项目中的潜力。
609 0
|
3月前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
71 1
|
6月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
172 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
5月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
89 0
|
5月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
243 0
|
6月前
|
分布式计算 Apache Spark
|
7月前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
197 6
|
7月前
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。
|
7月前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
108 0
|
8月前
|
消息中间件 分布式计算 Serverless
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
135 2

热门文章

最新文章

推荐镜像

更多