Spark 分布式计算框架之环境搭建

2017-02-26  本文已影响722人  kviccn

Spark 的开发语言是 Scala,而 Scala 运行于 JVM 之上,因此,搭建 Spark 的运行环境应该包括 JDK 和 Scala
(本文的操作均在 64位 ubuntu 16.04 操作系统下进行)

1. 安装 JDK

JDK 的安装方式看这里

2. 安装 Scala

2.1 下载

点击这里下载 Scala
本文下载的是 scala-2.12.1.tgz

$ wget http://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.tgz

2.2 解压

opt 目录下新建一个目录 scala

$ sudo mkdir /opt/scala

将刚才下载的文件移动到新创建的 scala 目录中

$ sudo mv scala-2.12.1.tgz /opt/scala

进入 scala 目录

$ cd /opt/scala

解压

$ sudo tar zxvf scala-2.12.1.tgz

2.3 配置

打开配置文件 .bashrc

$ sudo vim ~/.bashrc

在文件末尾添加如下代码:

export SCALA_HOME="/opt/scala/scala-2.12.1"
export PATH="$SCALA_HOME/bin:$PATH"

运行如下命令使配置立刻生效:

$ source ~/.bashrc

2.4 验证

在终端输入如下命令:

$ scala -version

如果看到这样的输出则证明安装成功:

Scala code runner version 2.12.1 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.

3. 安装 Spark

3.1 下载

点击这里下载 Spark
本文下载的是 spark-2.1.0-bin-hadoop2.7.tgz

$ wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz

3.2 解压

在用户家目录(~)下新建 apps 目录

$ mkdir ~/apps

将刚才下载的文件移动到 apps 目录中

$ mv spark-2.1.0-bin-hadoop2.7.tgz ~/apps

进入 apps 目录

$ cd ~/apps

解压

$ tar zxvf spark-2.1.0-bin-hadoop2.7.tgz

3.3 配置

打开配置文件 .bashrc

$ sudo vim ~/.bashrc

在文件末尾添加如下代码:

export SPARK_HOME="/home/YOUR_NAME/apps/spark-2.1.0-bin-hadoop2.7"

tip: 将 YOUR_NAME 替换成你的家目录

使配置立刻生效:

$ source ~/.bashrc

4. 配置 spark-env.sh

在运行 spark-shell 之前,我们需要进行一些配置

进入 Spark 的安装目录

$ cd ~/apps/spark-2.1.0-bin-hadoop2.7

复制一份 spark-env.sh.template,命名为 spark-env.sh,并对它进行编辑

$ cp conf/spark-env.sh.template conf/spark-env.sh
$ vim conf/spark-env.sh

在文件末尾添加如下配置:

export SPARK_MASTER_IP=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1

运行 spark-shell

$ ~/apps/spark-2.1.0-bin-hadoop2.7/bin/spark-shell

终端输出如下信息则表示启动成功

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
17/02/26 21:20:06 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
17/02/26 21:20:07 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
17/02/26 21:20:12 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://127.0.0.1:4040
Spark context available as 'sc' (master = local[*], app id = local-1488115184825).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_121)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

5. 牛刀小试

现在我们来用 Spark 计算一下其安装目录下 LICENSE 文件中每行字符串的平均长度

接上一节中成功启动的 spark-shell,在 spark-shell 中依次输入如下内容(双斜线开始的注释不需要输入_

// 通过本地文件系统中的文件创建 RDD (弹性分布式数据集)
scala> val rddFromTextFile = sc.textFile("LICENSE")
// 将每一个字符串都转换为一个整数
scala> val intsFromStringsRDD = rddFromTextFile.map(line => line.size)
// 对所有记录的长度求和
scala> val sumOfRecords = intsFromStringsRDD.sum
// 计算记录总的数目
scala> val numRecords = intsFromStringsRDD.count
// 将记录总长度和记录的总数目相除,得到每一行的平均值
scala> val aveLengthOfRecord = sumOfRecords / numRecords

最终输出结果如下:

aveLengthOfRecord: Double = 58.5685618729097

当然,我们也可以用更简单的方式得到和上面相同的结果。
代码如下:

scala> val aveLengthOfRecordChained = rddFromTextFile.map(line => line.size).sum / rddFromTextFile.count

好了,今天就到这里。睡觉。_

哦,还有一句忘记说了,输入 :q 退出 spark-shell

scala> :q
上一篇下一篇

猜你喜欢

热点阅读