spark组件有:1.SparkStreaming,针对实时数据进行流式计算的组件;2.SparkSQL,用来操作结构化数据的组件;3.GraphX,Spark面向图计算提供的框架与算法库;4.MLlib,一个机器学习算法库。其中,Spark Streaming是Spark平台上针对实时数据进行流式计算的组件。
一、spark组件
1.SparkStreaming
众多应用领域对实时数据的流式计算有着强烈的需求,例如网络环境中的网页服务器日志或是由用户提交的状态更新组成的消息队列等,这些都是实时数据流。Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。由于这些API与Spark Core中的基本操作相对应,因此开发者在熟知Spark核心概念与编程方法之后,编写Spark Streaming应用程序会更加得心应手。从底层设计来看,Spark Streaming支持与Spark Core同级别的容错性、吞吐量以及可伸缩性。
2.SparkSQL
Spark SQL是Spark用来操作结构化数据的组件。通过Spark SQL,用户可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源类型,例如Hive表、Parquet以及JSON等。Spark SQL不仅为Spark提供了一个SQL接口,还支持开发者将SQL语句融入到Spark应用程序开发过程中,无论是使用Python、Java还是Scala,用户可以在单个的应用中同时进行SQL查询和复杂的数据分析。由于能够与Spark所提供的丰富的计算环境紧密结合,Spark SQL得以从其他开源数据仓库工具中脱颖而出。Spark SQL在Spark l.0中被首次引入。在Spark SQL之前,美国加州大学伯克利分校曾经尝试修改Apache Hive以使其运行在Spark上,进而提出了组件Shark。然而随着Spark SQL的提出与发展,其与Spark引擎和API结合得更加紧密,使得Shark已经被Spark SQL所取代。
3.GraphX
GraphX是Spark面向图计算提供的框架与算法库。GraphX中提出了弹性分布式属性图的概念,并在此基础上实现了图视图与表视图的有机结合与统一;同时针对图数据处理提供了丰富的操作,例如取子图操作subgraph、顶点属性操作mapVertices、边属性操作mapEdges等。GraphX还实现了与Pregel的结合,可以直接使用一些常用图算法,如PageRank、三角形计数等。
4.MLlib
MLlib是Spark提供的一个机器学习算法库,其中包含了多种经典、常见的机器学习算法,主要有分类、回归、聚类、协同过滤等。MLlib不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语,包括一个通用的梯度下降优化基础算法。所有这些方法都被设计为可以在集群上轻松伸缩的架构。
延伸阅读:
二、spark执行角色
1.Driver(驱动器)
Spark Driver是执行开发程序中的主代码(创建 SparkContext、RDD的创建及转化操作等),负责Executor的资源(cpu、内存等)申请、Task调度的进程。Driver主要负责:
把用户程序转为任务
跟踪 Executor 的运行状况
为执行器节点调度任务
UI 展示应用运行状况
2.Executor(执行器)
Spark Executor 是一个工作进程,负责Task的具体运行和运行监控,并将Task的运行情况汇报给Driver。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,出错节点上的任务会被调度到其他 Executor 节点上继续运行。Executor主要负责:
负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;
通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
3.Task(作业任务)
Spark Task具体的任务执行单元,是Executor中的最小数据处理单元。执行具体的数据处理代码。并支持将处理结果输出到磁盘、内存或者外部存储系统中。Task任务间相互独立。
以上就是关于spark的内容希望对大家有帮助。