Spark入门(1-4)安装、运行Spark

如何安装Spark

安装和使用Spark有几种不一样方式。你能够在本身的电脑上将Spark做为一个独立的框架安装或者从诸如Cloudera,HortonWorks或MapR之类的供应商处获取一个Spark虚拟机镜像直接使用。或者你也可使用在云端环境(如Databricks Cloud)安装并配置好的Spark。html

在本文中,咱们将把Spark做为一个独立的框架安装并在本地启动它。最近Spark刚刚发布了1.2.0版本。咱们将用这一版本完成示例应用的代码展现。java

如何运行Spark

当你在本地机器安装了Spark或使用了基于云端的Spark后,有几种不一样的方式能够链接到Spark引擎。shell

下表展现了不一样的Spark运行模式所需的Master URL参数。express

如何与Spark交互

Spark启动并运行后,能够用Spark shell链接到Spark引擎进行交互式数据分析。Spark shell支持Scala和Python两种语言。Java不支持交互式的Shell,所以这一功能暂未在Java语言中实现。apache

能够用spark-shell.cmd和pyspark.cmd命令分别运行Scala版本和Python版本的Spark Shell。缓存

Spark网页控制台

不论Spark运行在哪种模式下,均可以经过访问Spark网页控制台查看Spark的做业结果和其余的统计数据,控制台的URL地址以下:oracle

http://localhost:4040app

Spark控制台以下图3所示,包括Stages,Storage,Environment和Executors四个标签页框架

(点击查看大图)ide

图3. Spark网页控制台

共享变量

Spark提供两种类型的共享变量能够提高集群环境中的Spark程序运行效率。分别是广播变量和累加器。

广播变量:广播变量能够在每台机器上缓存只读变量而不须要为各个任务发送该变量的拷贝。他们可让大的输入数据集的集群拷贝中的节点更加高效。

下面的代码片断展现了如何使用广播变量。

//
// Broadcast Variables
//
val broadcastVar = sc.broadcast(Array(1, 2, 3))
broadcastVar.value

累加器:只有在使用相关操做时才会添加累加器,所以它能够很好地支持并行。累加器可用于实现计数(就像在MapReduce中那样)或求和。能够用add方法将运行在集群上的任务添加到一个累加器变量中。不过这些任务没法读取变量的值。只有驱动程序才可以读取累加器的值。

下面的代码片断展现了如何使用累加器共享变量:

//
// Accumulators
//

val accum = sc.accumulator(0, "My Accumulator")

sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)

accum.value

Spark应用示例

本篇文章中所涉及的示例应用是一个简单的字数统计应用。这与学习用Hadoop进行大数据处理时的示例应用相同。咱们将在一个文本文件上执行一些数据分析查询。本示例中的文本文件和数据集都很小,不过无须修改任何代码,示例中所用到的Spark查询一样能够用到大容量数据集之上。

为了让讨论尽可能简单,咱们将使用Spark Scala Shell。

首先让咱们看一下如何在你本身的电脑上安装Spark。

前提条件:

  • 为了让Spark可以在本机正常工做,你须要安装Java开发工具包(JDK)。这将包含在下面的第一步中。
  • 一样还须要在电脑上安装Spark软件。下面的第二步将介绍如何完成这项工做。

注:下面这些指令都是以Windows环境为例。若是你使用不一样的操做系统环境,须要相应的修改系统变量和目录路径已匹配你的环境。

I. 安装JDK

1)从Oracle网站上下载JDK。推荐使用JDK 1.7版本

将JDK安装到一个没有空格的目录下。对于Windows用户,须要将JDK安装到像c:\dev这样的文件夹下,而不能安装到“c:\Program Files”文件夹下。“c:\Program Files”文件夹的名字中包含空格,若是软件安装到这个文件夹下会致使一些问题。

注:不要在“c:\Program Files”文件夹中安装JDK或(第二步中所描述的)Spark软件。

2)完成JDK安装后,切换至JDK 1.7目录下的”bin“文件夹,而后键入以下命令,验证JDK是否正确安装:

java -version

若是JDK安装正确,上述命令将显示Java版本。

II. 安装Spark软件:

Spark网站上下载最新版本的Spark。在本文发表时,最新的Spark版本是1.2。你能够根据Hadoop的版本选择一个特定的Spark版本安装。我下载了与Hadoop 2.4或更高版本匹配的Spark,文件名是spark-1.2.0-bin-hadoop2.4.tgz。

将安装文件解压到本地文件夹中(如:c:\dev)。

为了验证Spark安装的正确性,切换至Spark文件夹而后用以下命令启动Spark Shell。这是Windows环境下的命令。若是使用Linux或Mac OS,请相应地编辑命令以便可以在相应的平台上正确运行。

c:
cd c:\dev\spark-1.2.0-bin-hadoop2.4
bin\spark-shell

若是Spark安装正确,就可以在控制台的输出中看到以下信息。

….
15/01/17 23:17:46 INFO HttpServer: Starting HTTP Server
15/01/17 23:17:46 INFO Utils: Successfully started service 'HTTP class server' on port 58132.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.2.0
      /_/

Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71)
Type in expressions to have them evaluated.
Type :help for more information.
….
15/01/17 23:17:53 INFO BlockManagerMaster: Registered BlockManager
15/01/17 23:17:53 INFO SparkILoop: Created spark context..
Spark context available as sc.

能够键入以下命令检查Spark Shell是否工做正常。

sc.version

(或)

sc.appName

完成上述步骤以后,能够键入以下命令退出Spark Shell窗口:

:quit

若是想启动Spark Python Shell,须要先在电脑上安装Python。你能够下载并安装Anaconda,这是一个免费的Python发行版本,其中包括了一些比较流行的科学、数学、工程和数据分析方面的Python包。

而后能够运行以下命令启动Spark Python Shell:

c:
cd c:\dev\spark-1.2.0-bin-hadoop2.4
bin\pyspark

Spark示例应用

完成Spark安装并启动后,就能够用Spark API执行数据分析查询了。

这些从文本文件中读取并处理数据的命令都很简单。咱们将在这一系列文章的后续文章中向你们介绍更高级的Spark框架使用的用例。

首先让咱们用Spark API运行流行的Word Count示例。若是尚未运行Spark Scala Shell,首先打开一个Scala Shell窗口。这个示例的相关命令以下所示:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
 
val txtFile = "README.md"
val txtData = sc.textFile(txtFile)
txtData.cache()

咱们能够调用cache函数将上一步生成的RDD对象保存到缓存中,在此以后Spark就不须要在每次数据查询时都从新计算。须要注意的是,cache()是一个延迟操做。在咱们调用cache时,Spark并不会立刻将数据存储到内存中。只有当在某个RDD上调用一个行动时,才会真正执行这个操做。

如今,咱们能够调用count函数,看一下在文本文件中有多少行数据。

txtData.count()

而后,咱们能够执行以下命令进行字数统计。在文本文件中统计数据会显示在每一个单词的后面。

val wcData = txtData.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)

wcData.collect().foreach(println)

若是想查看更多关于如何使用Spark核心API的代码示例,请参考网站上的Spark文档

相关文章
相关标签/搜索