zoukankan      html  css  js  c++  java
  • Spark概述

                 Spark概述

                                         作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      Spark基于Hadoop1.x架构思想,采用自己的方式改善Hadoop1.x中的问题,接下来我们就一起来学习一下spark技术栈吧。

    一.什么是spark

    1>.什么是spark

      Spark是一种基于内存的快速,通用,可扩展的大数据分析引擎。
      2009年诞生于加州大学伯利克分校AMPLab,项目采用Scala编写。   2010年Spark项目被开源。   2013年6月称为Apache孵化项目,注意,此时Hadoop2.x版本还未发布哟(Hadoop2.x版本发布于同年10月份)   2014年2月成为Apache顶级项目。

    2>.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,Kubernetes以及Spark自带的一个简易调度器,叫作独立调度器。 
        Spark可在Hadoop,Apache Mesos,Kubernetes,独立或云中运行。它可以访问各种数据源。您可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用其独立集群模式运行Spark 。访问HDFS, Alluxio, Apache Cassandra, Apache HBase, Apache Hive以及数百种其他数据源中的数据。
    
      Spark的应用:
        Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。
        当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

    3>.spark特点

      快:
        与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上;
        Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流;
        计算的中间结果是存在于内存中的;

      易用:
        Spark支持Java,Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用;
        Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell种使用Spark集群来验证解决问题的方法;

      通用:
        Spark提供了统一的解决方案,Spark可以用于批处理,交互式查询(Spark SQL),实时流处理(Spark Steaming),机器学习(Spark MLlib)和图计算(GraphX)。
        这些不同类型的处理都可以在同一个应用中无缝使用,减少了开发和维护的人力成本和部署平台的物力成本。

      兼容性:
        Spark可以非常方便地与其他的开源产品进行融合。比如Spark可以使用Hadoop的YARN,Apache Mesos,Kubernetes等作为它的资源管理和调度器;
        Spark可以处理所有Hadoop支持的数据,包括HDFS,HBase等,这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。

    二.spark运行模式

      博主推荐阅读:
        http://spark.apache.org/docs/2.4.6/cluster-overview.html
        http://spark.apache.org/docs/2.4.6/
        http://spark.apache.org
    
      下载Spark地址:
        http://spark.apache.org/downloads.html

    1>.Local模式

      Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。
    
      它可以通过以下的方式设置Master:
        local:
          所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式。
        local[K]:
          指定使用几个线程来运行计算,比如local[12]就是运行12个worker线程,通常我们的cpu有几个core就指定几个线程,最大化利用CPU的计算能力。
        local[*]:
          这种模式直接帮你按照CPU最多cores来设置线程数了。
    
      博主推荐阅读:     Spark的Local运行模式部署实战案例:https:
    //www.cnblogs.com/yinzhengjie2020/p/13111177.html

    2>.Standalone模式

      如下图所示,Spark有内置的集群管理起,它是由一个Master和多个Worker节点构成的spark集群,spark应用程序运行在该集群中。
    
      此时spark集群模式我们称之为Standone模式。
    
      如下图所示,我们一起分析一下Spark Driver和Spark Executor之间的关系:
        Driver:
          创建SparkContext的应用程序称之为Driver,它可以发送任务给Executor。
        Executor:
          执行其用于接收任务并执行任务,并将任务执行状态反馈给Driver。所有的RRD算子(Opertor)的计算功能全部由Executor执行。
        温馨提示:
          Driver和Executor可能不在同一台服务器,若在Driver中声明了一个变量需要在Executor中引用时,就需要将Driver的数据序列化后在通过网络IO发送给Executor所在机器,因此若变量的引用无法序列化时Executor就会出现引用失败的情况。
      博主推荐阅读:     Spark的Standalone运行模式部署实战案例:https:
    //www.cnblogs.com/yinzhengjie2020/p/13122259.html

    3>.YARN模式

      Spark客户端直接连接YARN,不需要额外构建spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
        yarn-client:
          Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出     yarn
    -cluster:
          Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster)适用于生产环境。   博主推荐阅读:     Spark的Yarn运行模式部署实战案例:https:
    //www.cnblogs.com/yinzhengjie2020/p/13128488.html

    4>.Mesos模式

      Spark 2.4.6专为与Mesos 1.0.0或更高版本一起使用而设计,不需要任何特殊的Mesos补丁。基于文件和环境的机密支持需要Mesos 1.3.0或更高版本。
    
      Spark客户端直接连接Mesos;不需要额外构建Spark集群。国内应用比较少,更多的是运用yarn调度。
    
      博主推荐阅读:
        http://spark.apache.org/docs/2.4.6/running-on-mesos.html

    5>.Kubernetes模式

      Spark可以在Kubernetes管理的集群上运行。此功能使用已添加到Spark的本地Kubernetes调度程序。
    
      Kubernetes调度程序目前处于试验阶段。在将来的版本中,配置,容器映像和入口点可能会发生行为更改。
    
      博主推荐阅读:
        http://spark.apache.org/docs/2.4.6/running-on-kubernetes.html

     

    三.案例实操

    1>.

     

    2>.

     

    3>.

  • 相关阅读:
    Sql in VBA 之 初识ADO
    Excel读取Word Table元素
    工作表是否已存在函数
    按模板生成工作表
    多层字典对象应用案例分析
    字典的应用
    字典的基本功能
    Dictionary 对象
    File System Object(FSO对象)B
    File System Object(FSO对象)A
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/13096786.html
Copyright © 2011-2022 走看看