Spark入门教程(2)---开发、编译配置

本文档详细介绍了Spark的运行、开发和编译环境配置,包括先决条件、下载与运行、交互式Shell的使用、Standalone集群搭建、独立应用程序开发以及IDE环境配置。适合初学者和有经验的开发者,旨在帮助读者掌握Spark环境的全方位配置,为后续的Spark程序开发打下基础。
摘要由CSDN通过智能技术生成

 

 

本教程源于2016年3月出版书籍《Spark原理、机制及应用》 ,在此以知识共享为初衷公开部分内容,如有兴趣,请支持正版书籍。

 

      Spark为使用者提供了大量的工具和脚本文件,使得其部署与开发变得十分方便快捷,本章将会分别从运行(含集群部署)、开发以及源码编译三个角度,来介绍Spark相关环境的具体配置流程。对于初次接触Spark的读者,建议仅需阅读运行环境部署和开发环境部署两节内容,如果后期有源码编译或者源码学习需求,再回头来阅读相关章节。

2.1  Spark运行环境配置

        Spark能够运行在Windows或者Unix Like(如 GUN/Linux、OS X等)平台上。一般情况下,Windows仅作为 Spark的开发平台,读者如果希望把 Spark应用于生产环境,尤其是需要部署集群时,更建议选择Linux平台,本章后续所有内容也都基于Linux发行版Ubuntu 14.04 LTS,其他Linux发行版的操作与之类似。

2.1.1  先决条件

      Spark使用Scala语言编写,运行在Java虚拟机(JVM)当中,因此需要在系统中安装Java 6或者更高版本,考虑到后期的开发需求,建议读者直接从Oracle官网上(http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载合适的JDK版本安装,并将JAVA_HOME环境变量的值设置为Java的安装目录,PATH环境变量添加Java安装目录下的bin目录。安装完毕之后执行如下命令检查JDK是否已经被正确安装,命令返回结果会因安装JDK版本而异。

$ javac -version

javac 1.7.0_79

      如果读者希望能够使用R语言编写Spark程序,那么还需要在本地安装R解释器,在Ubuntu下可以通过执行如下命令安装:

sudo apt-get update && sudo apt-get install r-base

Spark 控制脚本依赖安全外壳协议(Secure Shell,SSH) 来执行对整个集群的操作,如启动、停止整个集群。如搭建集群,需要在主节点上安装好 SSH 客户端,所有节点上安装好 SSH 服务端。Ubuntu 环境下,可以通过以下命令安装 OpenSSH Client和OpenSSH Server(OpenSSH是SSH的一种开源实现)。

$ sudo apt-get update && sudo apt-get install openssh-client openssh-server

2.1.2  下载与运行 Spark

1. 下载Spark安装包

       Spark官方(http://spark.apache.org/downloads.html)提供了Spark二进制包和源码的下载,页面如图2-1所示,如无特殊需求,此处建议读者直接下载预先编译好的二进制包。此外,Spark支持读写HDFS中的文件,读者如果希望后期使用HDFS来做数据存储,需要根据Hadoop的版本选择合适的预构建版本,若未能找到对应自己Hadoop版本的Spark安装包,可以考虑自己手动编译源码,本书会在第2.3节中具体介绍 Spark 源码编译的流程。

下载压缩包到本地目录中,执行如下命令进行解压缩,其中1.x.y为Spark版本号,z.w为Hadoop版本号。

tar -zxvf spark-1.x.y-bin-hadoopz.w.tgz

 

 

图2-1 Spark下载页面

2. 安装与运行测试应用

        进入解压缩得到的Spark安装目录,执行命令“./bin/run-example SparkPi 10”运行Spark提供的Example程序,该程序用于计算π值。执行结果如下图2-2所示,可以看到Spark计算得到的PI值约等于3.139516。

图2-2  Example程序运行结果

运行Example程序时候如果系统报错提示找不到 java 文件,说明JDK未能被正确安装,或者环境变量没有正确配置。

3. 设置环境变量

      在使用 Spark之前,建议读者将Spark的bin目录加入到系统PATH环境变量当中,这样以后在执行bin目录下的程序时,可以直接使用程序名,例如“spark-shell”,而无需指定程序的路径,如“./bin/spark-shell”,具体设置步骤如下:

1)以管理员权限编辑文件/etc/profile,在文件尾部加入如下语句,保存并退出。其中/path/to/spark需要替换成用户自己完整的Spark安装路径。

export SPARK_HOME="/path/to/spark/"

export PATH="$SPARK_HOME/bin:$PATH"

2)执行指令“source /etc/profile”,完成后在任意目录下执行命令“spark-shell –help”,若没有提示命令找不到,则说明设置成功。

 

3. 设置环境变量

   在使用 Spark之前,建议读者将Spark的bin目录加入到系统PATH环境变量当中,这样以后在执行bin目录下的程序时,可以直接使用程序名,例如“spark-shell”,而无需指定程序的路径,如“./bin/spark-shell”,具体设置步骤如下:

1)以管理员权限编辑文件/etc/profile,在文件尾部加入如下语句,保存并退出。其中/path/to/spark需要替换成用户自己完整的Spark安装路径。

export SPARK_HOME="/path/to/spark/"

export PATH="$SPARK_HOME/bin:$PATH"

2)执行指令“source /etc/profile”,完成后在任意目录下执行命令“spark-shell –help”,若没有提示命令找不到,则说明设置成功。

 

 

2.1.3  使用交互式 Shell

 

Spark提供了基于Scala、Python以及R语言的三种交互式Shell。执行命令“spark-shell”可启动Spark Scala Shell,其界面如图2-3所示。

 

 

 

 

图2-3  Spark Scala Shell启动界面

 如果启动Shell时系统报错提示“java_home is not set”,说明JAVA_HOME环境变量未被正确配置。

读者可以尝试在Shell中运行一个简单程序,该程序用于输出/etc/passwd这一文件的行数。输入完一行回车就能立即看到执行结果。输出结果可能会因不同的系统环境而异。

 

>>> val lines = sc.textFile("/etc/passwd")

15/08/05 15:55:14 INFO MemoryStore: ensureFreeSpace(88456) called with curMem=0,        maxMem=280248975

// 省略大部分日志输出

15/08/05 15:55:14 INFO SparkContext: Created broadcast 0 from textFile at <console>:21

>>> lines.count

// 省略大部分日志输出

res0 Long = 25

    

    执行命令“pyspark”可启动Spark Python Shell,其界面如图2-4所示。

 

图2-4  Spark Python Shell启动界面

行数统计程序的Python版本如下:

>>> lines = sc.textFile("/etc/passwd")

15/08/05 15:59:43 INFO MemoryStore: ensureFreeSpace(157248) called with curMem=0,     maxMem=280248975

# 省略大部分日志输出

15/08/05 15:59:43 INFO SparkContext: Created broadcast 0 from textFile at              NativeMethodAccessorImpl.java:-2

>>> lines.count()

# 省略大部分日志输出

25

执行命令“sparkR”可以启动Spark R Shell,其界面如图2-5所示。

 

 

图2-5  Spark R Shell启动界面

    行数统计程序的 R 语言版本如下:

> lines <- SparkR:::textFile(sc, "/etc/passwd")

# 15/08/07 13:10:42 INFO MemoryStore: ensureFreeSpace(157288) called with curMem=343050,     maxMem=280248975

# 省略大部分日志输出

# 15/08/07 13:10:42 INFO SparkContext: Created broadcast 2 from textFile at         NativeMethodAccessorImpl.java:-2</

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值