大数据计算引擎的发展
HDFS 是大数据常用分布式存储,
Hive 提供 HiveQL,不存储业务数据,数据存放于 HDFS
第一代计算引擎:MapReduce:用廉价机器实现分布式大数据处理
第二代计算引擎:Tez:基于MR优化了DAG,性能比MR快一些
第三代计算引擎:Spark:优先使用内存式计算引擎 ,国内目前主要应用的离线计算引擎
第四代计算引擎:Flink:实时流式计算引擎 , 国内目前最主流实时计算引擎
计算引擎:你的车的发动机 、计算机中的 CPU
Spark简介 火花
定义:基于内存式计算的 分布式 的统一化的数据分析引擎。
发展历程
2009年,Spark诞生于伯克利AMPLab,伯克利大学的研究性项目。
2014年2月成为Apache顶级项目,同年5月发布Spark 1.0正式版本
2018年Spark2.4.0发布,成为全球最大的开源项目,目前是Apache中的顶级项目之一。
2020年6月Spark发布3.0.0正式版,目前学习的就是3.x
DataBricks官网:https://databricks.com/spark/about
spark的诞生其实是因为MR计算引擎太慢了。
MR计算是基于磁盘的,Spark计算是基于内存的。
Spark能做什么
实现离线数据批处理:类似MapReduce、Pandas,写代码做处理:代码类的离线数据处理
实现交互式即时数据查询:类似于Hive、Presto、Impala,使 用SQL做即席查询分析:SQL类的离线数据处理
实现实时数据处理:类似于Storm、Flink实现分布式的实时计算:代码类实时计算或者SQL类的实时计算
实现机器学习的开发:代替传统一些机器学习工具
spark有哪些部分组成?
Hadoop的组成部分:common、MapReduce、Hdfs、Yarn
Spark Core:Spark最核心的模块,可以基于多种语言实现代码类的离线开发 【类似于MR】
Spark SQL:类似于Hive,基于SQL进行开发,SQL会转换为SparkCore离线程序 【类似Hive】
Struct Streaming:基于SparkSQL之上构建了结构化实时计算模块
Spark ML lib:机器学习算法库,提供各种机器学习算法工具,可以基于SparkCore或者SparkSQL实现开发。

开发语言 :Python、SQL、Scala、Java、R【Spark的源码是通过Scala语言开发的】
Scala 语言是基于java实现的,底层也需要虚拟机。
各大计算引擎的对比
Impala:集成Hive实现数据分析,优点是性能最好,缺点数据接口比较少,只支持Hive和Hbase数据源 。 是一个基于CDH的一个软件,Impala 能写sql,它写出来的sql,叫 Impala SQL (大部分跟我们普通的sql没啥区别) ,操作hive或者hbase 速度非常快!
Presto :集成Hive实现数据分析,优点性能适中,支持数据源非常广泛,与大数据接口兼容性比较差 。Presto也可以写sql,只是写的sql叫做 Presto SQL (大部分跟我们普通的sql没啥区别) ,特点:可以跨数据源。比如mysql的表可以和oracle中的一个表关联查询。
SparkSQL :集成Hive实现数据分析,优点功能非常全面、开发接口多,学习成本低,缺点实时计算不够完善。实时计算交给了Flink。
简单粗暴的理解:Impala和Presto 都可以进行大数据分析,但是数据量达到一定级别,就不太行,还得是SparkSQL。
Spark 为什么要 on Hive?
Hive 的优势是:可以存储数据 (创建一个表,把数据存储到表中)
Spark 的优势: 基于内存的计算引擎,sql 速度特别快
Spark On Hive !