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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容