《Spark核心技术与高级应用》——2.1节部署准备

简介:

本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第2章,第2.1节部署准备,作者于俊 向海 代其锋 马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.1 部署准备
部署准备工作包括下载Spark、编译Spark和集群部署,接下来会一一阐述。
2.1.1 下载Spark
无论如何部署Spark,首先必须下载合适的版本。Spark提供源码压缩包和编译好的二进制文件压缩包。本书的内容主要以Spark 1.5.0版本为基础,熟悉SBT和Maven编译的读者,建议尝试自己编译适合的版本。
Spark下载路径:http://spark.apache.org/downloads.html
Spark下载步骤如下:
1)选择Spark发行版本,截止到本书编写时最新版本为1.5.0;
2)选择发行包类型,可以选择Source Code[can build several Hadoop versions]、Pre-built for Hadoop 2.6 and later、Pre-built for Hadoop 2.4 and later、Pre-built for Hadoop 2.3、Pre-built for Hadoop 1.X;
3)选择下载方式,包括Direct Download、Select Apache Mirror;
4)点击选定的版本Download Spark。
图2-1所示为Spark 1.5.0版本的选择与下载过程。


cf994dd2b0bba691224fcdf783a267034f83359d

2.1.2 编译Spark版本
Spark源码编译主要包括:使用SBT编译和使用Maven编译两种方式,编译的前置条件是配置Java环境变量。
1.配置Java环境变量
如果没有配置Java环境,需要先配置Java环境变量,从Oracle官网下载Java版本。
配置步骤如下:
第一步,安装Java程序,主要包括三种方式:
1)下载安装包进行安装;
2)通过软件源执行安装命令进行安装;
3)直接复制相同操作系统的安装文件目录(集群部署时一般采取这种模式)。
三种安装方式网上都有详细的参考资料。
第二步,配置Java环境,使用vim命令在/etc/prof?ile文件中增加变量,以Ubuntu 12.04操作系统为例,命令如下:

sudo vim /etc/prof?ile
export JAVA_HOME=$YOUR_JAVA_HOME#$YOUR_JAVA_HOME为实际安装路径
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

如果想立即生效,可以通过运行source /etc/prof?ile,否则只能在下次用户重新登录加载环境变量时生效。
第三步,测试Java环境:
打开终端,输入java -version。如若有显示Java的版本信息,则表示安装成功。
关于JDK的环境变量配置,一般包括四种方式:
1) 在用户环境变量文件/etc/prof?ile文件中添加变量,需要具有root权限才能进行配置,对Linux下所有用户长期有效。
2) 在用户目录下的.prof?ile文件中增加变量,对当前用户长期生效。
3) 直接运行export命令定义变量,只对当前shell临时有效。在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell或其子shell下是有效的,若shell关闭,变量则失效,再打开新shell时就没有这个变量,若需要使用,则还需要重新定义。
4) 在系统环境变量/etc/environment中进行配置。
2.使用SBT编译
Spark使用SBT(simple build tool,简单编译工具)进行编译,编译源码时需要花费一些时间,如果没有安装sbt,Spark构建脚本将会为你下载正确的SBT版本。下载好Spark源码之后,在源码目录(默认spark-1.5.0)执行打包命令:

./sbt/sbt package

如果底层存储采用HDFS,而其版本又和Spark默认的版本不一致,则需要修改Spark根目录所在的project/SparkBuild.scala文件中的HADOOP_VERSION,然后重新编译。执行重新编译命令:

sbt/sbt clean compile

从源码构建Spark将花费一些时间,当编译过程停顿很长时间没有反应之后,停止,然后重新执行./sbt/sbt package打包命令。
其中,Spark的SBT文件工程结构中包含以下文件:
project——工程定义文件;
project/build/.scala——主要的工程定义文件;
project/build.properties——工程,SBT以及Scala版本定义;
src/main——应用代码目录,不同的子目录名称表示不同的编程语言(例如,src/main/scala、src/main/java);
src/main/resources——你想添加到Jar包里的静态文件(如日志配置文件);
lib_managed——工程所依赖的Jar文件存放路径,在SBT更新时添加到该目录;
target——最终生成的文件存放的目录(例如,生成的thrift代码、class文件、Jar文件)。
3.使用Maven编译
Maven是一个采用纯Java编写的开源项目管理工具。Maven采用POM(Project Object Model,项目对象模型)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编译、构建、测试、发布、报告等。目前Apache下绝大多数项目都已经采用Maven进行管理,Maven本身还支持多种插件,可以更加方便灵活地控制项目。
使用Maven编译流程如下:

1)Maven下载:http://maven.apache.org/;
2)Maven配置:export M2_HOME=$your_path; export PATH=$M2_HOME/bin:$PATH;
3)Maven编译Spark。

在任意目录下以命令行的形式设置Maven参数。其中,-Xmx为Java虚拟机堆内存最大允许值,-XX:MaxPermSize为最大允许的非堆内存大小,-XX:ReservedCodeCacheSize为缓存大小。
在Spark源码目录(默认spark-1.5.0)下,编译参数hadoop.version可根据具体版本修改,编译Nexus依赖可以通过pom.xml文件修改,编译Spark运行环境命令如下:

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M
-XX:ReservedCodeCacheSize=512m"
mvn -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0 -DskipTests clean package

2.1.3 集群部署概述
在进行Spark编程之前,我们要进行Spark集群部署,目前与Spark相关的集群环境,也就是集群管理器(cluster manager),主要包括:Spark自带的Standalone资源管理器、Mesos集群管理器和Hadoop YARN资源管理器。
表2-1总结了集群部署和运行过程中,可能会使用到的集群相关基础概念,可以对集群部署和运行有个更深刻的理解。
表2-1 集群相关基础概念


131dd0c2b65fca5e4fc637feb26ed2c2d1e41767
相关文章
|
26天前
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
128 1
|
6月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
515 0
|
6月前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
251 0
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
62 2
|
3月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
237 3
|
3月前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
3月前
|
SQL 分布式计算 监控
|
3月前
|
分布式计算 资源调度 测试技术
“Spark Streaming异常处理秘籍:揭秘如何驯服实时数据流的猛兽,守护你的应用稳如泰山,不容错过!”
【8月更文挑战第7天】Spark Streaming 是 Apache Spark 中的关键组件,用于实时数据流处理。部署时可能遭遇数据问题、资源限制或逻辑错误等异常。合理处理这些异常对于保持应用稳定性至关重要。基础在于理解其异常处理机制,通过 DSC 将数据流切分为 RDD。对于数据异常,可采用 try-catch 结构捕获并处理;资源层面异常需优化 Spark 配置,如调整内存分配;逻辑异常则需加强单元测试及集成测试。结合监控工具,可全面提升应用的健壮性和可靠性。
76 3
|
4月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
147 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
3月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
62 0
下一篇
无影云桌面