hadoop
Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机集群的大型数据集的分布式处理。它被设计成从单个服务器扩展到数千台机器,每个机器提供本地计算和存储。
- 数据文件被分成多个块存储在各个计算机上,提供冗余备份机制。这就是HDFS分布式文件存储系统。
- hadoop集群上的每台计算机都有自己的cpu,充分利用这些cpu进行并行计算。这就是mapreduce。
Hive
基于hadoop的数据仓库工作,可以将结构性的数据映射成一张数据库表,提供HiveQL语句(类sql),并将其转化为mapreduce任务运行在hadoop上。
本质就是MapReduce,简化了MapReduce任务的开发,让使用sql语言的人可以很快的进行大数据的开发。
应用场景:基于Hadoop做一些数据清洗(ETL)、报表、数据分析……
缺点:天天插入、更新、删除数据,还要求强一致性和毫秒级相应,这个不仅不是Hive的长处,当前的Hadoop框架就不适合这玩意儿。
Spark
基于内存计算的大数据并行计算框架,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
思想与MapReduce相同,但是是基于内存计算,速度更快。
Spark以两种方式使用Hadoop,一个是存储,另一个是处理。由于Spark具有自己的集群管理计算,因此它仅使用Hadoop进行存储。Hadoop只是实现Spark的方法之一。
Spark SQL
Spark为结构化数据处理引入了一个称为Spark SQL的编程模块。它提供了一个称为DataFrame的编程抽象,并且可以充当分布式SQL查询引擎。
Spark SQL无缝地将SQL查询与Spark程序混合。 Spark SQL允许将结构化数据作为Spark中的分布式数据集(RDD)进行查询,在Python,Scala和Java中集成了API。这种紧密的集成使得可以轻松地运行SQL查询以及复杂的分析算法。