【Spark】Spark的安装与部署

这段时间太忙,现在终于有点时间补充一下近段日子来的学习笔记,下面讲一讲Spark的安装与部署。
【Spark】Spark的安装与部署

Spark

  • 它是一个快速的,通用的集群计算系统。它对Java,Scala,Python和R提供了高层API,并且有一个经优化的支持通用执行图计算的引擎。
  • 它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL,用于机器学习的 MLlib,用于图计算的 GraphX 和 Spark Streaming
  • 它基于Hadoop MapReduce,它扩展了MapReduce模型,以有效地将其用于更多类型的计算,包括交互式查询和流处理。 Spark的主要特性是它的内存中集群计算,提高了应用程序的处理速度。

总的来说,Spark凭借着内存迭代的特点,比MapReduce的速度更快,并且具有交互式计算模型DAG,拥有容错性数据集合RDD
【Spark】Spark的安装与部署

Driver Program

  • 分发任务
  • 收集每一个任务的计算机过 注意:一般不会把任务的计算结果存储到Driver中,因为这可能造成Memory Overflow,很危险。一般会把计算结果存储在集群外部,比如MySQL,Oracle,Hbse,HDFS等
  • 如果task执行失败,会重试

【Spark】Spark的安装与部署

Spark core

包含两个内容,DAG和RDD。Spark core是spark生态圈的核心,负责读取数据和分布式计算。

  • DAG——有向无环图,是一组顶点和边的组合,顶点代表了 RDD, 边代表了对 RDD 的一系列操作。
  • RDD——容错分布式数据,RDD分布在不同的集群节点的内存中,可以理解为一大数组,数组的每一个元素就是RDD的一个分区,一个RDD可以分布并被运算在多态计算机节点的内存以及硬盘中, RDD数据块可以放在磁盘上也可以放在内存中(取决于你的设置),如果出现缓冲失效或丢失,RDD分区可以重新计算刷新,RDD是不能被修改的,但是可以通过API被变换生成新的RDD
    【Spark】Spark的安装与部署
    总体来说Spark core就是spark功能调度管理中心,用来定义和管理RDD,RDD代表了一系列数据集合分布在基质的内存中,spark core 的任务就是对这些数据进行分布式计算
    【Spark】Spark的安装与部署
  • Java 1.8,需要配置环境变量

【Spark】Spark的安装与部署

  • Scala 2.12.10,需要配置环境变量
    【Spark】Spark的安装与部署
  • spark-2.4.4-bin-hadoop2.7.tgz,需要配置环境变量

【Spark】Spark的安装与部署
【Spark】Spark的安装与部署
【Spark】Spark的安装与部署
此时在命令行输入spark-shell后,报的错误原因是hadoop没有安装

  • Hadoop 2.7.1,需要配置环境变量
    【Spark】Spark的安装与部署
    正常情况下是可以运行成功并进入到Spark的命令行环境下的,但是对于有些用户可能会遇到空指针的错误。这个时候,主要是因为Hadoop的bin目录下没有winutils.exe文件的原因造成的。这里的解决办法是https://github.com/steveloughran/winutils

【Spark】Spark的安装与部署
安装配置成功:
【Spark】Spark的安装与部署
【Spark】Spark的安装与部署

Spark 脚本提交/运行/部署

  • Spark-shell
    交互式窗口模式,spark-shell启动完成后,可以在交互窗口中输入scala命令,一行一行的运行

  • Pyspark
    与spark-shell类似,是基于python的交互式运行窗口,以脚本的形式运行python命令。

  • Spark-submit
    程序部署,spark提供了一个容易上手的应用程序部署工具bin/spark-submit,可以完成spark应用在local、standalone、YARN、Mesos上的快捷部署,可以指定集群资源master,executor/dirver的内存资源等

RDD 的转换操作是返回新的 RDD 的操作。转换出来的 RDD 是惰性求值的,只有在行动操作中用到这些 RDD 时才会被计算
【Spark】Spark的安装与部署
行动操作用于执行计算并按指定的方式输出结果。行动操作接受 RDD,但是返回非 RDD,即输出一个值或者结果。在 RDD 执行过程中,真正的计算发生在行动操作。表 2 描述了常用的 RDD 行动操作。

【Spark】Spark的安装与部署
【Spark】Spark的安装与部署

Reference

  • Apache Spark 官方文档中文版
    https://github.com/apachecn/spark-doc-zh
  • Apache Spark Examples
    http://spark.apache.org/examples.html
  • Spark机器学习
    【Spark】Spark的安装与部署