这是显而易见的,我们都会同意我们可以HDFS + YARN + MapReduce
称为Hadoop。但是,Hadoop生态系统中不同的其他组合和其他产品会发生什么?
例如,HDFS + YARN + Spark
仍然是Hadoop吗?HBASE
是Hadoop吗?我想我们考虑HDFS + YARN + Pig
Hadoop,因为Pig使用MapReduce。
只有MapReduce工具被认为是Hadoop,但是在HDFS + YARN
上运行的其他东西(如Spark)是非Hadoop的吗?
我同意你的印象,即"Hadoop"术语没有有用的定义。"我们有一个Hadoop集群"可能意味着各种事情。
不过在 http://hadoop.apache.org/#What+Is+Apache+Hadoop%3F 有一个官方答案:
Apache™ Hadoop®项目为以下方面开发开源软件 可靠、可扩展的分布式计算。
Apache Hadoop软件库是一个框架,它允许 跨计算机集群对大型数据集进行分布式处理 使用简单的编程模型。
所以"Hadoop"是一个项目和软件库的名称。任何其他用法都定义不明确。
除了官网的Apache Hadoop定义之外,我想强调的是,Hadoop是一个框架,Hadoop生态系统中有很多子系统
从官方网站引用此内容,以便将来断开的链接不会对此答案造成任何问题。
该项目包括以下模块:
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop 分布式文件系统 (HDFS™):提供对应用程序数据的高吞吐量访问的分布式文件系统。
Hadoop YARN:用于作业调度和集群资源管理的框架。
Hadoop MapReduce:一个基于YARN的系统,用于并行处理大型数据集。
或多或少
Hadoop = 分布式存储 (HDFS) + 分布式处理 ( YARN + Map Reduce)
但这四个模块并没有涵盖完整的Hadoop生态系统。Hadoop生态系统中有许多与Hadoop相关的项目和40+子系统。
Apache的其他Hadoop相关项目包括:
Ambari™:一个基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。
Avro™:一个数据序列化系统。
Cassandra™:一个可扩展的多主数据库,没有单点故障。
Chukwa™:用于管理大型分布式系统的数据收集系统。
HBase™:一个可扩展的分布式数据库,支持大型表的结构化数据存储。
Hive™:提供数据汇总和即席查询的数据仓库基础结构。
Mahout™:一个可扩展的机器学习和数据挖掘库。
Pig™:用于并行计算的高级数据流语言和执行框架。
Spark™:用于Hadoop数据的快速通用计算引擎。Spark 提供了一个简单而富有表现力的编程模型,支持广泛的应用程序,包括 ETL、机器学习、流处理和图形计算。
Tez™:一个通用的数据流编程框架,基于Hadoop YARN构建,它提供了一个强大而灵活的引擎来执行任意DAG任务,以处理批处理和交互式用例的数据。Tez正在被Hive,Pig™™和Hadoop生态系统中的其他框架以及其他商业软件(例如ETL工具)采用,以取代Hadoop™ MapReduce作为底层执行引擎。
ZooKeeper™:分布式应用程序的高性能协调服务。
回到你的问题:
只需看看Hadoop生态系统中的40+子系统。你引用的每一件事可能都不是Hadoop,但大多数都与Hadoop有关。
Spark是Hadoop生态系统的一部分。但它既不能使用HDFS也不能使用YARN。HDFS数据集可以用RDD(弹性分布式数据集)代替,并且可以在没有YARN的情况下以独立模式运行。
看看这篇文章和这篇文章的Hadoop和Spark比较。
通过HadoopSpark用例:
- 机器学习中的迭代算法
- 交互式数据挖掘和数据处理
- 流处理
- 传感器数据处理
由于Spark没有存储系统,它必须依赖于分布式存储之一,其中HDFS就是其中之一。
看看相关的SE问题:
Apache Spark可以在没有hadoop的情况下运行吗?
对Hadoop最普遍接受的理解:HDFS和Map/Reduce及其相关的过程和工具。
相关术语:Hadoop生态系统:Hive/Pig/Hbase,Zookeeper,Oozie。 还有供应商特定的,如黑斑羚,安巴里。
为什么我们需要大数据系统?
- 存储(存储大量数据) 处理
- (及时处理数据/请求) 扩展
- (随着数据的增长轻松扩展)
谷歌提供了一个大数据解决方案。
- 谷歌文件系统:解决分布式存储问题。
- Map Reduce:解决分布式计算问题。
谷歌发表了这些研究论文。Apache开发的开源系统类似于Google开发的开源系统,它被称为HADOOP。
- 与Hadoop中的Google文件系统类似的是HDFS(Hadoop分布式文件系统):用于管理数据存储的文件系统。
- MAP Reduce:跨多个服务器处理数据的框架。
注:2013年,Apache发布了HADOOP 2.0。(MapReduce分为两个部分:
- MapReduce:定义数据处理任务的框架。
- YARN:运行数据处理任务的框架。)
HADOOP生态系统
Hadoop并不容易理解,它仅限于核心开发人员。 所以使Hadoop的使用更容易。许多工具如雨后春笋般涌现,它们作为一个整体被称为Hadoop生态系统。
Hadoop生态系统包含以下工具:
-
蜂巢:
- 提供 Hadoop 的 SQL 接口。 对于
- 没有 JAVA 中没有接触 OOP 的人来说,通往 Hadoop 的桥梁。
-
HBASE:
- Hadoop之上的数据库管理系统。
- 与我们的应用程序集成,就像传统数据库一样。
-
猪:
- 数据操作语言。
- 将非结构化数据转换为结构化格式。
- 使用 Hive 等接口查询此结构化数据。
-
火花:
- 与Hadoop一起使用的分布式计算引擎。
- 用于快速处理数据集的交互式外壳。
- 有一堆内置库,用于机器学习流处理、图形处理等。
-
奥齐:
- 工具,用于安排所有Hadoop生态系统技术的工作流程。
水槽 /水槽:
- 在其他系统和Hadoop之间传输数据的工具。
Hadoop的概述到此结束。
>Hadoop不是像LAMP或MEAN这样的堆栈。Hadoop是框架和工具的集合,可以解决复杂的大数据问题。
它基本上是Apache基金会下的一个项目。各种子项目,如Mapreduce,Ambari,Sqoop,Spark,Zookeeper等,togethor制作,所谓的Hadoop生态系统。
来源 : https://www.datacloudschool.com/2020/01/introduction-what-is-hadoop.html