相对于第一代的大数据生态系统Hadoop中的MapReduce,Spark 无论是在性能还是在方案的统一性方面,都有着极大的优势。Spark框架包含了多个紧密集成的组件,如图4所示。位于底层的是Spark Core,其实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针对弹性分布式数据集提供了丰富的操作。在Spark Core的基础上,Spark提供了一系列面向不同应用需求的组件,主要有Spark SQL、Spark Streaming、MLlib、GraphX。

图4 Spark软件栈

1.Spark SQL

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所取代。

2.Spark Streaming

众多应用领域对实时数据的流式计算有着强烈的需求,例如网络环境中的网页服务器日志或是由用户提交的状态更新组成的消息队列等,这些都是实时数据流。Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。由于这些API与Spark Core中的基本操作相对应,因此开发者在熟知Spark核心概念与编程方法之后,编写Spark Streaming应用程序会更加得心应手。从底层设计来看,Spark Streaming支持与Spark Core同级别的容错性、吞吐量以及可伸缩性。

3.MLlib

MLlib是Spark提供的一个机器学习算法库,其中包含了多种经典、常见的机器学习算法,主要有分类、回归、聚类、协同过滤等。MLlib不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语,包括一个通用的梯度下降优化基础算法。所有这些方法都被设计为可以在集群上轻松伸缩的架构。

4.GraphX

GraphX是Spark面向图计算提供的框架与算法库。GraphX中提出了弹性分布式属性图的概念,并在此基础上实现了图视图与表视图的有机结合与统一;同时针对图数据处理提供了丰富的操作,例如取子图操作subgraph、顶点属性操作mapVertices、边属性操作mapEdges等。GraphX还实现了与Pregel的结合,可以直接使用一些常用图算法,如PageRank、三角形计数等。

上述这些Spark核心组件都以jar包的形式提供给用户,这意味着在使用这些组件时,与MapReduce上的Hive、Mahout、Pig等组件不同,无需进行复杂烦琐的学习、部署、维护和测试等一系列工作,用户只要搭建好Spark平台便可以直接使用这些组件,从而节省了大量的系统开发与运维成本。将这些组件放在一起,就构成了一个Spark软件栈。基于这个软件栈,Spark提出并实现了大数据处理的一种理念——“一栈式解决方案(one stack to rule them all)”,即Spark可同时对大数据进行批处理、流式处理和交互式查询,如图5所示。借助于这一软件栈用户可以简单而低耗地把各种处理流程综合在一起,充分体现了Spark的通用性。

图5 Spark面向大数据的综合处理示意图

spark的四大核心组件相关推荐

  1. Mybatis中SqlSession下的四大核心组件分析

    SqlSession下的四大核心组件 Mybatis中SqlSession下的四大核心组件:ParameterHandler .ResultSetHandler .StatementHandler . ...

  2. 学习笔记之Android四大核心组件详解

    概述 Android四大核心组件指的是Activity,Service,ContentProvider,BroadCastReceiver,核心组件都是由Android系统进行管理和维护的,一般都要在 ...

  3. SpringBoot四大核心组件,必知必会!

    欢迎关注方志朋的博客,回复"666"获面试宝典 前言 先透露一下,四大组件分别是:starter, autoconfigure, CLI 以及actuator.下面我们就来详细介绍 ...

  4. 第二章 Spring Boot四大核心组件

    文章目录 前言 一.Spring Boot Starter 1.1 Starter的应用示例 1.2 Spring Boot之前的Thymeleaf和Mybatis应用 1.2.1 Thymeleaf ...

  5. Android四大核心组件——汇总

    一.Activity 生命周期 七大方法详解 onCreate:Activity创建时第一个调用的方法,通常我们在该方法中加载布局文件,初始化UI组件,事件注册等等 onStart:在onCreate ...

  6. Spark GraphX 快速入门

    教程目录 0x00 教程内容 0x01 Spark GraphX 介绍 1. GraphX 介绍 2. GraphX 的使用场景 0x02 GraphX 重要概念与实操 1. 属性图 2. 多种方式理 ...

  7. Spark学习一 ——初步认识Spark

    1.什么是Spark Apache Spark™是用于大规模数据处理的统一分析引擎. 是基于内存计算的大数据并行计算框架 spark是一个实现快速通用的集群计算平台.它是由加州大学伯克利分校AMP实验 ...

  8. spark面试总结1

    Spark Core面试篇01 一.简答题 1.Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper? 答:spark通过这个参数spark.deploy.z ...

  9. 【核心API开发】Spark入门教程[3]

    本教程源于2016年3月出版书籍<Spark原理.机制及应用> ,在此以知识共享为初衷公开部分内容,如有兴趣,请支持正版书籍. Spark综合了前人分布式数据处理架构和语言的优缺点,使用简 ...

最新文章

  1. UE中的几个极有用功能
  2. 智源社区票选2021 AI十大进展出炉!
  3. PL/SQL学习笔记-循环控制与顺序控制
  4. 什么是URL?协议头、路径和端口是什么意思?
  5. Spring 如何读取properties文件内容
  6. Microsoft Visual Studio 正忙
  7. Python 得到主机字节序
  8. 图论(二):图的割点(cut vertex)与连通度(connectivity)
  9. 公共的数据库访问访问类 SqlHelper.cs
  10. java计算机毕业设计中美医院病历管理系统源代码+系统+数据库+lw文档
  11. [讨论] AUTOCAD二次开发简介
  12. pandas25 if else语句(多数据df选择)( tcy)
  13. 【VS2015】Win7 X64上面安装VS2015
  14. 用非门74HC04与无源晶振产生时钟信号的两种电路
  15. outlook自动保存html,outlook怎么编辑HTML源文件
  16. ffmpeg分离视频音频流!
  17. oracle中的replace into
  18. android下运行时动态链接dlopen()和dlsym()的实现
  19. buuoj Pwn writeup 246-250
  20. 物联网“遇上”云原生,会擦出怎样的火花?

热门文章

  1. 开启子进程的两种方法
  2. Adobe CEP 常用宿主事件名
  3. java异常处借接错书_Java入门第三季-异常-图书馆借书系统
  4. VMware安装VMwareTolls
  5. MCUXpresso开发NXP RT1060(3)——移植LVGL到NXP RT1060
  6. HTB打靶(Active Directory 101 Mantis)
  7. 免费临时邮箱,一次性邮箱
  8. 前端学习资料网址汇总
  9. 视频伪原创片头片尾 视频合并会改变md5
  10. 无线打印服务器怎么安装,【DDwifi打印服务器】Windows 7系统添加打印机步骤(离线安装打印机驱动)...