关于spark core 和spark streaming 的区别

学习,永无止境,也要反复复习。

1.spark core

spark core是一个基于内存的,大数据分布式计算框架(处理引擎)。

快速

比mapreduce快几倍甚至几百倍, 开发效率高。

使用简单

高度封装api 。支持多种编程语言

通用

支持sql。
实时计算 spark streaming 和 structed streaming 。
机器学习 spark MLlib
图计算 spark graphX

运行灵活

多种运行模式

standalone自带的集群调度,yarn通用调度框架,local方便开发调试,mesos、kubermetes

访问多种数据源

读取hdfs,读取关系型数据库,读取Hbase,读取ES和Mongo等,读取亚马逊分布式文件系统S3(简单存储服务)

总结

Spark Core提供Spark最基础与最核心的功能,主要包括以下功能:
(1)SparkContext:通常而言,Driver Application的执行与输出都是通过SparkContext来完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、Web服务等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。SparkContext内置的DAGScheduler负责创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等功能。内置的TaskScheduler负责资源的申请,任务的提交及请求集群对任务的调度等工作。
(2)存储体系:Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘IO,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景。此外,Spark还提供了以内存为中心的高容错的分布式文件系统Tachyon供用户进行选择。Tachyon能够为Spark提供可靠的内存级的文件共享服务。
(3)计算引擎:计算引擎由SparkContext中的DAGScheduler、RDD以及具体节点上的Executor负责执行的Map和Reduce任务组成。DAGScheduler和RDD虽然位于SparkContext内部,但是在任务正式提交与执行之前会将Job中的RDD组织成有向无环图(DAG),并对Stage进行划分,决定了任务执行阶段任务的数量、迭代计算、shuffle等过程。
(4)部署模式:由于单节点不足以提供足够的存储和计算能力,所以作为大数据处理的Spark在SparkContext的TaskScheduler组件中提供了对Standalone部署模式的实现和Yarn、Mesos等分布式资源管理系统的支持。通过使用Standalone、Yarn、Mesos等部署模式为Task分配计算资源,提高任务的并发执行效率。
Spark的几大子框架包括:
(1)Spark SQL:首先使用SQL语句解析器(SqlParser)将SQL转换为语法树(Tree),并且使用规则执行器(RuleExecutor)将一系列规则(Rule)应用到语法树,最终生成物理执行计划并执行。其中,规则执行器包括语法分析器(Analyzer)和优化器(Optimizer)。
(2)Spark Streaming:用于流式计算。Spark Streaming支持Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和简单的TCP套接字等多种数据输入源。输入流接收器(Receiver)负责接入数据,是接入数据流的接口规范。Dstream是Spark Streaming中所有数据流的抽象,Dstream可以被组织为Dstream Graph。Dstream本质上由一系列连续的RDD组成。
(3)GraphX:Spark提供的分布式图计算框架。GraphX主要遵循整体同步并行(bulk Synchronous parallel,BSP)计算模式下的Pregel模型实现。GraphX提供了对图的抽象Graph,Graph由顶点(Vertex),边(Edge)及继承了Edge的EdgeTriplet三种结构组成。GraphX目前已经封装了最短路径,网页排名,连接组件,三角关系统计等算法的实现,用户可以选择使用。
(4)MLlib:Spark提供的机器学习框架。机器学习是一门设计概率论、统计学、逼近论、凸分析、算法复杂度理论等多领域的交叉学科。MLlib目前已经提供了基础统计、分析、回归、决策树、随机森林、朴素贝叶斯、保序回归、协同过滤、聚类、维数缩减、特征提取与转型、频繁模式挖掘、预言模型标记语言、管道等多种数理统计、概率论、数据挖掘方面的数学算法。

2.spark streaming

SparkStreaming是一个SparkCore API的一个扩展,底层基于SparkCore,是一个高吞吐、可扩展、可容错的分布式实时流计算框架。

原理,概念,特点

Streaming Context是SparkContext的包装类,是对SparkContext的增强,里面持有SparkContext的引用,并且要指定生成批次的时间间隔,用来创建原始的DStream

在这里插入图片描述

整合kafaka

在这里插入图片描述

发布了23 篇原创文章 · 获赞 27 · 访问量 2258

猜你喜欢

转载自blog.csdn.net/MyNameIsWangYi/article/details/105690862
今日推荐