spark简介及其架构
Spark是一个通用的并行计算框架,由加州伯克利大学的AMP于2009开发,并于2010年进行开源,后续发展为大数据领域的最活跃的开源项目之一。Spark在各大场景中扮演着重要的角色,比如能够进行复杂的批数据处理,基于实时数据流的数据处理和历史数据的交互式查询。在实时大数据应用的场景下,相比于Hadoop的高吞吐,低响应的特点,spark通过内存计算能力极大提高了大数据处理速度,对实时场景能够提供完美的解决方案,并支持SQL查询,图计算,机器学习等。编程方面Spark支持Java, Scala, python,R等语言实现业务逻辑,用户能够根据业务框架自由选择相应的编程语言,容易上手。
Spark的特点:
快速处理能力:随着爆炸式增长的海量数据,数据处理的实时性显得尤为重要。Hadoop MapReduce的Job将中间输出与结果存储在磁盘中,读写磁盘造成磁盘I/O瓶颈,而Spark支持将中间输出与结果存储在内存中,提升了任务执行的效率,也避免因磁盘高I/O引起的性能问题,对大数据的实时处理也能做到轻松应对。
易于使用:Spark支持多种编程语言,包括java、scala,python和R语言等。比如用户能够通过简单的python语言调用丰富的机器学习库进行业务开发,极大降低了用户的使用门槛。
高可用:Spark集群模式多实例部署,解决机器单点故障问题。
丰富的数据源:Spark支持丰富的数据源,除了操作系统自身的文件系统和HDFS,还支持访问Cassandra,Hbase,Hive,Tachyon等
支持查询与流式计算:Spark支持SQL查询,使用简单SQL即可开发复杂业务逻辑。Spark也支持实时流计算,依赖Spark Streaming对数据进行实时处理,主要针对生命周期短的数据,需要及时挖掘其中的数据价值。
Spark模块组成:
Spark core:Spark的基础与核心功能实现,包括sparkContent初始化、调度系统(DAGScheduler和TaskScheduler)、存储体系(Spark优先考虑使用各节点的内存作为存储)、计算引擎等。
Spark SQL:提供SQL查询能力,尤其对于一些不熟悉scala语言的但又想通过大数据平台进行数据挖掘的开发工程师,能够轻松利用SQL语句进行交互式查询和业务开发。
Spark Stream:提供实时流计算能力,Spark Streaming支持的数据输入源主要包括Kafka、Flume、ZeroMQ等。
MLlib:提供机器学习相关的算法和实用程序,比如分类,聚类,回归等,提供了常用数据挖掘算法的分布式实现功能。
Graphx:一个分布式图处理框架,提供强大图计算能力,基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口。
现华为云上数据湖探索(Data Lake Insight,简称DLI)基于Apache Spark生态,提供了SQL,SPARK,FLINK完整生态链,帮助用户挖掘和探索数据价值。
- 点赞
- 收藏
- 关注作者
评论(0)