返回
Featured image of post 大数据框架

大数据框架

北京邮电大学暑期课程

大数据框架

讲了大数据的特性、数据库、常用数据存储方式

MapReduce

已经在分布式系统中了解过了。

image-20230627153449263
image-20230627153449263

但是这里需要提一下Hadoop和MapReduce的关系。在1.0版本的hadoop是直接基于HDFS和MapReduce的,但是到达2.0之后增加了YARN做资源管理。

对于1.0,mapreduce的并行化方式:

image-20230627153833090
image-20230627153833090

其中,jobTracker负责管理一系列节点之间的计算资源。但是上述的结构很容易让jobTracker遇到瓶颈。所以才有了第二代的Hadoop

image-20230627154224895
image-20230627154224895

在每个容器中运行节点管理器、MR等操作。

Spark 框架

spark是开源的实时计算框架。可以使用交互式查询来处理数据。

相较于Hadoop的处理方式,spark是在内存里进行处理的,因此速度远超Hadoop。此外Spark支持多种语言API而hadoop只对java

image-20230629131714604
image-20230629131714604

Spark的整体架构如图。乘上可以提供一系列库工具,底层可以由多种引擎管理。

在了解Spark框架之前需要知道spark的核心观念:RDD(Resilient Distributed Data).RDD是Spark的基础数据结构,是可遍历的对象集合。数据在RDD中分为逻辑集合,并且缓存在cache中

RDD的操作:

image-20230629132449845
image-20230629132449845

在spark中的操作就就是创建、转换和操作。之所以使用Transformation而不是action,是因为transformation是惰性操作,只有在需要的时候才进行计算。通过生成一个有向图来进行存储操作。

当大多数集合的操作使用了一个夫数据的时候,就产生了狭隘依赖(narrow dependency),此时使用会影响速度(数据多次计算)

image-20230629134029916
image-20230629134029916

Spark的整体结构如下图

image-20230629134048512
image-20230629134048512

在进行使用时,我们只需要保证节点有Spark即可,其他节点用于数据管理和存储。本课程使用python的pyspark进行spark的操作,pyspark是在java的基础上做了一层api,因此py4j用来进行python和java的交互

连接分析算法——PageRank

很简单,就是对图进行计算,但是往往不一定能求得解

Licensed under CC BY-NC-SA 4.0