`
实验楼
  • 浏览: 11514 次
  • 来自: 成都
社区版块
存档分类
最新评论

Spark 简介与安装部署

 
阅读更多

本教程为实验楼原创,转载请注明课程链接:https://www.shiyanlou.com/courses/456

 

 

1. 课程说明

 

本教程是实验楼Spark大数据动手实验训练营第一节,登录实验楼官网可以获得本节实验的配套环境并学习全部章节。课程为纯动手实验教程,为了能说清楚实验中的一些操作会加入理论内容。理论内容我们不会重复造轮子,太多牛人已经写了太多好文章,会精选最值得读的文章推荐给你,在动手实践的同时扎实理论基础。

 

课程共15个实验,通过在线实验的方式学习Spark相关的Scala,Streaming,SparkSQL,MLlib,GraphX,IndexedRDD,SparkR,Tachyon,KeystoneML等多个项目。课程随到随学,问题随时在实验楼问答中提出,与老师和同学一起交流。

 

2. Spark 概念

 

Spark是UC Berkeley AMP lab开发的一个集群计算的框架,类似于Hadoop,但有很多的区别(详细见3.4)。最大的优化是让计算任务的中间结果可以存储在内存中,不需要每次都写入HDFS,更适用于需要迭代的MapReduce算法场景中,可以获得更好的性能提升。例如一次排序测试中,对100TB数据进行排序,Spark比Hadoop快三倍,并且只需要十分之一的机器。Spark集群目前最大的可以达到8000节点,处理的数据达到PB级别,在互联网企业中应用非常广泛(详细见3.2)。

 

3. 本节阅读

 

本节必读的理论文章:

 

 

写的很好的一篇大数据技术生态圈介绍文章,层次条理分明,内容详尽。推荐必读。

 

 

这个页面列举了部分使用Spark的公司和组织,有使用场景的介绍,可做简单了解。

 

 

最早的Spark论文之一,比起其他论文篇幅要短些,内容对理解Spark原理和内核很有价值,英文可以的话推荐阅读。

 

 

这篇介绍是我看到过最详尽的,讲到很多Spark基本原理和对比Hadoop的优势,推荐必读。

 

4. 安装

 

Spark虽然是大规模的计算框架,但也支持在单机上运行,实验楼的实验环境只提供一台机器,所以后续实验都会在单机上,但会提示与集群环境有哪些区别。对于入门学习者而言,单机环境已经足够。

 

Spark安装非常简单,简单到只需要下载binary包解压即可,具体的步骤如下。

 

4.1 安装前准备

 

安装Spark之前需要先安装Java,Scala及Python。

 

安装Java

 

实验楼环境中已经安装了JDK,这里打开桌面上的Xfce终端,执行查看Java版本:

 

 

可以看到实验楼的Java版本是1.8.0_60,满足Spark 1.5.1对Java版本的要求。

 

如果需要自己安装可以在Oracle的官网下载Java SE JDK,下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

安装Scala

 

老版本的Spark安装前需要先装Scala,1.5.1版本可以无需这一步骤。但为了自己开发Scala程序调试的方便我们仍然安装一个最新版本2.11.7的Scala。

 

Scala官网下载地址:http://www.scala-lang.org/download/

 

 

由于官网速度很慢,我们预先上传到了实验楼内网,下载并解压到/opt/目录:

 

wget http://labfile.oss.aliyuncs.com/courses/456/scala-2.11.7.tgz
tar zxvf scala-2.11.7.tgz
sudo mv scala-2.11.7 /opt/

 

测试scala命令,并查看版本:

 

 

安装Python及IPython

 

安装执行命令:

 

sudo apt-get update
sudo apt-get install python ipython

 

实验楼中已经安装了Python及IPython,分别查看版本:

 

 

4.2 Spark下载

 

课程中使用目前最新稳定版:Spark 1.5.1,官网上下载已经预编译好的Spark binary,直接解压即可。

 

Spark官方下载链接:http://spark.apache.org/downloads.html

 

下载页面中我们如下图选择Pre-build for Hadoop 2.6 and later并点击下载:

 

 

为了节约时间,我们选择从阿里云的镜像下载:

 

wget http://mirrors.aliyuncs.com/apache/spark/spark-1.5.1/spark-1.5.1-bin-hadoop2.6.tgz

 

大约268M大小,下载完成后解压并拷贝到/opt/目录:

 

tar zxvf spark-1.5.1-bin-hadoop2.6.tgz
sudo mv spark-1.5.1-bin-hadoop2.6 /opt/

 

进入到spark目录查看目录结构,本节实验中会用到bin/目录下的操作命令以及conf/目录下的配置文件。

 

4.3 配置路径与日志级别

 

为了避免每次都输入/opt/spark-1.5.1-bin-hadoop2.6这一串前缀,我们将必要的路径放到PATH环境变量中(实验楼用的是zsh,所以配置文件为~/.zshrc):

 

# 添加配置到zshrc
echo "export PATH=$PATH:/opt/spark-1.5.1-bin-hadoop2.6/bin" >> ~/.zshrc

# 使zshrc起作用
source ~/.zshrc

# 测试下spark-shell的位置是否可以找到
which spark-shell

 

我们进入到spark的配置目录/opt/spark-1.5.1-bin-hadoop2.6/conf进行配置:

 

# 进入配置目录
cd /opt/spark-1.5.1-bin-hadoop2.6/conf

# 基于模板创建日志配置文件
cp log4j.properties.template log4j.properties

# 使用vim或gedit编辑文件log4j.properties
# 修改log4j.rootCategory为WARN, console,可避免测试中输出太多信息
log4j.rootCategory=WARN, console

# 基于模板创建配置文件
sudo cp spark-env.sh.template spark-env.sh

# 使用vim或gedit编辑文件spark-env.sh
# 添加以下内容设置spark的环境变量
export SPARK_HOME=/opt/spark-1.5.1-bin-hadoop2.6
export SCALA_HOME=/opt/scala-2.11.7

 

spark-env.sh配置如图:

 

 

spark-env.sh脚本会在启动spark时加载,内容包含很多配置选项及说明,在以后的实验中会用到少部分,感兴趣可以仔细阅读这个文件的注释内容。

 

至此,Spark就已经安装好了,Spark安装很简单,依赖也很少。

 

后续几节介绍简单的Spark操作,为以后的实验做基础。

 

4.4 Spark-Shell

 

Spark-Shell是Spark自带的一个Scala交互Shell,可以以脚本方式进行交互式执行,类似直接用Python及其他脚本语言的Shell。

 

进入Spark-Shell只需要执行spark-shell即可:

 

spark-shell

 

进入到Spark-Shell后可以使用Ctrl D组合键退出Shell。

 

Spark-Shell中我们可以使用scala的语法进行简单的测试,比如下图所示我们运行下面几个语句获得文件/etc/protocols的行数以及第一行的内容:

 

 

上面的操作中创建了一个RDD file,执行了两个简单的操作:

 

  • count()获取RDD的行数
  • first()获取第一行的内容

 

我们继续执行其他操作,比如查找有多少行含有tcpudp字符串:

 

 

查看一共有多少个不同单词的方法,这里用到Mapreduce的思路:

 

 

上面两步骤我们发现,/etc/protocols中各有一行含有tcpudp字符串,并且一共有243个不同的单词。

 

上面每个语句的具体含义这里不展开,可以结合你阅读的文章进行理解,后续实验中会不断介绍。Scala的语法我们在后续实验中会单独学习,这里仅仅是提供一个简单的例子让大家对Spark运算有基本认识。

 

操作完成后,Ctrl D组合键退出Shell。

 

pyspark

 

pyspark类似spark-shell,是一个Python的交互Shell。

 

执行pyspark启动进入pyspark:

 

 

退出方法仍然是Ctrl D组合键。

 

也可以直接使用IPython,执行命令:IPYTHON=1 pyspark

 

 

在pyspark中,我们可以用python语法执行spark-shell中的操作,比如下面几个语句获得文件/etc/protocols的行数以及第一行的内容:

 

 

操作完成后,Ctrl D组合键退出Shell。

 

在后续的实验中我们将大量使用python和scala的交互式shell,可以及时的获得实验结果,实验重在理解原理,内容将很少涉及Java的内容,如果你对Java很熟悉可以参考后续的实验代码练习。

 

5. 启动spark服务

 

这一节我们将启动spark的master主节点和slave从节点,这里也会介绍spark单机模式和集群模式的部署区别。

 

5.1 启动主节点

 

执行下面几条命令启动主节点:

 

# 进入到spark目录
cd /opt/spark-1.5.1-bin-hadoop2.6

# 启动主节点
./sbin/start-master.sh

 

没有报错的话表示master已经启动成功,master默认可以通过web访问http://localhost:8080,打开桌面上的firefox浏览器,访问该链接:

 

 

图中所示,master中暂时还没有一个worker,我们启动worker时需要master的参数,该参数已经在上图中标志出来:spark://7a1e9a46bf54:7077,请在执行后续命令时替换成你自己的参数。

 

5.2 启动从节点

 

执行下面的命令启动slave

 

./sbin/start-slave.sh spark://7a1e9a46bf54:7077

 

没有报错表示启动成功,再次刷新firefox浏览器页面可以看到下图所示新的worker已经添加:

 

 

也可以用jps命令查看启动的服务,应该会列出MasterSlave

 

5.3 测试实例

 

使用pyspark连接master再次进行上述的文件行数测试,如下图所示,注意把MASTER参数替换成你实验环境中的实际参数:

 

 

刷新master的web页面,可以看到新的Running Applications,如下图所示:

 

 

当退出pyspark时,这个application会移动到Completed Applications一栏。

 

可以自己点击页面中的Application和Workers的链接查看并了解相关信息。

 

5.4 停止服务

 

停止服务的脚本为sbin/stop-all.sh,运行时需要输入shiyanlou用户的密码,因为脚本中使用ssh远程对slave节点进行管理:

 

cd /opt/spark-1.5.1-bin-hadoop2.6
./sbin/stop-all.sh

 

5.5 集群部署

 

上面的步骤介绍了我们在单机状态Standalone Mode下部署的spark环境,如果要部署spark集群稍有区别:

 

  1. 主节点上配置spark,例如conf/spark-env.sh中的环境变量
  2. 主节点上配置conf/slaves,添加从节点的主机名,注意需要先把所有主机名输入到/etc/hosts避免无法解析
  3. 把配置好的spark目录拷贝到所有从节点,从节点上的目录路径与主节点一致,例如都设置为/opt/spark-1.5.1-bin-hadoop2.6
  4. 配置主节点到所有从节点的SSH无密码登录,使用ssh-keygen -t rsassh-copy-id两个命令
  5. 启动spark集群,在主节点上执行sbin/start-all.sh
  6. 进入主节点的web界面查看所有worker是否成功启动

 

6. 总结

 

本节实验中我们学习了以下内容,任何不清楚的地方欢迎到实验楼问答与我们交流:

 

  1. Spark原理相关优秀文章及论文
  2. Spark单机模式的安装与基本配置
  3. pyspark的使用及关联IPYTHON
  4. Spark-Shell的使用
  5. Spark主从节点的启动与停止
  6. Spark集群部署与单机部署的差异
  7. 最简单的文件行数及去重字数查询的RDD实例(Scala及Python语法)

 

请务必保证自己能够动手完成整个实验,只看文字很简单,真正操作的时候会遇到各种各样的问题,解决问题的过程才是收获的过程。

 

附:Spark大数据训练营全部实验列表

分享到:
评论

相关推荐

    Spark分布式集群安装部署 .doc

    Spark分布式集群安装部署 Spark 是一种基于内存的分布式计算框架,它提供了高效的数据处理能力和灵活的编程模型。 Spark 集群安装部署是 Spark 的一个重要组成部分,它可以帮助用户快速部署 Spark 集群,并对其...

    Spark生态和安装部署

    ### Spark 生态与安装部署详解 #### 一、Spark 是什么? Spark 是一款开源的大规模数据处理框架,它能够提供高效、快速的数据处理能力。相较于传统的 MapReduce 架构,Spark 的最大特点是能够将中间计算结果存储在...

    Spark实验:Standalone模式安装部署(带答案)1

    【Spark Standalone模式安装部署详解】 Spark是一款快速、通用且可扩展的大数据处理框架,它提供了高效的批处理、交互式查询、流处理等多种计算模式。在Standalone模式下,Spark可以独立于任何分布式资源管理系统...

    Spark实验:On Yarn模式安装部署(带答案)1

    在这个实验中,我们将详细探讨如何在Yarn模式下安装和部署Spark集群。 首先,我们需要准备实验环境,这里包括三台虚拟机,操作系统为CentOS 7.5,Hadoop版本为2.7.3,Spark版本为2.1.1。这些版本的兼容性对于实验的...

    1Spark生态和安装部署

    ### Spark 生态与安装部署详解 #### 一、Spark 是什么? Spark 是一款开源的大规模数据处理框架,它能够提供高效的数据处理能力,特别是在大规模数据集上的处理速度远远超过传统的 MapReduce 框架。Spark 的核心...

    spark集群安装部署与初步开发

    ### Spark集群安装部署与初步开发知识点详述 #### 一、Spark概述 - **定义**:Spark是一款基于内存计算的大数据并行计算框架,旨在提供高效的数据处理能力。 - **特性**: - **内存计算**:利用内存提高数据处理...

    2.Spark编译与部署(下)--Spark编译安装.pdf

    2.Spark编译与部署(下)--Spark编译安装.pdf 2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5....

    spark1.2.1常用模式部署运行

    本文档详细介绍了 Spark 1.2.1 在 standalone 集群模式和 on yarn 集群模式下的部署与运行方式。 Spark 版本和环境配置 Spark 1.2.1 的版本号为 spark-1.2.1-bin-hadoop2.4,已经做了相应的环境配置,例如 linux ...

    2.Spark编译与部署(中)--Hadoop编译安装.pdf

    2.Spark编译与部署(下)--Spark编译安装.pdf 2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5....

    Spark on Yarn模式部署.docx

    Spark on Yarn 模式部署是一种常见的 Spark 应用场景,本文将详细介绍 Spark on Yarn 模式部署的步骤和配置过程。 标题解释 Spark on Yarn 模式部署是指将 Spark 应用程序部署在 Yarn 集群上,使得 Spark 能够使用 ...

    spark三种模式部署安装(基于Anaconda3实现spark编程)

    ### Spark的三种部署模式与基于Anaconda3的Python编程实现 #### 一、Spark的部署模式 Apache Spark作为大数据处理领域的重要工具之一,其部署模式的选择对于应用性能有着至关重要的影响。Spark支持三种主要的部署...

    Hadoop与Spark所有系统组件部署手册

    学习和掌握Hadoop与Spark的系统组件部署,不仅可以提高大数据处理的效率,还能为构建企业级大数据平台奠定坚实基础。这份手册将带你深入理解这两个框架的工作原理,并提供详尽的实践指南,助你在大数据领域游刃有余...

    spark安装部署相关环境部署和代码编译部署文档

    #### 二、Spark 安装与部署 **1. Spark 安装** - **背景介绍:** Spark 是一个高性能的大数据处理框架,支持多种编程语言如 Scala、Java 和 Python。 - **安装过程:** - **下载 Spark:** 从 [Apache Spark 官方...

    spark安装部署.doc

    spark 安装部署 Spark 安装部署是大数据处理的重要组件,本文档将指导用户完成 Spark 的安装和配置,涵盖了 JDK、Scala、SSH 免密码登录、Hadoop 安装等步骤。 一、JDK 安装 JDK 是 Spark 运行环境的基础,需要...

    Hadoop与Spark所有系统组件部署手册(1).pdf

    本手册涵盖了Hadoop和Spark的大数据组件部署的整个过程,从虚拟机安装到Hadoop和Spark的部署,涵盖了 Linux 系统配置、Hadoop 安装、Spark 安装等多个方面,为读者提供了一个完整的Hadoop和Spark部署指南。

    2.Spark编译与部署(上)--基础环境搭建.pdf

    2.Spark编译与部署(下)--Spark编译安装.pdf 2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5....

    Spark Standalone 单机版部署

    Spark standalone 单机版部署,看了网上很多方法,事实证明都是错误的,本人亲身经历,在导师的指导下,成功配置成功单机版。

    spark伪分布.docx

    Spark伪分布(Standalone)模式安装部署 在大数据处理中,Spark是非常流行的计算引擎,它可以快速处理大量数据。然而,为了让Spark正常运行,需要安装和部署Spark伪分布(Standalone)模式。在本文中,我们将介绍...

Global site tag (gtag.js) - Google Analytics