初识Spark之 基本概念
来源:互联网 发布:淘宝最过的零食店 编辑:程序博客网 时间:2024/06/10 05:45
概述
Spark是一个基于内存的用于处理、分析大数据的集群计算框架。
Spark组件
以上为Spark软件栈图
Spark项目包括多个紧密集成的组件,紧密集成的优点则体现在:
- 如果Spark底层优化了,基于Spark底层的组件也将得到相应优化
- 节省了各个组件组合使用时的部署、测试等时间
- 向Spark增加新组件时,其它组件都可立刻享用
Spark Core:
是Spark生态系统的基础,为其它的高级组件提供底层服务。
实现了任务调度、内存管理、容错机制等Spark项目中的基本功能,提供了创建和操作RDD的多个API
Saprk SQL:
是Spark处理结构化数据的库,就像Hive SQL,Mysql一样
应用场景:企业中用来做报表统计
Spark Streaming:
是实时数据流处理组件,类似Storm,Spark Streaming提供了API来操作实时流数据
应用场景:企业中用来从Kafka(或其他的消息队列中)接收数据做实时统计
Mlib:
一个包含通用机器学习功能的包,Machine learning lib包含分类,聚类,回归等,还包括模型评估,和数据导入
MLlib提供上面的这些方法,都支持集群上的横向扩展(在机器学习领域,较于Python的单机和处理数据量的有限性,MLlib能够集群处理 )
应用场景:机器学习
Graphx:
是处理图的库(例如,社交网络图),并进行图的并行计算
像Spark Streaming,Spark SQL一样,它也继承了RDD API
它提供了各种图的操作,和常用的图算法,例如PangeRank算法
应用场景:图计算
Cluster Managers:
就是集群管理,Spark自带一个集群管理是单独调度器
常见集群管理包括Hadoop YARN,Apache Mesos
主要特点(与Hadoop比较)
- 使用方便
Spark提供了比MapReduce更简单的编程模型
Hadoop MapReduce只有两个操作符,map和reduce。要求任何问题都必须能够分解为一系列的map作业和reduce作业,但并有些算法难以只用这两个操作符来描述
Spark则提供了丰富的API,有80多个用于处理数据的操作符,处理复杂数据则更简单 - 快速
Spark比Hadoop处理数据更快速的原因主要在两方面:
1、Spark允许应用程序利用内存缓存数据,因此使用Spark实现的同样的应用程序只需要从硬盘读取一次数据即可;而Hadoop需要反复从硬盘读取、写入数据,当数据量巨大时,这样带来的I/O延迟是十分之大的
2、拥有更先进的作业执行引擎。例如Spark花在磁盘I/O和数据shuffle操作的时间更少(数据的shuffle操作通常会涉及网络间的数据传输,会增加应用程序的执行时间) - 通用
为各种类型的数据处理作业提供一个统一的集成平台。因此可以使用单一的Spark框架,创建一个包含多个不同类型任务的数据处理流水线,而不用学习不同的框架或者部署单独的集群。Spark自带了一系列的库,用于批处理、交互分析、流处理、机器学习、图计算等。越来越多流行的应用和库开始集成到Spark中或添加了对Spark的支持,这说明Spark在未来将更加强大。 - 可扩展
Spark集群的数据处理能力可以通过增加更多集群节点的方式得以提升,并且这个特性对于应用程序来说是透明的,往Spark集群扩展节点时,无须改动任何代码。 - 容错
Spark能自动处理集群中的节点故障,这样应用程序开发者无须在开发过程中处理这些异常。
Spark总体架构
工作节点-worker:为Spark应用提供CPU、内存和存储资源,把Spark应用当成分布式进程在集群节点上执行
集群管理员-cluster manager:控制整个集群,管理集群中worker节点的计算资源,Spark目前支持三种集群管理员,分别为单独模式、Mesos模式、YARN模式
驱动程序-Driver Program:提供数据处理的代码,Spark将在worker节点上执行这些代码。包含程序的main()方法,RDD的定义和操作,管理Executor
执行者-Executor:Spark应用程序运行在worker节点上的一个进程,可以利用多线程的放并发执行应用代码,并且负责将数据存到内存或磁盘上
任务-task:是运行Spark应用程序的基本单位,Spark为每一个数据分区创建一个任务,一个执行者可以并发执行一个或多个任务。任务数量由分区数量决定
术语
shuffle操作
在集群节点上对数据进行重新分配,此分配并不是随机的,而是按照某些标准将数据分成不同的集合,每个集合就是一个新的分区。也就是把一组无规则的数据尽量转换成一组具有一定规则的数据(洗牌的逆操作)作业-Job
是一系列计算的集合,本质上就是在Spark集群上运行数据处理算法。一个应用程序可以发起多个Job阶段-Stage
每个Job会被拆分成多组Task, 一组Task称为一个Stage。Stage的边界就是发生shuffle的地方,将task规整到不同的阶段。
数据源
Spark作为一个计算框架,并没有存储系统,但是它可以搭配外部存储系统使用,一般会选择搭配能够存储大量数据的分布式存储系统使用。任何Hadoop支持的数据源都可以被Spark Core使用,例如HDFS、HBase、Cassandra等。Spark应用程序也可以读写本地文件系统上的数据并在单机上处理,这个特性对于Spark的学习有着重大意义。
以上,为Mohammed Guller的《Big Data Analytics with Saprk》一书的学习笔记
- 初识Spark之 基本概念
- 初识Spark之 Spark API
- Spark中文手册3:Spark之基本概念
- Spark学习笔记之初识
- 线程——线程初识之基本概念
- 初识Spark2.0之Spark SQL
- 初识Spark之 大数据技术提要
- 初识Spark2.0之Spark SQL
- Spark 基本概念
- Spark基本概念
- Spark基本概念
- spark基本概念
- spark基本概念
- Spark基本概念
- spark基本概念
- spark基本概念
- Spark中文手册4:Spark之基本概念(2)
- Spark中文手册5:Spark之基本概念(3)
- 完全覆盖问题
- 【编程题】数组中是否含有该整数
- 求职应用的制作
- Java中数组和List的排序
- RGB565颜色表,附RGB888转RGB565工具,RGB24转RGB565工具
- 初识Spark之 基本概念
- 【android】调用系统拨号器进行拨号
- 关于roscd的roscd: No such package/stack 'beginner_tutorials'
- kali开启ssh服务
- Android触摸事件派发机制详解与源码分析二(ViewGroup篇)
- 论“&&”和“&”;以及“||”和“|”的区别
- 上下文过滤及区块的建立
- Leetcode 464. Can I Win
- vim/vi常用的快捷方式