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>.

原文地址:https://www.cnblogs.com/yinzhengjie2020/p/13096786.html