大概说一些这三个框架各自是什么,解决了什么问题。
Hadoop
Hadoop是一个开源框架,允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。它的设计是从单个服务器扩展到数千个机器,每个都提供本地计算和存储。
hadoop的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
狭义上的Hadoop是指框架本身;hadoop生态系统,不仅包含hadoop,还包括保证hadoop框架正常高效运行其他框架,比如zookeeper、Flume、Hbase、Hive、Sqoop等辅助框架。
hadoop的核心:
1.HDFS: Hadoop Distributed File System 分布式文件系统
2.YARN: Yet Another Resource Negotiator 资源管理调度系统
3.Mapreduce:分布式运算框架
Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端。
Hive 与 Hadoop 的关系
Hive利用HDFS存储数据,利用MapReduce查询分析数据。
使用Hive的优点
- 采用类SQL语法去操作数据,提供快速开发的能力。
- 避免了去写MapReduce,减少开发人员的学习成本。
- 功能扩展很方便。
Spark
Apache Spark 是一个快速的, 多用途的集群计算系统, 相对于 Hadoop MapReduce 将中间结果保存在磁盘中, Spark 使用了内存保存中间结果, 能在数据尚未写入硬盘时在内存中进行运算.
Spark 只是一个计算框架, 不像 Hadoop 一样包含了分布式文件系统和完备的调度系统, 如果要使用 Spark, 需要搭载其它的文件系统和更成熟的调度系统
Spark是一个并行计算框架,是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。
MR的问题:
- 计算过程比较缓慢,不适应交互式计算,不适应迭代计算
- 不是所有的计算都由Map和Reduce两个阶段来构成的
Spark解决问题
- 内存存储中间结果
- 提供更好的API,函数式