Spark和MapReduce之间的区别?

1 、性能方面
Spark 在内存中处理数据,而 MapReduce 是通过 map reduce 操作在磁盘中处理数据。因此从这个角度上讲Spark 的性能应该是超过 MapReduce 的。
然而,既然在内存中处理, Spark 就需要很大的内存容量。就像一个标准的数据库系统操作一样, Spark每次将处理过程加载到内存之中,然后该操作作为缓存一直保持在内存中直到下一步操作。如果Spark与其它资源需求型服务一同运行在YARN 上,又或者数据块太大以至于不能完全读入内存,此时 Spark 的性能就会有很大的降低。
与此相反, MapReduce 会在一个工作完成的时候立即结束该进程,因此它可以很容易的和其它服务共同运行而不会产生明显的性能降低。
当涉及需要重复读取同样的数据进行迭代式计算的时候, Spark 有着自身优势。 但是当涉及单次读取、类似ETL (抽取、转换、加载)操作的任务,比如数据转化、数据整合等时, MapReduce 绝对是不二之选,因为它就是为此而生的。
小结 :当数据大小适于读入内存,尤其是在专用集群上时, Spark 表现更好; MapReduce 适用于那些数据不能全部读入内存的情况,同时它还可以与其它服务同时运行。
2 、使用难度方面 Spark 有着灵活方便的 Java Scala Python API ,同时对已经熟悉 SQL 的技术员工来说, Spark 还适用 Spark SQL (也就是之前被人熟知的 Shark )。多亏了 Spark 提供的简单易用的构造模块,我们可以很容易的编写自定义函数。它甚至还囊括了可以即时反馈的交互式命令模式。
Hadoop MapReduce 是用 Java 编写的,但由于其难于编程而备受诟病。尽管需要一定时间去学习语法,Pig还是在一定程度上简化了这个过程, Hive 也为平台提供了 SQL 的兼容。一些 Hadoop 工具也可以无需编程直接运行MapReduce 任务。 Xplenty 就是一个基于 Hadoop 的数据整合服务,而且也不需要进行任何编程和部署。
尽管 Hive 提供了命令行接口,但 MapReduce 并没有交互式模式。诸如 Impala Presto Tez 等项目都在尝试希望为Hadoop 提供全交互式查询模式。
安装与维护方面, Spark 并不绑定在 Hadoop 上,虽然在 Hortonworks HDP 2.2 版)和 Cloudera CDH 5版)的产品中Spark MapReduce 都包含在其分布式系统中。(注: Cloudera Hortonworks MapR 是Hadoop领域三大知名的初创公司,致力于打造更好的 Hadoop 企业版应用)。
小结 Spark 更易于编程,同时也包含交互式模式; MapReduce 不易编程但是现有的很多工具使其更易于使用。
3 、成本方面
Spark 集群的内存至少要和需要处理的数据块一样大,因为只有数据块和内存大小合适才能发挥出其最优的性能。所以如果真的需要处理非常大的数据,Hadoop 绝对是合适之选,毕竟硬盘的费用要远远低于内存的费用。
考虑到 Spark 的性能标准,在执行相同的任务的时候,需要的硬件更少而运行速度却更快,因此应该是更合算的,尤其是在云端的时候,此时只需要即用即付。
在技术人员方面,即使 Hadoop 2005 年就开始普及,但是 MapReduce 方面的专家仍然存在着短缺。
而对于从 2010 年才开始普及的 Spark ,这又意味着什么呢? 或许投身 Spark 学习的人正在快速增加,但是相比于 Hadoop MapReduce 仍然存在着更大的技术人才的缺口。
进一步讲,现存了大量的 Hadoop 即服务的资料和基于 Hadoop 的服务(比如我们 Xplenty 的数据整合服务),这些都降低对技术人员能力和底层硬件知识的要求。相比之下,几乎没有现有可选的 Spark 服务,仅有的那些也是新产品。
小结 :根据基准要求, Spark 更加合算, 尽管人工成本会很高。依靠着更多熟练的技术人员和 Hadoop 服务的供给, Hadoop MapReduce 可能更便宜。
4 、兼容性
Spark 既可以单独运行,也可以在 Hadoop YARN 上,或者在预置 Mesos 上以及云端。它支持实现Hadoop 输入范式的数据源,所以可以整合所有 Hadoop 支持的数据源和文件格式。 根据 Spark 官方教程, 它还可以通过 JDBC ODBC BI (商业智能) 工具一起运行。 Hive Pig 也在逐步实现这样的功能。
小结 Spark Hadoop MapReduce 具有相同的数据类型和数据源的兼容性。
5 、数据处理
除了平常的数据处理, Spark 可以做的远不止这点: 它还可以处理图和利用现有的机器学习库 。高性能也使得 Spark 在实时处理上的表现和批处理上的表现一样好。这也催生了一个更好的机遇,那就是用一个平台解决所有问题而不是只能根据任务选取不同的平台,毕竟所有的平台都需要学习和维护。
Hadoop MapReduce 在批处理上表现卓越 。如果需要进行实时处理,可以利用另外的平台比如 Storm或者 Impala ,而图处理则可以用 Giraph MapReduce 过去是用 Mahout 做机器学习的,但其负责人已经将其抛弃转而支持 Spark h2o (机器学习引擎)。
小结 Spark 是数据处理的瑞士军刀; Hadoop MapReduce 是批处理的突击刀。 6 、处理速度
Hadoop 是磁盘级计算,计算时需要在磁盘中读取数据;其采用的是 MapReduce 的逻辑,把数据进行切片计算用这种方式来处理大量的离线数据.
Spark 会在内存中以接近 实时 的时间完成所有的数据分析。 Spark 的批处理速度比 MapReduce 快近 10倍,内存中的数据分析速度则快近100 倍。
比如实时的市场活动,在线产品推荐等需要对流数据进行分析场景就要使用 Spark

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

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

相关文章

win系统B站播放8k视频启用HEVC编码

下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads,根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dda0ea75096c42c0a79ef6f6f5521…

中伟视界:AI识别摄像头+AI预警平台在矿山皮带空载监测中的应用

在矿山开采和矿物处理过程中,皮带运输机扮演着举足轻重的角色。它们负责将矿石、煤炭等物料从一处运送到另一处,是矿山生产流程中不可或缺的一环。然而,皮带运输机在运行过程中也面临着一些挑战,其中之一便是皮带空载问题。皮带空…

卷积神经网络入门指南:从原理到实践

目录 1 CNN的发展历史 2 CNN的基本原理 3 CNN核心组件 3.1 卷积操作基础 3.2 卷积层详解 3.3 高级卷积操作 3.3.1 分组卷积(Group Convolution) 3.3.2 深度可分离卷积(Depthwise Separable Convolution): 3.3 池…

CSS系列(35)-- Subgrid详解

前端技术探索系列:CSS Subgrid详解 📐 致读者:探索子网格布局的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Subgrid,这个强大的网格布局扩展特性。 基础概念 🚀 子网格设置 /* 父网格…

实训项目-人力资源管理系统-1Company子模块

目录 前言: 用例图设计: 系统设计 开发方式: 技术架构 系统结构: API文档: 工程搭建: 搭建父项目 pom: 创建公共子模块: 返回实体: 分布式id生成器: …

2.5.3 文件使用、共享、保护、安全与可靠性

文章目录 文件使用文件共享文件保护系统安全与可靠性 文件使用 操作系统向用户提供操作级、编程级文件服务。 操作级服务包括目录管理,文件操作(复制、删除、修改),文件管理(设置文件权限)。 编程级服务包括…

路由器转发数据报的封装过程

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 路由器转发数据的封装过程 路由器转发数据的封…

Qt5 cmake引用private头文件

Qt5 cmake引用private头文件 如何引用Qt的qzipreader_p.h头文件 、xlsxzipreader_p.h头文件 使用 target_include_directories target_include_directories(TestQtXlsx PRIVATE${Qt${QT_VERSION_MAJOR}Gui_PRIVATE_INCLUDE_DIRS}${Qt${QT_VERSION_MAJOR}Xlsx_PRIVATE_INCLUD…

vulnhub matrix-breakout靶机

1.搭建靶机 这样就是装好了 获取靶机IP nmap -O 192.168.47.129/24 2.信息收集 dirb http://192.168.47.128 dirb 首页 81端口一个登录页面 gobuster dir -u http://192.168.152.154 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html gra…

前端文件导出到Excel文件实用案例:VUE3,ElementPlus,typescript。直接复制可用~~

typescript import * as XLSX from "xlsx"; //1、文件导出的主要方法 /*** 将数据表导出为Excel文件,并根据提供的映射替换表头和排序(如果提供了映射)* param dataTable 数据表,包含要导出的数据* param fileName 导出…

HNUST-数据分析技术课堂实验

1.要求 1,从下列第一、二、三组实验中各至少选取一个算法进行实验,选修组实验不作强制要求;2,实验过程不限,目标在于锻炼算法实现过程,即可采用C、C、Java、Python(建议)等任意语言编…

华为路由器AR101W-S

华为路由器AR101W-S的设定 华为路由器AR101W-S的设定 1、第一次进入登陆的界面 http://192.168.1.1/,默认的帐号:admin,默认的密码:Adminhuawei,登入后会要求修改密码 如果无法进入网址,请操作下面的内…

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏,且小程序默认入口页面为pages/index/index,要使不同角色呈现不同底部导航栏,必须要在不同页面引用不同的自定义导航栏。本篇将结合分包(subPackages)展开以下三步叙述…

【西安电子科技大学考研】25官方复试专业课参考书目汇总

初试已经顺利考完啦、成绩已经公布,现在已经有很多同学来问学长学姐,复试参考书有哪些,复试应该做好哪些准备。故此学长学姐给大家整理好了西安电子科技大学各个学院的复试参考书目录,有需要的同学可以参考一下哈。大家可以结合本…

如何通过 Kafka 将数据导入 Elasticsearch

作者:来自 Elastic Andre Luiz 将 Apache Kafka 与 Elasticsearch 集成的分步指南,以便使用 Python、Docker Compose 和 Kafka Connect 实现高效的数据提取、索引和可视化。 在本文中,我们将展示如何将 Apache Kafka 与 Elasticsearch 集成以…

LLaMA-Factory GLM4-9B-CHAT LoRA 微调实战

🤩LLaMA-Factory GLM LoRA 微调 安装llama-factory包 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入下载好的llama-factory,安装依赖包 cd LLaMA-Factory pip install -e ".[torch,metrics]" #上面这步操作会完成…

view draw aosp15

基础/背景知识 如何理解Drawable? 在 Android 中,Drawable 是一个抽象的概念,表示可以绘制到屏幕上的内容。 它可以是位图图像、矢量图形、形状、颜色等。 Drawable 本身并不是一个 View,它不能直接添加到布局中,而是…

gridcontrol表格某一列设置成复选框,选择多行(repositoryItemCheckEdit1)

1. 往表格中添加repositoryItemCheckEdit1 2. 事件: repositoryItemCheckEdit1.QueryCheckStateByValue repositoryItemCheckEdit1_QueryCheckStateByValue; private void repositoryItemCheckEdit1_QueryCheckStateByValue(object sender, DevExpress.XtraEditor…

重温设计模式--适配器模式

文章目录 适配器模式(Adapter Pattern)概述适配器模式UML图适配器模式的结构目标接口(Target):适配器(Adapter):被适配者(Adaptee): 作用&#xf…

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的,我会在天天酷跑的下篇添加源代码,这里会讲述天天酷跑这个项目是如何实现的每一个思路,都是作者自己学习于别人的代码而创作的项目和思路,这个代码和网上有些许不一样,因为掺杂了…