众所周知,Spark 它是专门为大规模数据处理而设计的快速通用计算引擎,因此Spark它在数据的挖掘等领域便有着非常广泛的应用,而从现阶段来讲的话它也已经形成了一个高速发展并且应用相当广泛的生态系统了。所以,今天这篇文章便要为大家做一个Spark入门基础的简单介绍,满满干货,请不要错过。

一、关于Spark的概述

我们可以了解到,当前,MapReduce编程模型成为了一种比较主流的分布式编程模型,并且它也极大地方便了编程人员在不会分布式并行编程的情况下,能够将自己的程序运行在分布式系统上。

但其实从MapReduce来看它也存在了一些缺陷的,比如说它的高延迟以及不支持DAG模型,Reduce的中间数据落地等。因此为了优化改进MapReduce的项目,比如交互查询引擎Impala、支持内存计算Spark等这些方面。Spark凭借自身先进的设计理念,一跃成为了社区里面的热门项目。而目前来看Spark相对于MapReduce的一些优势有:低延迟、支持DAG和分布式内存计算。

二.Spark应用框架

客户Spark程序(Driver Program)操作Spark集群其实它是通过SparkContext这个对象来进行的,而SparkContext自身作为一个操作和调度的总入口,它在初始化的过程中集群管理器则会进行DAGScheduler作业调度和TaskScheduler任务调度的创建。

而DAGScheduler作业调度模块则又是依靠于Stage的这个调度模块来进行的,DAG全称 Directed Acyclic Graph。简单的来讲的话,它其实就是一个由顶点和有方向性的边构成的图,然后他可以其中从任意的一个顶点去出发,但是呢又没有路径可以将其带回到出发的顶点。并且它为每个Spark Job计算具有依赖关系的多个Stage任务阶段(通常根据Shuffle来划分Stage,比如说groupByKey, reduceByKey等涉及到shuffle的transformation就会产生新的stage),然后到后面的时候它又会将每个Stage划分为具体的一组任务,最后就以TaskSets的形式提交给底层的任务调度模块来进行一个具体执行。

三.Spark的内置项目

Spark Core: 它实现了的是Spark 中的一个基本功能,其中它是包含了任务的调度、内存的管理、错误的恢复、以及与存储系统 交互等模块。其中Spark Core 中它还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的 API 定义。

Spark SQL: 这个是 Spark 所用来进行操作结构化数据的一个程序包。并且它通过了 Spark SQL,我们可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。而我们可以知道Spark SQL 支持多种数据源,比 如 Hive 表、Parquet 以及 JSON 等。

Spark Streaming: 这个是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

Spark MLlib: 提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。

集群管理器: Spark 设计不仅可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,并且同时能够获得一个最大的灵活性,Spark 支持便会在各种集群管理器(cluster manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度器,它也叫作独立调度器。

四.Spark生态圈介绍

Spark力图整合机器学习(MLib)、图算法(GraphX)、流式计算(Spark Streaming)和数据仓库(Spark SQL)等领域,通过计算引擎Spark,弹性分布式数据集(RDD),架构出一个新的大数据应用平台。

Spark生态圈以HDFS、S3、Techyon为底层存储引擎,以Yarn、Mesos和Standlone作为资源调度引擎;使用Spark,可以实现MapReduce应用;基于Spark,Spark SQL可以实现即席查询,Spark Streaming可以处理实时应用,MLib可以实现机器学习算法,GraphX可以实现图计算,SparkR可以实现复杂数学计算。

五.Spark的优点

①减少磁盘I/O:随着实时大数据应用越来越多,Hadoop作为离线的高吞吐、低响应框架已不能满足这类需求。HadoopMapReduce的map端将中间输出和结果存储在磁盘中,reduce端又需要从磁盘读写中间结果,势必造成磁盘IO成为瓶颈。Spark允许将map端的中间输出和结果存储在内存中,reduce端在拉取中间结果时避免了大量的磁盘I/O。Hadoop Yarn中的ApplicationMaster申请到Container后,具体的任务需要利用NodeManager从HDFS的不同节点下载任务所需的资源(如Jar包),这也增加了磁盘I/O。Spark将应用程序上传的资源文件缓冲到Driver本地文件服务的内存中,当Executor执行任务时直接从Driver的内存中读取,也节省了大量的磁盘I/O。

②增加并行度:由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop将它们简单的通过串行执行衔接起来。Spark把不同的环节抽象为Stage,允许多个Stage既可以串行执行,又可以并行执行。

③避免重新计算:当Stage中某个分区的Task执行失败后,会重新对此Stage调度,但在重新调度的时候会过滤已经执行成功的分区任务,所以不会造成重复计算和资源浪费。

④可选的Shuffle排序:HadoopMapReduce在Shuffle之前有着固定的排序操作,而Spark则可以根据不同场景选择在map端排序或者reduce端排序。

⑤灵活的内存管理策略:Spark将内存分为堆上的存储内存、堆外的存储内存、堆上的执行内存、堆外的执行内存4个部分。Spark既提供了执行内存和存储内存之间是固定边界的实现,又提供了执行内存和存储内存之间是“软”边界的实现。Spark默认使用“软”边界的实现,执行内存或存储内存中的任意一方在资源不足时都可以借用另一方的内存,最大限度的提高资源的利用率,减少对资源的浪费。Spark由于对内存使用的偏好,内存资源的多寡和使用率就显得尤为重要,为此Spark的内存管理器提供的Tungsten实现了一种与操作系统的内存Page非常相似的数据结构,用于直接操作操作系统内存,节省了创建的Java对象在堆中占用的内存,使得Spark对内存的使用效率更加接近硬件。Spark会给每个Task分配一个配套的任务内存管理器,对Task粒度的内存进行管理。Task的内存可以被多个内部的消费者消费,任务内存管理器对每个消费者进行Task内存的分配与管理,因此Spark对内存有着更细粒度的管理。

以上本篇内容便是对Spark的一些基础入门的介绍,后续还将对Spark做一些后续的介绍,以便能更加深入的对Spark做一个了解。

大数据开发:Spark入门详解相关推荐

  1. 大数据发展规划及技术详解

    大数据发展规划及技术详解 1.BI的流程:主要是阐述一下BI的流程:第一,需求分析阶段,要搞清楚用户需求,就本例用户想要的是volte业务使用情况的月报表,必须要搞清楚月报表中包括哪些指标(包括维度指 ...

  2. <Zhuuu_ZZ>大数据技术之Flume详解

    大数据技术之Flume详解 一 Flume配置 Flume安装地址 环境配置 验证 二 Flume基础架构 1.定义 2.Flume组成架构 3.Flume组件 Agent Source Channe ...

  3. python海量数据分析师职业技能_大数据分析师技能图谱详解与零基础自学内容大全...

    全球的数据量正在以每18个月翻一倍的惊人速度增长,世界正在高速数字化,大数据堪比石油,如何掘金大数据是所有个人.企业和国家的机遇和挑战.中国是人才大国,能理解和应用大数据的创新人才更是稀缺资源.大数据 ...

  4. 大数据课程培训大纲详解,大数据培训学习内容

    大数据助力成就非凡.大数据正在改变着商业游戏规则,为企业解决传统业务问题带来变革的机遇.毫无疑问,当未来企业尝试分析现有海量信息以推动业务价值增值时,必定会采用大数据技术.那么大数据培训哪家好呢?今天 ...

  5. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之5.即席查询Impala介绍及入门使用

    文章目录 前言 1.Impala概述 (1)Impala的概念和优势 (2)Impala的缺点及适用场景 2.Impala的安装与入门 (1)准备工作 (2)制作本地yum源 (3)安装Impala ...

  6. 大数据平台作业调度系统详解-理论篇

    大数据开发平台的核心组件之一:作业调度系统. 作业调度系统是一个相对复杂的系统,涉及的内容繁杂,针对的场景多种多样,实现的方案千差万别,是一个需要理论和实践并重的系统. 本文先从大的场景划分的角度对市 ...

  7. 大数据开发基础入门与项目实战(一)Java SE之1.初识计算机和Java语言

    文章目录 前言 1.计算机的体系结构 (1)计算机的基本概念 (2)常见的主要硬件 (3)主要硬件的详解 Ⅰ CPU Ⅱ 内存 Ⅲ 硬盘 Ⅳ 输入输出设备 (4)常见的主要软件 (5)计算机的体系结构 ...

  8. 大数据学前准备--zookeeper详解与集群搭建(保姆级教程)

    前言 本人是才学完大数据的无业游民,我将会总结学习收获或发表自己的学习心得,期望给初学者也为自己今后复习提供一些帮助. 我将陆续发布大数据阶段所学,包括但不限于(hadoop,hive,hbase,p ...

  9. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

最新文章

  1. 车辆摄像头夜晚场景图像ISP增强算法
  2. Java 8系列(一): 日期/时间- JSR310( Date and Time API)
  3. linux svn强制注释,svn强制提交时添加注释
  4. python pip install指定国内源镜像
  5. 趣挨踢 | 用大数据扒一扒蔡徐坤的真假流量粉
  6. 【M1芯片兼容】office 2021 Mac正式版最新更新
  7. Notepad++格式化JSON
  8. Linux: .bash_profile 与 .bashrc 的区别
  9. r矢量球坐标系旋度_三个常用坐标系的认识及矢量旋度表达式的证明
  10. 客房预订+餐饮预订+酒店app+移动端通用版电商app模板+Axure高保真酒店预订管理系统+积分商城+餐饮预订系统+优惠券+订单管理+移动端酒店管理原型+酒店电商原型
  11. 【WPF】如何获取命令行参数
  12. imageai--自动机器学习初体验
  13. 六、python实现日语单词索引:查询单词对应的课
  14. awk sed 删除文件最后列及最后一个字符
  15. hexo搭建个人博客之seo优化
  16. php FPDF类库应用实现代码
  17. 学计算机要不要懂绘画,学绘画 学修图 你需要一台怎样的电脑
  18. asp.net(c#)中IsPostBack是什么意思
  19. 三层交换机实现vlan间通信
  20. 中国互联网11个创业派系456创始人名单大全

热门文章

  1. cad完全卸载教程_如何完全卸载(删除)cad吗? _ 设计学院_设计软件教程自学网...
  2. 28.深入浅出MYSQL的优化
  3. Android Studio 最新汉化包下载及安装方法,持续更新 IDEA
  4. CNS文章代码学习(二)Immunity 三级淋巴结构 文章学习
  5. Win10打印机一直显示正在删除不掉怎么解决?
  6. 知名软件ADSafe暗藏恶意代码 从众多网站劫持流量
  7. VR视频播放器Video Player
  8. 网络机柜的型号和规格有哪些
  9. 计算机一级考试实训在线做,程序设计能力 在线实训系统
  10. Apache Server搭建图片服务器