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. 本节阅读
本节必读的理论文章:
- 3.1 大数据技术生态介绍
写的很好的一篇大数据技术生态圈介绍文章,层次条理分明,内容详尽。推荐必读。
- 3.2 谁在使用Spark?
这个页面列举了部分使用Spark的公司和组织,有使用场景的介绍,可做简单了解。
- 3.3 Spark RDD原理详解论文(英文)
最早的Spark论文之一,比起其他论文篇幅要短些,内容对理解Spark原理和内核很有价值,英文可以的话推荐阅读。
- 3.4 Spark与Hadoop对比
这篇介绍是我看到过最详尽的,讲到很多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()
获取第一行的内容
我们继续执行其他操作,比如查找有多少行含有tcp
和udp
字符串:
查看一共有多少个不同单词的方法,这里用到Mapreduce的思路:
上面两步骤我们发现,/etc/protocols
中各有一行含有tcp
与udp
字符串,并且一共有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
命令查看启动的服务,应该会列出Master
和Slave
。
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集群稍有区别:
- 主节点上配置spark,例如
conf/spark-env.sh
中的环境变量 - 主节点上配置
conf/slaves
,添加从节点的主机名,注意需要先把所有主机名输入到/etc/hosts
避免无法解析 - 把配置好的spark目录拷贝到所有从节点,从节点上的目录路径与主节点一致,例如都设置为
/opt/spark-1.5.1-bin-hadoop2.6
- 配置主节点到所有从节点的SSH无密码登录,使用
ssh-keygen -t rsa
和ssh-copy-id
两个命令 - 启动spark集群,在主节点上执行
sbin/start-all.sh
- 进入主节点的web界面查看所有worker是否成功启动
6. 总结
本节实验中我们学习了以下内容,任何不清楚的地方欢迎到实验楼问答与我们交流:
- Spark原理相关优秀文章及论文
- Spark单机模式的安装与基本配置
- pyspark的使用及关联IPYTHON
- Spark-Shell的使用
- Spark主从节点的启动与停止
- Spark集群部署与单机部署的差异
- 最简单的文件行数及去重字数查询的RDD实例(Scala及Python语法)
请务必保证自己能够动手完成整个实验,只看文字很简单,真正操作的时候会遇到各种各样的问题,解决问题的过程才是收获的过程。
附:Spark大数据训练营全部实验列表
Spark 简介与安装部署相关推荐
- Cloudera简介和安装部署概述
Cloudera简介和安装部署概述 原创2016年09月06日 11:27:10 标签: Cloudera / 大数据 / CDH / Hadoop 12285 最近作者在研究Cloudera,并且在 ...
- 七十七、Kettle的简介与安装部署
本文我们来介绍一个非常好用的开源ETL工具--Kettle,它是纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定.关注专栏<破茧成蝶--大数据篇&g ...
- Redis (一)Redis简介、安装部署
Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. 既然是key-value,对于Java开发来说更熟悉的是Map集合.那就有问题了,有M ...
- python 安装pyspark_PySpark笔记(一):Spark简介与安装
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapRedu ...
- spark之3:安装部署
spark之3:安装部署 @(SPARK)[spark, 大数据] spark之3安装部署 一单机安装 1环境准备 2安装scala 3安装spark 4验证安装情况 一.单机安装 本文介绍安装spa ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...
- win10安装部署网络测试工具 NetCat 用于Spark跑测试
win10安装部署网络测试工具 NetCat: 步骤: 提示:这里可以添加要学的内容 例如: 1. 官方下载 2. 复制nc64.exe相关文件 3. 执行nc64命令监听端口 4. 执行nc64命令 ...
- Spark集群完全分布式安装部署
Spark集群完全分布式安装部署 下载安装 配置Spark 1spark-envsh配置 2slaves配置 3profile配置 复制到其他节点 测试 总结 Spark集群完全分布式安装部署 本文中 ...
- Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
[TOC] spark单机安装部署 1.安装scala 解压:tar -zxvf soft/scala-2.10.5.tgz -C app/ 重命名:mv scala-2.10.5/ scala 配置 ...
最新文章
- 【ZT】详细设计文档规范
- 微软的平板电脑_Microsoft 微软 Surface Go 2 10.5英寸二合一平板电脑(m3-8100Y、8GB、128GB、LTE) 5788元...
- 如何保证http传输安全性
- VB 一行代码的诀窍
- Java的括号使用规则_java编码规范
- Remoting基本原理及其扩展机制(上)
- 语音识别技术基础知识
- 数据安全法整理学习笔记
- echarts pie 饼图 border宽度
- detecting current sdk tools version
- vue 右键 单击 事件
- 内存超频trfc_P55平台内存超频实战
- loadrunner 12 操作教程报告
- 为什么工作三年的程序员还不懂APM与调用链技术?
- 详解用Java实现爬虫:HttpClient和Jsoup的介绍及使用(请求方式、请求参数、连接池、解析获取元素)
- 云队友丨何加盐:影响10位企业大佬的10本书
- 宝马汽车与中国马文化系列展示
- STM32中的串口通信的基础知识
- 佳能《万物共生》艺术装置落地侨福芳草地
- 有人通过这份面试题拿到了蚂蚁金服的offer!牛逼!