大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比

news2024/11/25 5:24:40

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(新开的坑!正在更新!)

章节内容

上节我们完成了如下的内容:

  • Kafka集群监控方案
  • JConsole
  • Kafka Eagle
  • JavaAPI获取集群指标
    在这里插入图片描述

简单介绍

在技术的不断迭代中,一路发展,三代技术引擎:

  • MapReduce 昨天
  • Spark 今天
  • Flink 未来

MapReduce和Spark都是类MR的处理引擎,底层原理非常相似。

什么是Spark

Spark的发展历程如下图:
在这里插入图片描述

Spark特点

  • 速度快,与MapReduce相比,Spark基于内存运算要快100倍以上,基于硬盘运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效的处理流数据
  • 使用简单,Spark支持Scala、Java、Python、R的API,还支持超过80种算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便的在这些Shell中使用Spark集群来验证解决问题的方法
  • 通用性好,Spark提供了统一的解决方案,Spark可以用于批处理、交互式查询(SparkSQL)、实时流处理(SparkStreaming)、机器学习(SparkMLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝衔接。Spark统一解决方案非常具有吸引力,企业想用统一的平台去处理遇到的问题,减少开发和维护人力的成本和部署平台的物力成本。
  • 兼容性好,Spark可以非常方便的和其他开源的产品进行融合,Spark可以使用YARN、Mesos作为它的资源管理和调度器。可以处理所有Hadoop支持的数据,包括HDFS、HBase、Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要任何的数据迁移就可以使用Spark。Spark也可以不依赖于其它第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人可以非常容器的部署和使用Spark。

Spark与Hadoop

狭义上

从狭义上看:Hadoop是一个分布式框架,由存储、资源调度、计算三部分组成
Spark是一个分布式计算引擎,是由Scala编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎。

广义上

从广义上看:Spark是Hadoop生态中不可或缺的一部分。

MapReduce不足

  • 表达能力有限
  • 磁盘IO开销大
  • 延迟高:任务之间有IO开销,在前一个任务完成之前,另一个任务无法开始。

在这里插入图片描述
相对于Spark,Spark的设计要更高效,Spark在借鉴MapReduce优点的同时,很好的解决了MapReduce所面临的问题:
在这里插入图片描述

两者对比

Spark的计算模式也属于MapReduce,是对MR框架的优化。

  • 数据存储结构:MapReduce是磁盘HDFS,Spark是内存构建的弹性分布式数据集RDD
  • 编程范式:Map+Reduce表达力欠缺,Spark提供了丰富操作使数据处理代码很短
  • 运行速度:MapReduce计算中间结果存磁盘,Spark中间结果在内存中
  • 任务速度:MapReduce任务以进程,需要数秒启动,Spark是小数据集读取在亚秒级

实际应用

  • 批量处理(离线处理):通常时间跨度在分钟到小时
  • 交互式查询:通常时间跨度在十秒到数十分钟
  • 流处理(实时处理):通常跨度在数百毫秒到数秒

在面对上述的三个场景中,我们通常的解决方案是:

  • MapReduce
  • Hive
  • Impala 或 Storm

但是对应的也带来一些新的问题:

  • 不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格式的转换、
  • 不同的软件需要不同的开发和维护团队,带来了较高的维护和使用成本
  • 比较难以通一个集群中的各个系统进行统一的资源协调和分配

系统架构

Spark运行包括如下:

  • Cluster Manager
  • Worker Node
  • Driver
  • Executor

在这里插入图片描述

ClusterManager

ClusterManager 是集群资源的管理者,Spark支持3中集群部署模式:

  • Standalone
  • YARN
  • Mesos

WorkerNode

WorkerNode是工作节点,负责管理本地资源。

Driver Program

运行应用的 main() 方法并且创建了 SparkContext。由ClusterManager分配资源,SparkContext发送Task到Executor上执行。

Executor

Executor在工作节点上运行,执行Driver发送的Task,并向Driver汇报计算结果。

部署模式

Standalone

  • 独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖其他任何的资源管理系统,从一定程度上说,该模式是其他模式的基础
  • Cluster Manager: Master
  • WorkerNode:Worker
  • 仅支持粗粒度的资源分配方式

SparkOnYARN

  • YARN拥有强大的社区支持,且逐步成为大数据集群资源管理系统的标准
  • 在国内生产环境中运用最广泛的部署模式
  • SparkOnYARN 支持的两种模式:yarn-cluster(生产环境),yarn-client(交互和调试)
  • Cluster Manager:ResourceManager
  • WorkNode:NodeManager
  • 仅支持粗粒度的资源分配方式

SparkOnMesos

  • 官方推荐模式,Spark开发之初就考虑到了支持Mesos
  • Spark运行在Mesos上会更加的灵活,更加自然
  • ClusterManager:MesosMaster
  • WorkNode: MesosSlave
  • 支持粗粒度、细粒度的资源分配方式

粗粒度模式

Coarse-grained Mode:每个程序的运行由一个Driver和若干个Executor组成,其中每个Executor占用若干资源,内部可以运行多个Task。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中需要一直占用着这些资源,即使不用,最后程序运行结束后,自动回收这些资源。

细粒度模式

鉴于粗粒度模式造成的大量资源的浪费,SparkOnMesos还提供了另一个调度模式就是细粒度模式。
这种模式类似于现在的云计算思想,核心是按需分配。

如何选择

  • 生产环境中原则YARN,国内使用最广的模式
  • Spark的初学者,Standalone模式,简单
  • 开发测试环境可选Standalone
  • 数据量不太大、应用不复杂,可使用Standalone

相关术语

  • Application 用户提交的Spark应用程序,由集群中的一个Driver和许多的Executor组成
  • ApplicationJAR 一个包含Spark应用程序的JAR,JAR不应该包含Spark或者Hasoop的JAR
  • DriverProgram运行应用程序的main(),并创建SparkContext
  • ClusterManager管理集群资源的服务,如Standalone、YARN、Mesos
  • DeployMode区分Driver进程在何处运行,在Cluster模式下,在集群内部运行Driver,在Client模式下,Driver在集群外部运行
  • Worker Node 运行应用程序的工作节点
  • Executor 运行应用程序Task和保存数据,每个应用程序都有自己的Executors,并且和Executor相互独立
  • Task Executors 应用程序的最小单元
  • Job,在用户程序中,每次调用Action函数都会产生一个新的Job,也就是说每一个Action都会生成一个Job
  • Stage,一个Job被分解为多个Stage,每个Stage是一系列Task的集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2033244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

布隆过滤器将应用Redis缓存使用量降低100倍

文章目录 背景布隆过滤器介绍定义工作原理数据结构: Redis布隆过滤器实战总结 背景 由于在业务中用到了Redis用于存储一些关系信息,且对应的请求量比较大,为了防止缓存击穿导致数据库压力过大,一般我们都会采用将不存在的内容存储…

头狼择校小程序

综述介绍 头狼择校,是头狼择™高校的简称,我们专注高校、大学的择校。倡导先嗅就业再择校,是预约工具和对话平台。帮您嗅招办、嗅教授、嗅学姐,预约择校有关的老师、顾问,助力考大学和考研的“双考”学生及家长了解就…

C# OnnxRuntime部署LivePortrait实现快速、高质量的人像驱动视频生成

目录 效果 说明 项目 模型信息 代码 下载 效果 LivePortrait实现快速、高质量的人像驱动视频生成 说明 官网地址:https://github.com/KwaiVGI/LivePortrait 代码实现参考:https://github.com/hpc203/liveportrait-onnxrun 模型下载:…

【健康革命】让AI成为你的私人健身教练!

本文由 ChatMoney团队出品 现在市面上有很多男生和女生为了保持身材都进行疯狂的减肥,有些是靠吃减肥药来保持身材,有些是晚上不吃饭要控制,还有些疯狂且漫无目的健身;但往往以上几种都很伤身体的,毕竟身体健康是革命的…

历史库,成本与性能如何兼得?| OceanBase应用实践

随着数据量的迅猛增长,企业和组织在数据库管理方面遭遇的挑战愈发凸显。数据库性能逐渐下滑、存储成本节节攀升,以及数据运维复杂性的增加,这些挑战使得DBA和开发者在数据管理上面临更大的压力。 为了应对这些挑战,对数据生命周期…

简单的docker学习 第13章 CI/CD与Jenkins(下)

第13章 CI/CD 与 Jenkins 13.13 自由风格的 CI 操作(最终架构) 前面的架构存在的问题是,若有多个目标服务器都需要使用该镜像,那么每个目标服务器都需要在本地构建镜像,形成系统资源浪费。若能够在 Jenkins 中将镜像相撞构建好并推送到 Har…

Java属性重写问题

目录 属性重写 案例演示 多态练习 练习1 练习2 属性重写 ​​​​​​​ 属性没有重写之说,属性的值看编译类型。 instanceOf 比较操作符,用于判断对象的运行类型是否为某类型或者某类型的子类。 案例演示 父类base,有一个count属…

Collection和List集合

1.Collection集合 1.1数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构【理解】 …

旧手机拍摄的视频模糊可以修复清晰吗?

你是否时常“考古”一些老电影、老动漫来回忆旧日时光?你是否也有一些珍贵的录像,带你重温过去的美好?然而,我们已经习惯了高清体验,回头再看曾经的旧影像,画质或许“渣”的让人不忍直视。 旧手机像素不好&…

【论文笔记】Dual-Balancing for Multi-Task Learning

Abstract 多任务学习(Multi-task learning, MTL)中,任务平衡问题仍然是重要的挑战,损失、梯度尺度的不同,会导致性能的折中。 本文提出Dual-Balancing for Multi-Task Learning (DB-MTL),从损失和梯度两个角度缓解任务均衡问题。…

成功解决:IDEA导入java项目 或 建包的时候com.不分开 【详细原理解释说明】

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

子串 前缀和 | Java | (hot100) 力扣560. 和为K的子数组

560. 和为K的子数组 暴力法&#xff08;连暴力法都没想出来……&#xff09; class Solution {public int subarraySum(int[] nums, int k) {int count0;int len nums.length;for(int i0; i<len; i) {int sum0;for(int ji; j<len; j) {sumnums[j];if(sum k) {count;}…

C/C++复习 day2(模板,继承,多态)

C/C复习 day2 文章目录 C/C复习 day2前言一、模板1.模板的原理2.非类型模板参数3.模板的特化a. 函数模板的特化b. 类模板的特化1.全特化2.偏特化 4.模板的分离编译 二、继承1.继承的概念2.继承与派生类对象赋值转化3.隐藏1.成员变量的隐藏2. 成员函数的隐藏 4.继承中的友元5.继…

数据结构:栈(含源码)

目录 一、栈的概念和结构 二、栈的实现 2.1 头文件 2.2 各个功能的实现 初始化栈 入栈 出栈 获取栈顶元素和栈中有效个数 判断栈是否为空 栈的销毁 2.3 测试 完整源码 一、栈的概念和结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和…

[C++][opencv]基于opencv实现photoshop算法图像剪切

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像剪切 //参数&#xff1a;src为源图像&#xff0c; dst为结果图像, rect为剪切区域 //返回值&#xff1a;返回0表示成功&#xff0c;否则返回错误代码 int imageCrop(InputArray src, OutputArray dst,…

遥感影像-语义分割数据集:sar水体数据集详细介绍及训练样本处理流程

原始数据集详情 简介&#xff1a;该数据集由WHU-OPT-SAR数据集整理而来&#xff0c;覆盖面积51448.56公里&#xff0c;分辨率为5米。据我们所知&#xff0c;WHU-OPT-SAR是第一个也是最大的土地利用分类数据集&#xff0c;它融合了高分辨率光学和SAR图像&#xff0c;并进行了充…

Chromium编译指南2024 -Android篇:安装其他常用软件(三)

1.引言 在前面的章节中&#xff0c;我们详细讲解了编译 Chromium for Android 所需的系统和硬件要求&#xff0c;并介绍了如何配置开发环境&#xff0c;包括更改软件源和安装基本依赖。在完成这些基础配置之后&#xff0c;为了进一步提升开发和编译效率&#xff0c;您可能还需…

【Hot100】LeetCode—438. 找到字符串中所有字母异位词

目录 1- 思路哈希表 滑动窗口 2- 实现⭐438. 找到字符串中所有字母异位词——题解思路 3- ACM 实现 原题链接&#xff1a;438. 找到字符串中所有字母异位词 1- 思路 哈希表 滑动窗口 思路 哈希表&#xff1a;通过数组维护一个哈希表滑动窗口&#xff1a;通过控制数组的下标…

为何说本届巴黎奥运会中国金牌榜应排列第一?

为何说本届巴黎奥运会中国金牌榜应排列第一&#xff1f; 在奥运会上&#xff0c;金牌榜的排名一直是各国关注的焦点。然而&#xff0c;在历届奥运会中&#xff0c;关于金牌榜的统计方法和排名标准却存在一定的争议。尤其在中美两国之间&#xff0c;金牌榜的排名往往成为双方媒体…

制作好的excel报表设置打开密码或忘记密码怎么办?

excel工作表经常用来做数据统计、工资、报表等的文件格式&#xff0c;这些类型的文件都是很重要的数据资料&#xff0c;为此做这些数据的朋友们都会给他设置一个打开密码&#xff0c;不让其他人随便打开。但随着时间的流逝&#xff0c;我们做的数据报表越来越多了&#xff0c;做…