首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
plugins
chat
callback
split
php
ip
schema
foreach
config
object
triggers
php7
metadata
rsa
sum
format
frameworks
php8
node.js
spring
netty
expression
dll
actionscrip
byte
string
request
testing
range
scala
case
search
hook
iostream
window
bitmap
cSharp
cpython
process
list
shell
subset
hashtable
go
merge
flutter
regex
select
hash
vbscript
buffer
httpclient
js
char
python
copy
integer
vba
perl
input
keyword
include
tags
fetch
javascript
tree
random
email
grid
runtime
main
cookie
golang
import
io
erlang
datetime
default
lua
当前位置:
开发笔记
>
编程语言
> 正文
大数据Spark概述
作者:乖乖紫仪面_614 | 来源:互联网 | 2023-08-20 11:25
MapReduce通过简单的Map和Reduce抽象提供了一个编程模型可以在一个由上百台机器组成的集群上并发处理大规模的数据集,并隐藏具体的计算细节各种各样的复杂数据处理都可以分解
MapReduce通过简单的Map和Reduce抽象提供了一个编程模型
可以在一个由上百台机器组成的集群上并发处理大规模的数据集,并
隐藏
具体的计算细节
各种各样的复杂数据处理都可以分解为Map或Reduce的基本元素
复杂的数据处理可以被分解为由多个Job(一个Mapper + 一个Reducer)组成的
有向无环图
(DAG)
然后每个Mapper和Reducer在Hadoop集群上执行,就可以得到结果
缺陷
高昂的维护成本
时间性能达不到用户的预期
抽象层次低
,大量的
底层逻辑
都需要开发者手工完成
类似于用汇编语言去编写一个复杂的游戏
只提供Map和Reduce两个操作
很多实际的数据处理场景并不适合用MapReduce模型来描述
实现复杂的操作很有技巧性,同时会让整个工程变得
庞大且难以维护
如两个数据集的Join操作是很基本且常用的功能
但如果使用MapReduce模型,需要对两个数据集进行一次Map和Reduce才能得到结果
维护一个多任务协调的状态机
成本很高
,并且
可扩展性很差
在Hadoop中,每个Job的计算结果都会存储在
HDFS
中,所以每一步都会进行
硬盘
的读取和写入,大大增加了
系统延迟
因此,MapReduce对于
迭代算法
的处理性能很差,很耗资源,因为迭代的每一步都要对HDFS进行读写
只支持批数据处理,欠缺对流数据处理的支持
Spark的优势
Spark最基本的数据抽象叫作
弹性分布式数据集
(Resilient Distributed Dataset,
RDD
)
RDD代表一个
可以被分区的只读数据集
,RDD内部可以有很多
分区
,每个分区又可以有大量的
数据记录
RDD是Spark最基本的数据结构,Spark定义了很多对RDD的操作
对RDD的任何操作都可以像
函数式编程
中操作内存中的集合一样直观简便,使得实现数据处理的代码非常简短高效
Spark提供了很多对RDD的操作,如Map、Filter、flatMap、groupByKey、Union等,
极大地提升了对各种复杂场景的支持
开发者不用再绞尽脑汁地挖掘MapReduce模型的潜力,也不用维护复杂的MapReduce状态机
相对于Hadoop的MapReduce会将中间数据存放到硬盘中,Spark会把
中间数据缓存在内存
中,加快了处理速度
Spark可以把迭代过程中每一步的计算结果都缓存在内存中,所以
非常适用于迭代算法
Spark
第一次
启动时需要把数据载入内存,之后的迭代可以直接在内存里利用中间结果进行计算,后期的迭代速度很快
在当今
机器学习
和
人工智能
大热的环境下,
Spark无疑是更好的数据处理引擎
在任务级别上,
Spark的并行机制是多线程模型,而MapReduce是多进程模型
多进程模型便于细粒度地控制每个任务占用的资源,但会消耗较多的启动时间
Spark同一节点上的任务以
多线程
的方式运行在
同一个JVM进程
中
更快的启动速度,更高的CPU利用率、更好的内存共享
与Hadoop的关系
Spark并不是一个完全替代Hadoop的全新工具
Hadoop生态
数据存储层
:分布式文件系统HDFS、分布式数据库HBase
数据处理层
:进行数据处理的MapReduce、负责集群和资源管理的YARN
数据访问层
:Hive、Pig、Mahout
从狭义上来看,
Spark只是MapReduce的替代方案
大部分应用场景中,Spark还需要依赖HDFS和HBase来存储数据,依赖YARN来管理集群和资源
Spark不一定依附于Hadoop才能生存,它可以运行在Apache Mesos、Kubernetes等云平台
spark
mapreduce
编程
并发
apache
hadoop
开发者
join
扩展
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
hdfs
每天收获一点点Hadoop概述
一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ...
[详细]
蜡笔小新 2023-12-14 18:58:01
sum
2018年人工智能大数据的爆发,学Java还是Python?
本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ...
[详细]
蜡笔小新 2023-12-14 20:08:28
sum
深入理解Java虚拟机的并发编程与性能优化
本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ...
[详细]
蜡笔小新 2023-12-09 19:52:01
byte
ejava,刘聪dejava
本文目录一览:1、什么是Java?2、java ...
[详细]
蜡笔小新 2023-12-09 09:28:18
byte
什么是大数据lambda架构
一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ...
[详细]
蜡笔小新 2023-10-17 16:06:09
php
Hadoop源码解析1Hadoop工程包架构解析
1 Hadoop中各工程包依赖简述 Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。 GoogleCluster:ht ...
[详细]
蜡笔小新 2023-10-17 13:28:20
config
mapreduce源码分析总结
这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ...
[详细]
蜡笔小新 2023-10-17 12:36:35
sum
Oracle优化新常态的五大禁止及其性能隐患
本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ...
[详细]
蜡笔小新 2023-12-12 12:55:55
ip
操作系统的定义和功能
本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ...
[详细]
蜡笔小新 2023-12-11 14:17:13
ip
javascript和java的关系,JavaScript和java的关系
Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ...
[详细]
蜡笔小新 2023-12-11 04:03:31
ip
开发笔记:软件测试知识点之数据库压力测试方法小结
篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ...
[详细]
蜡笔小新 2023-12-10 20:29:19
ip
Java虚拟机中的垃圾收集器介绍
本文介绍了Java虚拟机中的垃圾收集器,包括年轻代收集器Serial收集器、ParNew收集器、Parallel Scavenge收集器,以及老年代收集器Serial Old收集器、Parallel Old收集器和CMS收集器。对每种收集器的算法和特点进行了详细解析,希望对读者有参考价值。 ...
[详细]
蜡笔小新 2023-12-10 18:16:15
netty
一次上线事故,30岁+的程序员踩坑经验之谈
本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ...
[详细]
蜡笔小新 2023-12-10 17:25:31
range
七月在线爬虫班学习笔记(七)——高级内容-并发编程
第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ...
[详细]
蜡笔小新 2023-10-17 20:16:36
range
如何在mysql shell命令中执行sql命令行
如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ...
[详细]
蜡笔小新 2023-10-17 08:53:00
乖乖紫仪面_614
这个家伙很懒,什么也没留下!
Tags | 热门标签
plugins
chat
callback
split
php
ip
schema
foreach
config
object
triggers
php7
metadata
rsa
sum
format
frameworks
php8
node.js
spring
netty
expression
dll
actionscrip
byte
string
request
testing
range
scala
RankList | 热门文章
1
vue cli 3.x移除console采坑记
2
面向对象之3:封装的总结及实现方法
3
如何用python pandas读取一个多层表头的excel,将多层表头转化为列?
4
Swing组件及其用法,图标接口的定义和创建方法
5
Delphi如何操作Excel
6
乐山市计算机学校2017—2018学年度第一学期开学典礼隆重举行
7
解决github访问慢的问题的方法集锦
8
php05
9
添加环境光使正方体显示更真实
10
git常用命令及其操作详解
11
iOS超签签名服务器搭建及其优劣势
12
开发笔记:使用Junit和黄瓜进行自动化测试步骤缺失
13
IOS开发之短信发送与拨打电话的方法详解
14
如何在Gitlab中更改语法高亮主题
15
微信朋友圈屏蔽设置教程,轻松屏蔽无关信息
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有