Spark:通用的大数据计算框架,主要用于大数据的计算,而Hadoop主要用于大数据的存储以及资源调度。
HDFS:针对大数据的存储系统
MapRedure:针对大数据的计算框架
Hive:针对大数据的查询框架(sql查询)
Hbase:实时/准实时
YARN:资源调度
Spark可以针对HDFS进行大数据的批处理的计算,可以针对Hive进行SQl查询,核心就是一种新型的大数据计算框架,可以基于Hadoop上存储的大数据进行计算(HDFS、Hive)本身不提供大数据存储。(通用的大数据快速处理引擎)
MapReduce的基本计算过程:
Map是独立的机器 Reduce是独立的机器 Map每个独立的机器会有自己的任务 Reduce只获取自己对应的的任务 Shuffle,以及MapReduce的计算模型,就决定了MapReduce,只适合处理对速度不敏感的离线批处理任务。
Spark是基于内存的一种计算框架,有时候也会使用磁盘,(每个小节点都有任务和数据,所有的小节点都在一个物理机器上)
MapReduce的计算很固定必须基于磁盘以及大量的网络传输。
所以Spark的速度可以比MapReduce、Hive(底层也是基于MapReduce来执行Sql语句)快出至少数倍。
Hive的架构
一部分是Hadoop的HDFS,表、分区,其实是HDFS上的目录和文件,还有一部分类似于数据仓库,对数据进行导入导出,还有一部分是查询引擎(执行Sql语句),analyser,需要生成SQL语句的执行计划,Optimzer,对执行计划进行调优。
Spark SQL 可以通过Hive的数据仓库执行SQl语句,也可以直接针对HDFS文件执行SQL语句。更多的时候是对Hive数据仓库中的表进行查询,执行SQL语句。他替代的是Hive的查询引擎,而不是Hive的全部。
Storm:
计算框架,topology,拓扑,分布式的,在很多节点上。
Storm的计算模型;
它是针对每条记录的流式实时计算框架,他是一种非常纯粹的实时计算框架,但是由于每来一条数据都会处理,所以吞吐量不高。
Spark Streaming :Spark流式框架,分布式的 就是在一定的时间间隔内,会把数据都收集起来,作为一个batch,进行处理。
Spark Streaming的计算模型;
严格意义上来说,Spark Streaming不是纯粹的实时计算框架,更是一种准实时计算框架。他的吞吐量远远高于Storm。但是他在实时性上不如Storm。