大数据开发:Spark入门详解(大数据spark开发工程师)

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

一.关于Spark的概述

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

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

二.Spark应用框架

大数据开发:Spark入门详解(大数据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入门详解(大数据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入门详解(大数据spark开发工程师)

四.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入门详解(大数据spark开发工程师)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年3月21日 上午9:48
下一篇 2023年3月21日 上午9:58

相关推荐

  • 黑龙江林甸多政策助养牛初见成效

      “从申请、核实、审批到贷款发放,总共才用了两天。有了这笔钱,我家又能添置几头牛了。用奶资作抵押,贷款方便,还有政府贴息,自己掏不了几个钱。”说起当地的好…

    科研百科 2022年5月28日
    412
  • css 开发工具

    CSS(层叠样式表)是一种用于网页设计的标记语言,它可以控制网页的布局和外观。在开发网页时,使用合适的CSS开发工具可以极大地提高效率和准确性。本文将介绍一些常用的CSS开发工具,…

    科研百科 2023年7月20日
    169
  • 项目精细化管理提出22化主要体现在什么和什么的规范有序和精细管理

    近年来,随着项目精细化管理的不断提出和实践,项目管理水平得到了显著提升。而22化则是其中一个重要的方面,它主要体现在规范有序和精细管理上。 规范有序是项目精细化管理的基础。一个好的…

    科研百科 2024年10月21日
    25
  • 投资建设项目管理

    投资建设项目管理 投资建设项目管理是指对建设活动的各个方面进行计划、组织、指挥和控制,以确保项目按时完成、高质量交付和达到预期效果的过程。在投资建设项目中,项目管理的重要性不言而喻…

    科研百科 2024年9月23日
    21
  • 软件项目管理情况

    软件项目管理情况 软件项目是现代社会中不可或缺的一部分,随着信息技术的不断发展,软件项目也在不断壮大。在软件项目管理中,一个好的计划和执行是非常重要的,以下是一些软件项目管理中需要…

    科研百科 2024年5月31日
    53
  • 员工管理系统项目收获

    员工管理系统项目收获 随着企业规模的不断扩大和业务的增长,企业需要更好地管理员工和业务流程,因此开发一款员工管理系统变得非常重要。通过开发一款员工管理系统,企业可以更好地管理员工信…

    科研百科 2024年12月19日
    0
  • 个性化T恤定制设计,从面料、版型、颜色、设计风格开始讲起…

    如果你正在考虑参与定制T恤市场,你会很高兴知道该行业正在蓬勃发展。根据《DIYSKU个性化定制设计按需印刷行业前瞻报告》预测,该行业将在2025年达到30亿美元以上,比2022年的…

    科研百科 2023年5月15日
    216
  • 关于“软件”的另类定义(软件的另一种叫法)

    提到软件,你会想到什么?可能很多人的第一反应都是计算机软件或是手机里的应用程序。 《新华字典》里,“软件”有两种定义:一是与计算机系统运行有关的程序文件、数据等的统称;二是借指生产…

    科研百科 2024年5月21日
    67
  • 江阴:“三点发力”高标准打造党建工作指导员铁军

    来源:交汇点新闻客户端 交汇点讯 近日,来自江阴市自然资源和规划局、法院、江南水务等单位的7名“两新”兼职党建指导员来到华士镇,深入天华纱业、振宏锻造、苏阳电子等企业,实地了解企业…

    科研百科 2023年1月1日
    373
  • 甘肃省公共场所外语标识纠错小程序发布(公共场所外语标识规范化管理)

    中新网甘肃新闻9月8日电 7日,由甘肃省政府外事办和甘肃省文旅厅主办、敦煌市人民政府承办的“甘肃省公共场所外语标识纠错小程序”发布会在敦煌举行,标志着由甘肃省政府外事办和甘肃省文旅…

    科研百科 2024年7月2日
    57