热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark入门指南!超完整学习资源!

1.Spark概念Spark是UCBerkeleyAMPlab开发的一个集群计算的框架,类似于Hadoop,但有很多的区别(详细见3.4)。最大的优化是让计算任务的中间结果可以存储

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处理问题,它们的方法几乎是通用的,处理的数据也可以共享,不仅减少了学习成本,而且其数据无缝集成大大提高了灵活性。

《Spark入门指南!超完整学习资源!》

后续我们会就几个主要应用,包括SQL,Streaming,机器学习,DataFrame, SparkR, GraphX进行详细教程讲解。基本掌握以上几部分的使用,就能体会到使用Spark的便利。

3. Spark的安装

3.1 安装前准备

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

安装Java

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

《Spark入门指南!超完整学习资源!》 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/

《Spark入门指南!超完整学习资源!》 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命令,并查看版本:

《Spark入门指南!超完整学习资源!》 image

安装Python及IPython

安装执行命令:

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

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

《Spark入门指南!超完整学习资源!》 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并点击下载:

《Spark入门指南!超完整学习资源!》 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):

# 添加配置到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入门指南!超完整学习资源!》 image

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

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

4. Spark应用学习

下面是小编为大家汇总的Spark生态系统中使用频率最高的几个应用教程。每个教程中提供尽可能丰富的步骤说明和截图,详细的理论知识会附上相关文章链接。点击【教程名称】即可进入每一部分的学习。

【Spark 基础之 Streaming 快速上手】

《Spark入门指南!超完整学习资源!》

Spark Streaming 是 Spark 引擎的一种扩展,适用于实时处理流式数据。本课程将带你学习 Spark Streaming 的工作机制,了解 Streaming 应用的基本结构,以及如何在 Streaming 应用中附加 SQL 查询。

【Spark 基础之 SQL 快速上手】

《Spark入门指南!超完整学习资源!》

学习 Spark SQL 的基础概念,了解如何利用 SQL Context 及相关的 API 进行统计分析。最后还将通过一个分析股票价格与石油价格关系的实例,进一步学习如何利用 Spark SQL 分析数据。

【Spark 基础之使用机器学习库 MLlib】

《Spark入门指南!超完整学习资源!》

学习 Spark 的机器学习库—— MLlib 的相关知识,了解 MLlib 与 ML 之间的区别和联系,掌握 MLlib 中的几个基本数据类型。

【Spark基础之 DataFrame 基本概念学习 】

《Spark入门指南!超完整学习资源!》

针对飞行准点率数据集,通过一些简单的分析任务来学习 DataFrame 的由来、构建方式以及一些常用操作。在本课程中,你可以了解到 Spark 生态体系中,核心的 RDD 与 DataFrame 之间的区别和联系。同时,你还可以学习到在 Spark 中加载数据集的方式、如何配置和使用第三方库等等。

【Spark 基础之 SparkR 快速上手 】

《Spark入门指南!超完整学习资源!》

讲解到如何在 SparkR 中创建和操作 DataFrame、如何运行 SQL 查询,以及如何利用机器学习相关的 API。通过一些简单的实例来学习如何在 SparkR 中进行时间序列分析。

【Spark 基础之 GraphX 图计算框架学习】

《Spark入门指南!超完整学习资源!》

学习GraphX 框架的基本使用技巧、属性图的定义和操作符的种类,以及PageRank 、连通分量和三角形计数这三个经典的图计算算法。

5.Spark实战练习

从Spark的安装开始,已经带你逐步完成Spark技术入门。再通过一系列实践项目的动手操作,让你全面的学习到Spark相关技术。以下精选的10个实战项目能够帮你全面的复习之前的知识~ Just do it!学以致用!

1、【Kmeans聚类算法评估足球比赛】
2、【使用决策树算法预测森林植被】
3、【Spark 机器学习之电影推荐系统】
4、【使用 Spark 进行流量日志分析】
5、【Spark 实现黑名单实时过滤 】
6、【使用 Spark 和 D3.js 分析航班大数据】
7、【Spark的模式挖掘—FPGrowth算法】
8、【流式实时日志分析系统——《Spark 最佳实践》】
9、【Spark流式计算电商商品关注度】
10、【大数据带你挖掘打车的秘籍】

《Spark入门指南!超完整学习资源!》

5.最后的话

随着企业数据量的增长,对大数据的处理和分析已经成为企业的迫切需求。Spark作为Hadoop的替代者,引起学术界和工业界的普遍兴趣,大量应用在工业界落地,许多科研院校开始了对Spark的研究。当一门技术开始普遍应用于并真正做到优化了生产流程时,就是它商业价值实现的时刻。

真正的学习才敢刚开始,你还有很长都路可以去探索(ง •_•)ง

希望本文能对需要的朋友有所帮助

更多趣味实验可以直接访问实验楼,在线实验环境操作方便,为大家定期更新最佳实验!(●’◡’●)

《Spark入门指南!超完整学习资源!》

课程咨询,欢迎添加班主任微信:

《Spark入门指南!超完整学习资源!》

来啊,来shiyanlou.com学IT呀,反正有大把时间~


推荐阅读
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
author-avatar
晨钟暮鼓芋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有