1.spark
- spark是一个数据分析、计算引擎,本身不负责存储;
- 可以对接多种数据源,包括:结构化、半结构化、非结构化的数据;
- 其分析处理数据的方式有多种发,包括:sql、Java、Scala、python、R等;其中spark-sql用来对结构化数据分析处理,它将数据的计算任务通过SQL的形式转换成了RDD的计算。
2.hive
数据仓库,主要负责数据存储和管理,看作MapReduce计算引擎+HDFS分布式文件系统,直观理解就是Hive的SQL通过很多层解析成了MR程序,然后存储是放在了HDFS上,并且只能用SQL这种方式来处理结构化数据,因此spark和hive是互不依赖的。
3.spark和hive的结合
实际应用两者结合,有三种方式:hive on spark、spark on hive、spark+spark hive catalog,常见的是第一种,是因为hive底层现在支持三种计算计算引擎:mr\tez\spark。
4.Hive VS Spark
- Hive:数据存储和清洗,处理海量数据,比如一个月、一个季度、一年的数据量,依然可以处理,虽然很慢;
- Spark SQL:数据清洗和流式计算,上述情况下 Spark SQL 不支持,无法处理,因为其基于内存,量级过大承受不住,并且性价比不如hive高;
- 结合来说,hive的强项在于:1、大数据存储,2、通过sql方式进行MapReduce操作,降低大数据使用门槛。spark强项在于1、基于内存的MapReduce操作,速度快2、流式计算(对标产品flink,storm)。运用上大多两者集合,hive负责廉价的数据仓库存储,spark-sql负责告诉计算,并结合DataFrame进行复杂的数据挖掘(包括机器学习、图计算等复杂算法)。
5.Spark on hive VS Spark-sql
- 在同时安装了Hive和spark时,我使用hive下的beeline执行HQL,执行引擎是MapReduce;使用spark下的spark-beeline执行HQL,执行引擎是spark;后者执行速度会更快;
- Hive On Spark大体与Spark SQL结构类似,只是SQL引擎不同,但是计算引擎都是Spark。
6.Hive VS Hbase
- Hive中的表是纯逻辑表,就只是表的定义等,即表的元数据;其本身不存储数据,它完全依赖HDFS和MapReduce。将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。
- 而HBase表是Hadoop database的简称,是一种NoSql数据库,适合存放非结构化的数据,是物理表,适用于海量明细数据的随机实时查询
- 在大数据架构中,Hive和HBase是协作关系,流程如下:
- 通过ETL工具将数据源抽取到HDFS存储;
- 通过Hive清洗、处理和计算原始数据;
- HIve清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase
- 数据应用从HBase查询数据;
参考引用说明:
(17 封私信 / 80 条消息) 请问spark和hive是什么关系? - 知乎 (zhihu.com)
(17 封私信 / 80 条消息) HBase 和 Hive 的差别是什么,各自适用在什么场景中? - 知乎 (zhihu.com)
|