随笔 - 47  文章 - 0 评论 - 0 trackbacks - 0

通常当我们计算的数据超过了单机维度,比如我们的PC内存共8G,而需要计算的数据为100G,这时候我们通常选择大数据集群进行计算。

Spark是大数据处理的计算引擎。,这是它的发展是为了解决替代Hadoop的MapReduce计算引擎。

Hadoop的架构如下,核心包括两点:Hdfs和MapReduce。

 

 

MapReduce的操作流程是 从存储介质读取数据 -》清洗计算 -》持久化到存储介质中。

这样的架构存在两个问题:

(1)不合适流式数据处理、机器学习及图挖掘等场景。

(2)数据持久化到磁盘中,I/O速度慢。

下面是Spark的架构及生态:

 

 

 

(1)SparkSQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作

(2)SparkStreaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据

(3)MLLib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。

(4)GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

(5)Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的

(6) 本地运行模式(Local)应用程序程序运行在一台计算机,多用于本地测试及练习。

 

Spark组成如图:

 

 

 

 

 

 

(1) Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器。

(2) Driver: 运行Application 的main()函数。

(3)Executor:执行器,是为某个Application运行在worker node上的一个进程

(4)Task:执行具体计算的线程。

Spark本身并没有分布式存储系统,因此Spark的分析数据来源大多来自Hadoop的分布式文件系统Hdfs。

 

posted on 2020-03-01 14:51  知己一生  阅读(33)  评论(0编辑  收藏