目录[-]
- [1.1. 1. Hadoop](#1.1. 1. Hadoop)
- [1.2. 2. Hive](#1.2. 2. Hive)
- [1.3. 3. Impala](#1.3. 3. Impala)
- [1.4. 4. Hbase](#1.4. 4. Hbase)
- [1.5. 5.hadoop hive impala hbase关系](#1.5. 5.hadoop hive impala hbase关系)
- [1.6. 6. Spark](#1.6. 6. Spark)
- [1.7. 7. Flink](#1.7. 7. Flink)
- [1.8. 8. Spark 和 Flink 的应用场景](#1.8. 8. Spark 和 Flink 的应用场景)
1. Hadoop
开源官网:https://hadoop.apache.org/
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
2. Hive
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析
3. Impala
开源官网:https://impala.apache.org/
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
4. Hbase
开源官网:https://hbase.apache.org/
HBase -- Hadoop Database是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统"。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
5.hadoop hive impala hbase关系
Hadoop生态系统中的三个重要组件Hive、Impala和HBase各自都有其特定的用途和设计优势,它们之间的主要区别如下:
-
Hive:Hive是一个构建在Hadoop上的数据仓库平台,它提供了类似SQL的查询语言(HQL)来分析存储在Hadoop上的数据。Hive用于静态数据分析,主要是用于批处理。
-
Impala:Impala是一个用于处理存储在Hadoop数据的实时、交互式查询引擎。它比Hive快得多,通过使用Impala,用户可以直接与数据进行交互,而不需要通过MapReduce任务。
-
HBase:HBase是一个分布式、可伸缩的、面向列的开源数据库,它以Google的Bigtable为原型。HBase用于实时、随机访问大规模数据集。它是一个非常适合实时应用程序的数据存储,因为它可以快速地提供随机访问内容。
总结区别:
- Hive主要用于数据仓库任务,支持批处理查询。
- Impala主要用于交互式SQL查询,支持实时分析。
- HBase主要用于实时随机访问大数据,适合存储结构化数据。
每个系统都有其自身的用途,可以根据应用场景选择合适的工具。
Hive的使用虽然和关系型数据库类似,但是其本质上是建立在Hadoop体系架构上的一层SQL抽象,自身不存储和处理数据,实际数据保存在HDFS文件中,真正的计算和执行则由MapReduce完成;Impala是Hive的补充,可以读取和写入 Hive 表,依赖Hive的元数据,自身不存储数据。Impala提供的有一个分布式查询引擎;HBase是列存储的NoSQL数据库,主要提供接口的形式与外界交互,数据保存在HDFS上,也支持使用Hive直接访问HBase;HDFS是Hadoop生态最底层的存储,Hive、Impala、HBase都建立在HDFS之上
6. Spark
开源网址:https://spark.apache.org/
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是------Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
7. Flink
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行
8. Spark 和 Flink 的应用场景
Spark 适合于吞吐量比较大的场景,数据量非常大而且逻辑复杂的批数据处理,并且对计算效率有较高要求(比如用大数据分析来构建推荐系统进行个性化推荐、广告定点投放等)。其次,Spark是批处理架构,适合基于历史数据的批处理。最好是具有大量迭代计算场景的批处理。Spark可以支持近实时的流处理,延迟性要求在在数百毫秒到数秒之间。Spark的生态更健全,SQL操作也更加健全,已经存在Spark生态的可以直接使用。Flink 主要用来处理要求低延时的任务,实时监控、实时报表、流数据分析和实时仓库。Flink可以用于事件驱动型应用,数据管道,数据流分析等。总的来说,spark离线计算,Flink实时计算。