深入 RDD 问题-如何运行在集群中 | 学习笔记

简介: 快速学习 深入 RDD 问题-如何运行在集群中

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段深入 RDD 问题-如何运行在集群中】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/11959


深入 RDD 问题-如何运行在集群中


内容介绍:

一、六个问题的提出

二、要针对1T 的文件内容,如何进行处理?

三、如何放在集群中处理

 

一、六个问题的提出

本节通过提出一些问题,来深入了解 rdd,当前面临的挑战,以便更好的进行学习和了解。

问题一:文件过大时,如何处理?大数据本来就是数据较多,当单排计算机无法处理,就会想到放在集群中,但如果放在集群中操作,对于集群,对于计算框架、整个计算方式有没有什么要求?

这就是第二个问题:如何放在集群中执行?其中有一个很重要的前提:如果要放在集群中操作,需要将任务进行拆解。

这就是第三个问题:任务如何进行拆解?任务拆解过之后,移动数据不如移动计算。

这是第四个问题:怎么进行移动计算?

第五个问题是:一个 T 的文件处理了95%之后,忽然丢失了,那还需要再重新处理一遍吗?因此怎么进行容错也是一个问题。

最后一个问题是:当一个 T 的文件要处理时,需求很长、很复杂。因此在处理这个文件的时候,步骤过多,这些 rdd 之间会有依赖关系,依赖链过长如何拆解?

1.当文件特别大的时候,怎么处理?

2.如何放在集群中执行?

3.任务如何拆解?

4.怎么移动计算?

5.如何容错?

6.如果 RDD 之间的依赖链过长的时候,如果拆解?

 

二、要针对1T 的文件内容,如何进行处理?

正常情况下:单机进行数据处理,使用多线程来进行处理,在单机上进行处理,正常情况下笔记本内存为4g8g 16g,一个 T 的文件不能放在计算机当中,不能用内存进行处理,因此这就是第一个瓶颈:内存。

瓶颈二:磁盘,即使是使用一些技术,磁盘上限低,处理一个T的数据,存不下那么多数据。

瓶颈三:处理数据时,CPU 不够,一般 CPU 都为四核、八核。CPU 上限低,处理一个 T 的数据时间过长。

因此:单机无法处理过大的数据。因此放在集群中处理,这是第一个问题的答案。

 

三、如何放在集群中处理

放在集群中处理,利用多台计算机的平行处理,此操作的前提是:大任务可以分解为小任务,小任务可以被不同处理器进行处理。因此任务需要可划分,划分完毕之后不能立刻出错这是第一点。

第二点是:如果任务划分之后,中间需要什么过程?还需要一个共享内存的机制。

还有一个最重要的问题:任务分发到各个文件中,这个文件要被多个处理单元去处理,那么多个处理单元要奋发到集群中执行,就需要一个统一的调度工具。

image.png

总结:

第一个前提是任务可以被并行执行。

第二个前提是每个任务都可以放在并行处理器中。

第三个前提是需要有一个内存共享的机制。

第四个前提是需要将任务调度到各台机器中,需要有一个调度机制。

相关文章
|
消息中间件
操作系统(2.4.5)--管程机制
局部于管程内部的数据结构,仅能被局部于管程内部的过程所访问,任何管程外的过程都不能访问它;反之,局部于管程内部的过程也仅能访问管程内的数据结构。 由此可见,管程相当于围墙,它把共享变量和对它进行操作的若干过程围了起来,所有时,都必须经过管程(相当于通过围墙的进程要访问临界资源门)才能进入,而管程每次只准许一个进程进入管程,从而实现了进程互斥。
436 0
|
云安全 存储 运维
带你读《阿里云安全白皮书》(十七)——云上安全重要支柱(11)
阿里云提供了《阿里云安全白皮书(2024版)》,介绍客户数据安全保护技术能力。针对敏感行业,阿里云推出了专属区域和云盒两种形态,确保数据本地存储和合规要求,同时提供标准的公有云产品。此外,阿里云数据安全中心提供敏感数据识别、细粒度数据审计、数据脱敏/列加密、数据泄露检测与防护等四大功能,全面保障数据安全。
|
Rust 安全 Java
探索Rust语言的并发编程模型
探索Rust语言的并发编程模型
365 2
|
运维 测试技术
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
297 1
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
消息中间件 RocketMQ
消息队列 MQ使用问题之如何使用SockJS和Stomp与RabbitMQ建立连接
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
搜索推荐 JavaScript Java
项目开发过程中实际遇到的几个问题处理
项目开发过程中实际遇到的几个问题处理
345 2
|
缓存 JavaScript 前端开发
Vue的服务端渲染:Vue的服务器端渲染(SSR)技术详解
【4月更文挑战第24天】Vue的服务器端渲染(SSR)能解决SPA的首屏加载和SEO问题。SSR预渲染HTML,提升首屏速度,改善SEO,提供更好的用户体验。Nuxt.js是Vue的SSR框架,简化开发流程。但SSR增加服务器压力,开发成本高,且需处理缓存问题。选择SSR需权衡优劣。本文旨在帮助理解Vue SSR原理、优势及实践方法。
|
JSON 前端开发 Java
优化用户体验:SpringBoot统一异常处理最佳实践
优化用户体验:SpringBoot统一异常处理最佳实践
326 0
|
搜索推荐 小程序 Linux
分享88个搜索链接PHP源码,总有一款适合你
分享88个搜索链接PHP源码,总有一款适合你
713 0