大数据框架
讲了大数据的特性、数据库、常用数据存储方式
MapReduce
已经在分布式系统中了解过了。
但是这里需要提一下Hadoop和MapReduce的关系。在1.0版本的hadoop是直接基于HDFS和MapReduce的,但是到达2.0之后增加了YARN做资源管理。
对于1.0,mapreduce的并行化方式:
其中,jobTracker负责管理一系列节点之间的计算资源。但是上述的结构很容易让jobTracker遇到瓶颈。所以才有了第二代的Hadoop
在每个容器中运行节点管理器、MR等操作。
Spark 框架
spark是开源的实时计算框架。可以使用交互式查询来处理数据。
相较于Hadoop的处理方式,spark是在内存里进行处理的,因此速度远超Hadoop。此外Spark支持多种语言API而hadoop只对java
Spark的整体架构如图。乘上可以提供一系列库工具,底层可以由多种引擎管理。
在了解Spark框架之前需要知道spark的核心观念:RDD(Resilient Distributed Data).RDD是Spark的基础数据结构,是可遍历的对象集合。数据在RDD中分为逻辑集合,并且缓存在cache中
RDD的操作:
在spark中的操作就就是创建、转换和操作。之所以使用Transformation而不是action,是因为transformation是惰性操作,只有在需要的时候才进行计算。通过生成一个有向图来进行存储操作。
当大多数集合的操作使用了一个夫数据的时候,就产生了狭隘依赖(narrow dependency),此时使用会影响速度(数据多次计算)
Spark的整体结构如下图
在进行使用时,我们只需要保证节点有Spark即可,其他节点用于数据管理和存储。本课程使用python的pyspark进行spark的操作,pyspark是在java的基础上做了一层api,因此py4j用来进行python和java的交互
连接分析算法——PageRank
很简单,就是对图进行计算,但是往往不一定能求得解