8. Spark的安装和配置

第1.1节 为什么需要Spark

一、MapReduce计算模式的弊端

  • 首先,MapReduce的设计是为了用于高吞吐量的批数据处理作业的,本身的延迟就相对较高
  • 其次,数据是存储与HDFS中的,数据共享效率低。我们在前面WordCount的例子中可以看到,Job最后的结果必须要落盘。在MapRduce的Shuffle流程中,我们曾经介绍过,MapReduce的数据在Map端处理完成之后也都是存储在磁盘上的,没有很好的利用内存。当然,这一点其实是时代的限制,因为MapReduce模式在设计时,内存还是十分昂贵的
  • 再者,MapReduce对复杂计算的支持并不好,尤其是对于图计算、迭代计算。还记得那个WordCount吗?还记得那个两阶段的编程框架Mapper-Reducer吗?Hadoop的表达是匮乏的,在复杂计算中,无法高效的表达出计算逻辑。并且,MapReduce中的每次操作落盘,这倒是大量的时间浪费在IO上。熟悉操作系统的人都知道,IO操作是相当耗时的,这些问题,导致MapReduce在复杂计算上表现乏力。

二、Spark能做到什么

MapReduce的弊端促使科学家探索新的计算模式。在后Hadoop时代,开始出现新的大数据计算模式和系统。其中尤其以内存计算为核心,集诸多计算模式之大成的Spark生态是典型代表。Spark支持如下的计算:

  • 大数据查询分析计算
  • 批处理计算
  • 流式计算
  • 迭代计算
  • 图计算
  • 内存计算

相较于Hadoop MapReduce,Spark的优势也很明显,首先是 速度 ,官网的对比图简洁明了。

在这里插入图片描述

再者是 广泛性 ,Spark支持SQL,Streaming,以及Graph等。

其次是 多处运行 ,Spark可以在Hadoop,Mesos,Standalone或者在云上执行。

最后是 易用性 ,Spark支持Java, Scala, Python和R

三、 Spark的基本组件

在这里插入图片描述

上图展示了Spark生态中的基本组件。当然,随着Spark社区的发展,现在的Spark组件会更丰富一些。但是,不论是Spark SQL,Spark Streaming,Spark MLlib,还是GraphX组件,都是基于基本的Spark,即Spark Core。后续,我们也是基于Spark Core来介绍Spark。

第1.2节 Spark的安装

一、Spark安装

如果你已经安装好了Hadoop,那么你现在安装Spark应该是不费力气的。你可以点这里获得安装链接。

首先从官网下载你想要的Spark,一般来说,如果你已经安装好了Hadoop,你可以选择安装 pre-built with user-provider Apache Hadoop 版本。否则你可以选择其他自己喜欢的版本。一般来说,很少由于版本问题报错。

但是,为了统一,建议使用 Scala-2.11 版本。

将下载的好的Spark解压,放到你想要安装的位置。

说出来你可能不信,但是,这样Spark确实就装好了。这样,Spark就算安装完成了。

之后,我们可以跑一个样例。

cd spark #进入spark的主目录
bin/run-example SparkPi 2>&1 | grep "Pi is"

这是一个计算Pi值的示例程序,我们可以看到相应的结果。

在这里插入图片描述

我们也可以调用Spark的scala-shell交互式界面。

bin/spark-shell

在这里插入图片描述

我们在4040端口,可以看到Spark的WebUI。

在这里插入图片描述

二、Window下IDEA配置Spark的执行环境

前面我们提到过,如果在Windows下配置Hadoop的运行环境,重点在于安装winutils,并配置 Hadoop_home 。忘记的人,可以点这里,有了这些之后,其实就可以直接编写Spark代码了。当然,如果你是在linux环境下,那么这一步其实也是可以省略的。

打开IDEA,新建一个Maven项目,名字就叫 Apache-Spark 。添加如下Maven依赖。

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.4.6</version>
    </dependency>
</dependencies>

之后,我们main文件夹下创建一个新的文件夹,命名为Scala,再标记为Source Root。

在这里插入图片描述

之后,我们就可以在这个Scala文件夹下创建Scala项目了。需要注意的是,如果你的IDEA还没有配置Scala的编码支持,需要自行百度解决一下。

在这里插入图片描述

我们可以创建一个名为WordCount的scala文件。将下面的代码填进去。

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {

  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    val sc = new SparkContext(conf)

    val wordpair: RDD[String] = sc.textFile("D:\\代码\\java\\Apache-Spark\\data.txt") //换成你自己的路径
    val results = wordpair.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

    results.foreach(println)
  }
}

代码执行没问题,就意味着配置成功了。

三、Windows下PyCharm配置Spark的执行环境

直接使用pip命令或者在Anconda中下pyspark。

pip install pyspark

之后就可以进行编程了。当然,前提是你已经配置好了Hadoop在Windows下的执行环境。

from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster('local[*]').setAppName("WordCount")
sc = SparkContext(conf=conf)

wordpair = sc.textFile("D:\\代码\\python\\Apache-Spark\\data.txt") # 换成你的路径
results = wordpair.flatMap(lambda x : x.split(" ")).map(lambda x : (x,1)).reduceByKey(lambda x, y : x + y)

results.foreach(print)
Notice !!! 已经但凡涉及到Windows下的执行,基础都是之前安装好了Hadoop的Windows环境。如果你还没安装,建议先安装。

如果你也对大数据感兴趣,欢迎扫码关注公众号 “大数据面试学习指北”

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值