《Spark与Hadoop大数据分析》一一3.4 Spark 应用程序

3.4 Spark 应用程序

让我们来了解 Spark Shell 和 Spark 应用程序之间的区别,以及如何创建和提交它们。
3.4.1 Spark Shell 和 Spark 应用程序
Spark 让你可以通过一个简单的、专门用于执行 Scala、Python、R 和 SQL 代码的 Spark shell 访问数据集。用户探索数据并不需要创建一个完整的应用程序。他们可以用命令开始探索数据,这些命令以后可以转换为程序。这种方式提供了更高的开发生产效率。Spark 应用程序则是使用 spark-submit 命令提交的带有 SparkContext 的完整程序。
Scala 程序通常使用 Scala IDE 或 IntelliJ IDEA 编写,并用 SBT 进行编译。Java 程序通常在 Eclipse 中编写,用 Maven 进行编译。Python 和 R 程序可以在任何文本编辑器中编写,也可以使用 Eclipse 等 IDE。一旦编写好 Scala 和 Java 程序,它们会被编译并用 spark-submit 命令执行,如下所示。由于 Python 和 R 是解释型语言,它们是使用 spark-submit 命令直接执行的。因为 Spark 2.0 是用 scala 2.11 构建的,因此,用 Scala 构建 Spark 应用程序就需要用到 scala 2.11。
3.4.2 创建 Spark 环境
任何 Spark 程序的起点都是创建一个 Spark 环境,它提供了一个到 Spark API 的入口。要设置配置属性,需要把一个 SparkConf 对象传递到 SparkContext,如下面的 Python 代码所示:

3.4.3 SparkConf
SparkConf 是 Spark 中的主要配置机制,创建新的 SparkContext 时需要一个它的实例。SparkConf 实例包含的是一些字符串的键/值对,对应了用户需要覆盖默认值的那些配置选项。SparkConf 设置可以被硬编码到应用程序代码中,从命令行传递,或从配置文件传递,如以下代码所示:

与具体应用程序相关联的那个 SparkConf 一旦传递给了 SparkContext 构造函数,它就是不可变的。这意味着所有配置的决定必须在实例化 SparkContext 之前做出。
3.4.4 SparkSubmit
spark-submit 脚本用于在具有任何集群资源管理器的集群上启动 Spark 应用程序。
SparkSubmit 允许动态设置配置,然后在应用程序启动时(当构建新的 SparkConf 时)注入到环境中。如果使用 SparkSubmit,用户的应用程序可以只构造一个“空”的 SparkConf,并将其直接传递给 SparkContext 构造函数。SparkSubmit 工具为最常见的 Spark 配置参数提供了内置标志(flag),还提供了一个通用的 --conf 标志,它可以接受任何 Spark 配置值,如下所示:

在有多个配置参数的情况下,可以将它们全部放在一个文件中,并利用 --properties-file 参数把该文件传递给应用程序:

--jars 选项里包含的应用程序依赖 JAR 包会自动发送到工作机节点。对于 Python 而言,等效的 --py-files 选项可用于将 .egg、.zip 和 .py 库分发到执行进程。注意,这些 JAR 包和库文件会被复制到执行进程节点上每个 SparkContext 的工作目录中。在创建 JAR 包时,最好把所有代码依赖都添加到一个 JAR 包里。这可以在 Maven 或 SBT 中轻松完成。
要获取 spark-submit 的完整选项列表,请使用以下命令:

3.4.5 Spark 配置项的优先顺序
Spark 配置优先顺序,从高到低,如下所示:
(1)在用户代码中用 SparkConf 对象上的 set() 函数显式声明的配置。
(2)传递给 spark-submit 或 spark-shell 的标志。
(3)在 spark-defaults.conf 属性文件中的值。
(4)Spark 的默认值。
3.4.6 重要的应用程序配置
用于提交应用程序的一些重要配置参数如下表所示:

时间: 2024-09-30 05:57:17

《Spark与Hadoop大数据分析》一一3.4 Spark 应用程序的相关文章

《Spark与Hadoop大数据分析》——1.3 工具和技术

1.3 工具和技术 让我们来看看在 Hadoop 和 Spark 中用于大数据分析的不同工具和技术. 虽然 Hadoop 平台可以用于存储和处理数据,但 Spark 只能通过将数据读入内存来进行处理. 下表展示了典型大数据分析项目中所使用的工具和技术.

《Spark与Hadoop大数据分析》一一

3.1 启动 Spark 守护进程 如果你计划使用 Standalone 的集群管理器,则需要启动 Spark 的主机(master)和工作机(worker)的守护进程(daemon),它们是 Spark 架构的核心组件.守护进程的启动/停止在不同的发行版里略有差异.Hadoop 发行版(如 Cloudera.Hortonworks 和 MapR)会把 Spark 作为服务,并把 YARN 作为默认的资源管理器.这意味着在默认情况下所有 Spark 应用程序都会在 YARN 框架上运行.但是,要

《Spark与Hadoop大数据分析》一一第1章 从宏观视角看大数据分析

第1章 从宏观视角看大数据分析 本书的目标是让你熟悉 Apache Spark用到的工具和技术,重点介绍Hadoop平台上使用的Hadoop部署和工具.大多数Spark的生产环境会采用Hadoop集群,用户在集成 Spark和Hadoop配套的各种工具时会遇到很多挑战.本书将讲解Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和另一种资源协商器(Yet Another Resource Negotiator,YARN)面临的集成挑战,以及Spa

《Spark与Hadoop大数据分析》一一导读

Preface 前 言 本书讲解了Apache Spark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起.所有Spark组件(Spark Core.Spark SQL.DataFrame.Dataset.Conventional Streaming.Structured Streaming.MLlib.GraphX和Hadoop核心组件).HDFS.MapReduce和Yarn 都在 Spark + Hadoop 集群的实现示例中进行了深入的探讨. 大数据分

《Spark与Hadoop大数据分析》一一1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色

1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色 传统的数据分析使用关系型数据库管理系统(Relational Database Management System,RDBMS)的数据库来创建数据仓库和数据集市,以便使用商业智能工具进行分析.RDBMS 数据库采用的是写时模式(Schema-on-Write)的方法,而这种方法有许多缺点.传统数据仓库的设计思想是用于提取.转换和加载(Extract, Transform, and Load,ETL)数据,据此回答与用户需求直

《Spark与Hadoop大数据分析》一一3.6 Spark 资源管理器:Standalone、YARN和Mesos

3.6 Spark 资源管理器:Standalone.YARN和Mesos 在本章其他部分(在 PySpark shell 和应用程序中),我们已经在 Spark 的 Standalone 资源管理器中执行过 Spark 应用程序.让我们尝试理解这些集群资源管理器相互之间有什么不同,以及它们该在什么情况下使用.3.6.1 本地和集群模式 在继续讲解集群资源管理器之前,让我们来了解集群模式与本地模式的区别. 当跨集群执行代码时,了解变量和方法的范围和生命周期非常重要.让我们看一个使用 foreac

《Spark与Hadoop大数据分析》一一2.1 Apache Hadoop概述

2.1 Apache Hadoop概述 Apache Hadoop 是一个软件框架,可以在具有数千个节点和 PB 级数据的大型集群上进行分布式处理.Apache Hadoop 集群可以使用故障率一般较高的低价通用硬件来构建.Hadoop 的设计能够在没有用户干预的情况下优雅地处理这些故障.此外,Hadoop 采用了让计算贴近数据(move computation to the data)的方法,从而显著降低了网络流量.它的用户能够快速开发并行的应用程序,从而专注于业务逻辑,而无需承担分发数据.分

《Spark与Hadoop大数据分析》一一2.5 小结

2.5 小结 Apache Hadoop 提供了一个用于大数据存储的可靠且可扩展的框架(HDFS),以及一个用于运行和管理多个大数据应用程序的强大集群资源管理框架(YARN).Apache Spark 提供了大数据处理的内存级性能,以及用于交互式探索性分析.实时分析.机器学习和图分析的库和 API.虽然 MR 是 Hadoop 上的主要处理引擎,但它有很多缺点,例如性能较差和设计应用程序时不够灵活.Apache Spark 是 MR 的替代品.所有基于 MR 的工具(如 Hive.Pig.Mah

《Spark与Hadoop大数据分析》一一3.7 小结

3.7 小结 RDD 是 Spark 中基本的数据单元,Spark 编程就是围绕创建和执行 RDD 上的操作(如变换和动作)进行的.Apache Spark 程序可以在 shell 中交互式执行或通过提交应用程序来执行.它的并行度是由 RDD 中的分区数量决定的.而分区的数量则由 HDFS 文件中的区块数或资源管理器的类型以及用于非 HDFS 文件的配置属性决定.在内存中缓存 RDD 对于在同一 RDD 上执行多个动作是有用的,因为它提供了更高的性能.当使用 MEMORY_ONLY选项缓存 RD

《Spark与Hadoop大数据分析》一一2.4 安装 Hadoop 和 Spark 集群

2.4 安装 Hadoop 和 Spark 集群 在安装 Hadoop和Spark之前,让我们来了解一下 Hadoop和Spark的版本.在 Cloudera.Hortonworks和MapR这所有三种流行的Hadoop发行版中,Spark都是作为服务提供的.在本书编写的时候,最新的Hadoop和Spark版本分别是2.7.2和2.0.但是,Hadoop发行版里可能是一个较低版本的Spark,这是因为Hadoop和 Spark 的发行周期并不同步.对于后续章节的实践练习,我们会使用来自 Clou