《Spark大数据分析:核心概念、技术及实践》一3.3 应用运行

简介:

本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第3章,第3.1节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。



3.3 应用运行 

本节主要描述数据处理代码是怎么在Spark集群中执行的。

3.3.1 术语

先来看看几个术语的定义。

shuffle操作。shuffle操作是指在集群节点上对数据进行重新分配。这是一个耗时操作,因为它涉及在网络间传输数据。需要注意的是,shuffle操作不是对数据进行随机重新分配,它按照某些标准将数据分成不同的集合。每一个集合就是一个新的分区。

作业。作业是一系列计算的集合,Spark执行这些计算并将结果返回给驱动程序。作业本质上就是在Spark集群上运行数据处理算法。一个应用程序可以发起多个作业。本章稍后将会介绍作业是怎么执行的。

阶段。一个阶段由若干个任务构成。Spark将一个作业分解为一个由若干个阶段构成的DAG,每一个阶段依赖于其他阶段。举个例子,把一个作业分解为阶段0和阶段1两个阶段。只有当阶段0完成之后,才可以开始阶段1。Spark利用shuffle边界将任务分成不同的阶段。不要求shuffle操作的任务属于同一阶段。只有在开始一个新阶段时,任务才需要输入数据是经过shuffle操作的。

3.3.2 应用运行过程

有了上面的这些定义,我们就可以描述一个Spark应用在集群节点上并行处理数据的过程。当一个Spark应用开始运行的时候,Spark会连接集群管理员,获取在worker节点上的执行者资源。就像前面所说的,Spark应用把一个数据处理算法当成一个作业提交。Spark将这个作业分解成由若干个阶段构成的DAG。然后,Spark在执行者上调度这些阶段的运行,调度操作由集群管理员提供的底层调度器实现。执行者并行地运行Spark提交的任务。

每一个Spark应用都有一组其自己的位于worker节点上的执行者。这样的设计有诸多好处。首先,不同应用中的任务由于运行在不同JVM之上,使得它们之间互相隔离。一个应用程序中的错误任务并不会让其他应用崩溃。其次,调度任务变得轻而易举。Spark一次只需要调度归属于同一应用的任务。它不用处理这样一种复杂情况,其中调度的多个任务属于多个并发执行的不同应用。

然而,这种设计也有不足之处。由于不同应用在不同的JVM进程中运行,因此它们之间就不太方便共享数据。即使它们可能在同一个worker节点上运行,它们也只能通过读写磁盘的方式共享数据。就像前面所说的,读写磁盘是耗时的操作。因此,应用间通过磁盘共享数据,将会遇到性能问题。

相关文章
|
13天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
26天前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
1月前
|
数据采集 机器学习/深度学习 数据可视化
深入浅出:Python在数据分析中的应用
本文将探讨Python语言在数据分析领域的核心应用,通过实际案例展示其如何处理和分析大规模数据集。不同于传统的技术文章摘要,我们将采用一种故事化的方式引入,让读者通过一个数据分析师的日常挑战,感受Python的魅力。接着,文章将详细介绍Python在数据预处理、数据清洗、数据可视化及机器学习等方面的实际应用,旨在为广大技术爱好者提供一份易于理解且实用的指南。
|
1月前
|
数据采集 数据可视化 数据挖掘
浅谈Python在数据分析中的应用
在当前数据驱动的时代,Python已经成为数据分析不可或缺的工具之一。本文将探讨Python在数据分析领域的应用,特别是如何利用Python进行数据处理、分析以及可视化。我们将通过实际案例,展示Python强大的数据处理能力和灵活的数据分析功能,以及如何使用Python的各种库,如Pandas、NumPy、Matplotlib和Seaborn等,来简化数据分析流程,从而提高分析效率和质量。这篇文章旨在为初学者提供一个关于Python在数据分析中应用的全面介绍,帮助他们快速入门并应用于实际项目中。
|
6天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
1月前
|
机器学习/深度学习 人工智能 数据可视化
Python在数据分析中的威力及应用实例
本文探讨了Python在数据分析领域的重要性和灵活性,着重介绍了Python在大数据处理、机器学习和可视化方面的应用实例,展示了其强大的功能和便捷的特点。
|
23天前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1月前
|
存储 大数据 数据挖掘
云计算与大数据:从基础设施到实际应用
云计算与大数据:从基础设施到实际应用
96 0
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python在数据分析中的应用及其优势
数据分析在当今信息化时代具有重要意义,而Python作为一种简洁而强大的编程语言,在数据分析领域有着突出的优势。本文将介绍Python在数据分析中的应用及其优势,包括其丰富的库、易读的语法和广泛的社区支持,以及如何利用Python进行数据处理、可视化和建模。