1. Spark 概念
Spark是UC Berkeley AMP lab开发的一个集群计算的框架,类似于Hadoop,但有很多的区别(详细见3.4
)。最大的优化是让计算任务的中间结果可以存储在内存中,不需要每次都写入HDFS,更适用于需要迭代的MapReduce算法场景中,可以获得更好的性能提升。例如一次排序测试中,对100TB数据进行排序,Spark比Hadoop快三倍,并且只需要十分之一的机器。Spark集群目前最大的可以达到8000节点,处理的数据达到PB级别,在互联网企业中应用非常广泛。
2. Spark大数据处理框架
相较于国内外较多的大数据处理框架,Spark以其低延时的出色表现,正在成为继Hadoop的MapReduce之后,新的、最具影响的大数据框架之一。以Spark为核心的整个生态圈,最底层为分布式存储系统HDFS、Amazon S3、Mesos,或者其他格式的存储系统(如HBase);资源管理采用Mesos、YARN等集群资源管理模式,或者Spark自带的独立运行模式,以及本地运行模式。在Spark大数据处理框架中,Spark为上层多种应用提供服务。例如,Spark SQL提供SQL查询服务,性能比Hive快3~50倍;MLlib提供机器学习服务;GraphX提供图计算服务;Spark Streaming将流式计算分解成一系列短小的批处理计算,并且提供高可靠和吞吐量服务。值得说明的是,无论是Spark SQL、Spark Streaming、GraphX还是MLlib,都可以使用Spark核心API处理问题,它们的方法几乎是通用的,处理的数据也可以共享,不仅减少了学习成本,而且其数据无缝集成大大提高了灵活性。
后续我们会就几个主要应用,包括SQL,Streaming,机器学习,DataFrame, SparkR, GraphX进行详细教程讲解。基本掌握以上几部分的使用,就能体会到使用Spark的便利。
3. Spark的安装
3.1 安装前准备
安装Spark之前需要先安装Java,Scala及Python。
安装Java
实验楼环境中已经安装了JDK,这里打开桌面上的Xfce终端
,执行查看Java版本:
image
可以看到实验楼的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/
image
由于官网速度很慢,我们预先上传到了实验楼内网,下载并解压到/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命令,并查看版本:
image
安装Python及IPython
安装执行命令:
sudo apt-get update sudo apt-get install python ipython
实验楼中已经安装了Python及IPython,分别查看版本:
image
3.2 Spark下载
课程中使用目前最新稳定版:Spark 1.5.1,官网上下载已经预编译好的Spark binary,直接解压即可。
Spark官方下载链接:http://spark.apache.org/downloads.html
下载页面中我们如下图选择Pre-build for Hadoop 2.6 and later
并点击下载:
image
为了节约时间,我们选择从阿里云的镜像下载:
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/
目录下的配置文件。
3.3 配置路径与日志级别
为了避免每次都输入/opt/spark-1.5.1-bin-hadoop2.6
这一串前缀,我们将必要的路径放到PATH
环境变量中(实验楼用的是zsh
,所以配置文件为~/.zshrc
):
# 添加配置到zshrcecho "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.6export SCALA_HOME=/opt/scala-2.11.7
spark-env.sh
配置如图:
image
spark-env.sh
脚本会在启动spark时加载,内容包含很多配置选项及说明,在以后的实验中会用到少部分,感兴趣可以仔细阅读这个文件的注释内容。
至此,Spark就已经安装好了,Spark安装很简单,依赖也很少。
4. Spark应用学习
下面是小编为大家汇总的Spark生态系统中使用频率最高的几个应用教程。每个教程中提供尽可能丰富的步骤说明和截图,详细的理论知识会附上相关文章链接。点击【教程名称】即可进入每一部分的学习。
【Spark 基础之 Streaming 快速上手】
Spark Streaming 是 Spark 引擎的一种扩展,适用于实时处理流式数据。本课程将带你学习 Spark Streaming 的工作机制,了解 Streaming 应用的基本结构,以及如何在 Streaming 应用中附加 SQL 查询。
【Spark 基础之 SQL 快速上手】
学习 Spark SQL 的基础概念,了解如何利用 SQL Context 及相关的 API 进行统计分析。最后还将通过一个分析股票价格与石油价格关系的实例,进一步学习如何利用 Spark SQL 分析数据。
【Spark 基础之使用机器学习库 MLlib】
学习 Spark 的机器学习库—— MLlib 的相关知识,了解 MLlib 与 ML 之间的区别和联系,掌握 MLlib 中的几个基本数据类型。
【Spark基础之 DataFrame 基本概念学习 】
针对飞行准点率数据集,通过一些简单的分析任务来学习 DataFrame 的由来、构建方式以及一些常用操作。在本课程中,你可以了解到 Spark 生态体系中,核心的 RDD 与 DataFrame 之间的区别和联系。同时,你还可以学习到在 Spark 中加载数据集的方式、如何配置和使用第三方库等等。
【Spark 基础之 SparkR 快速上手 】
讲解到如何在 SparkR 中创建和操作 DataFrame、如何运行 SQL 查询,以及如何利用机器学习相关的 API。通过一些简单的实例来学习如何在 SparkR 中进行时间序列分析。
【Spark 基础之 GraphX 图计算框架学习】
学习GraphX 框架的基本使用技巧、属性图的定义和操作符的种类,以及PageRank 、连通分量和三角形计数这三个经典的图计算算法。
5.Spark实战练习
从Spark的安装开始,已经带你逐步完成Spark技术入门。再通过一系列实践项目的动手操作,让你全面的学习到Spark相关技术。以下精选的10个实战项目能够帮你全面的复习之前的知识~ Just do it!学以致用!
5.最后的话
随着企业数据量的增长,对大数据的处理和分析已经成为企业的迫切需求。Spark作为Hadoop的替代者,引起学术界和工业界的普遍兴趣,大量应用在工业界落地,许多科研院校开始了对Spark的研究。当一门技术开始普遍应用于并真正做到优化了生产流程时,就是它商业价值实现的时刻。
真正的学习才敢刚开始,你还有很长都路可以去探索(ง •_•)ง
希望本文能对需要的朋友有所帮助
作者:实验楼
链接:https://www.jianshu.com/p/dd28b5c41f7a