Spark 介绍及安装教程

1. Spark 的由来

1.1 Hadoop 的历史

   2003,2004 Google 2 篇论文

   2011 年发布 1.0 版本
   2012 年发布稳定版
在这里插入图片描述
 MR 的缺点:

   mr 基于数据集的计算,所以面向数据。

  1. 基本运算规则:从存储介质中获取(采集)数据,然后进行计算,最后将结果存储到介质中,所以主要应用于一次性计算,不适合数据挖掘和机器学习这样迭代计算和图形挖掘计算。
  2. MR 基于文件存储介质的操作,所以性能非常的慢。
  3. MR 和 hadoop 紧密耦合一起,无法动态替换。

   2013 年 10月发布 2.X 版本(Yarn)

在这里插入图片描述

1.2 Spark 历史

   2013 年 6 月发布
   Spark 基于 hadoop1.X 架构思想,采用自己的方式改善 Hadoop1.X 中的问题。
   Spark 计算基于内存(多任务) ,并且基于 Scala 语言开发,所以天生适合迭代计算。
在这里插入图片描述

2. Spark 介绍

2.1 Spark 的定义

  Spark 是一种基于内存的快速、通用、可扩展的大数据分析引擎。

2.2 Spark 的内置模块

在这里插入图片描述

  1. Spark Core
    实现了 Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core 中还包括对弹性分布数据集(Resilent Distributed DataSet,简称 RDD)的 API 定义。
  2. Spark SQL
    是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、Parquet 以及 JSON 等。
  3. Spark Streaming
    是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。
  4. Spark Mlib
    提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外支持功能。
  5. 集群管理器
    Spark 设计可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(Cluster Manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度器,叫作独立调度器。

2.3 Spark 的特点


  1. 与 Hadoop 的 MapReduce 相比,Spark 基于内存的运算要快 100 倍以上,基于硬盘的运算也要快 10 倍以上。Spark 实现了高效的 DAG 执行引擎,可以通过基于内存来高效处理数据流。计算的中间结果是存在于内存中的。
  2. 易用
    Spark 支持 Java、Python 和 Scala 的 API,还支持超过 80 种高级算法,使用户可以快速构建不同的应用。而且 Spark 支持交互式的 Python 和 Scala 的 Shell,可以方便地在这些 Shell 中使用 Spark 集群来验证解决问题的方法。
  3. 通用
    Spark 提供了统一的解决方案。Spark 可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark Mlib)和图计算(GraphX)。这些不同类型的处理都可以在同一应用中无缝使用。减少了开发和维护的人力成本和部署平台的物力成本。
  4. 兼容性
    Spark 可以非常方便地与其他的开源产品进行融合。比如,Spark 可以使用 Hadoop YARN 和 Apache Mesos 作为它的资源管理和调度器,并且可以处理所有 Hadoop 支持的数据,包括 HDFS、HBase 等。这对于已经部署 Hadoop 集群的用户特别重要,因为不需要做任何数据迁移就可以使用 Spark 的强大处理能力。

2.4 Spark 的重要角色

2.4.1 Driver(驱动器)

   Spark 的驱动器是执行开发程序中 main 方法的进程。它负责开发人员编写的用来创建 SparkContent、创建 RDD,以及进行 RDD 的转化操作和行动操作代码的执行。当启动 Spark shell 的时候,系统后台自启动了一个 Spark 驱动程序,就是在 Spark shell 中预加载了一个叫作 sc 的 SparkContent 对象。如果驱动器程序终止,那么 Spark 应用也结束了。

Driver 主要负责:

  1. 把用户程序转为作业(JOB)。
  2. 跟踪 Executor 的运行状况。
  3. 为执行器节点调度任务。
  4. UI 展示应用运行状态。

2.4.2 Executor(执行器)

   Spark Executor 是一个工作进程,负责在 Spark 作业中运行任务,任务之间相互独立。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续进行,因为会将出错节点上的任务调度到其他 Executor 节点上继续运行。

Executor 主要负责:

  1. 负责运行组成 Spark 应用的任务,并将结果返回个驱动器进程。
  2. 通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

3. Spark 安装

3.1 下载地址

  1. 官网下载地址

    Spark 官网

  2. 文档查看地址

    Spark 官方文档

3.2 安装教程

  1. 通过 Xftp 将安装包上传到 Linux 系统上。
  2. 解压 Spark 安装包到指定已有目录。
tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/module
  1. 重命名。
mv spark-2.3.1-bin-hadoop2.7/ spark
  1. 在 spark 安装目录下启动 spark-shell 查看是否安装成功。
bin/spark-shell

成功页面:
在这里插入图片描述

发布了14 篇原创文章 · 获赞 33 · 访问量 1522

猜你喜欢

转载自blog.csdn.net/weixin_42837961/article/details/104504032
今日推荐