初识Spark之 基本概念

来源:互联网 发布:淘宝最过的零食店 编辑:程序博客网 时间:2024/06/10 05:45

概述

Spark是一个基于内存的用于处理、分析大数据的集群计算框架。

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》一书的学习笔记

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁宝宝门牙腐蚀怎么办 3岁宝宝有蛀牙怎么办 3岁宝宝乳牙腐蚀怎么办 三岁宝宝烂牙怎么办 宝宝牙被腐蚀了怎么办 嗓子声音变粗了怎么办 玩网游钱被骗了怎么办 家里的白墙脏了怎么办 月经弄到床垫上怎么办 出租房墙面太脏怎么办 苹果6镜头模糊了怎么办 6s前摄像头进灰怎么办 手机镜头进灰了怎么办 6s摄像头进灰了怎么办 7plus摄像头进灰怎么办 苹果喇叭进灰了怎么办 苹果7摄像头进灰怎么办 锁眼里胶水堵了 怎么办 锁眼被牙签堵了怎么办 锁孔被胶水堵了怎么办 快手上不了同城怎么办 昌珉入伍宋茜怎么办 嗓子里卡了鱼刺怎么办 在餐厅吃到虫子怎么办 在餐厅吃出虫子怎么办 孕妇被虫子咬了怎么办 吃外卖吃到虫子怎么办 杯子盖拧错位了怎么办 身边有吸毒的人怎么办 如果牛难产了怎么办要 牛难产拉不出来怎么办 老公发现老婆有外遇怎么办 睡眠不好半夜老是醒怎么办 拔完智齿肿了怎么办 拔牙后咽口水疼怎么办 吃了脏东西拉肚子怎么办 微信遇到仙人跳怎么办 牙有裂痕疼应该怎么办 胸罩在学校掉了怎么办 锁屏密码忘记了怎么办 中汇支付不到账怎么办